aboutsummaryrefslogtreecommitdiffstats
path: root/web/pages/tracks
diff options
context:
space:
mode:
authorLeonardo Bishop <me@leonardobishop.com>2025-08-23 22:29:28 +0100
committerLeonardo Bishop <me@leonardobishop.com>2025-08-23 22:29:28 +0100
commitecc6a55aba7bb35fc778e7a53848396b88214151 (patch)
tree1b37a2dc5f4594155114da1ae0c4529d20a4c548 /web/pages/tracks
parent8f7dec8ba6b2f9bde01afd0a110596ebbd43e0ed (diff)
Add multiple conferences feature
Diffstat (limited to 'web/pages/tracks')
-rw-r--r--web/pages/tracks/[slug].vue9
-rw-r--r--web/pages/tracks/index.vue12
2 files changed, 19 insertions, 2 deletions
diff --git a/web/pages/tracks/[slug].vue b/web/pages/tracks/[slug].vue
index 27fb97d..9e1881d 100644
--- a/web/pages/tracks/[slug].vue
+++ b/web/pages/tracks/[slug].vue
@@ -2,6 +2,10 @@
import { TrainTrack } from 'lucide-vue-next';
import { useScheduleStore } from '~/stores/schedule';
+definePageMeta({
+ middleware: ['logged-in', 'conference-selected']
+})
+
const route = useRoute();
const scheduleStore = useScheduleStore();
@@ -9,6 +13,11 @@ const track = scheduleStore.schedule?.tracks.find((track) => track.slug === rout
</script>
<template>
+ <div v-if="scheduleStore.status === 'pending'" class="loading">
+ <span class="loading-text">
+ <Spinner color="var(--color-text-muted)" />Updating schedule...
+ </span>
+ </div>
<Panel v-if="track" :title="track.name" :breadcrumbs="[{ text: 'Tracks', to: '/tracks' }]" :icon="TrainTrack">
<ul class="events-list">
<li
diff --git a/web/pages/tracks/index.vue b/web/pages/tracks/index.vue
index 8d7534e..c3ec883 100644
--- a/web/pages/tracks/index.vue
+++ b/web/pages/tracks/index.vue
@@ -2,14 +2,22 @@
import { TrainTrack } from 'lucide-vue-next';
import Panel from '~/components/Panel.vue';
+definePageMeta({
+ middleware: ['logged-in', 'conference-selected']
+})
const scheduleStore = useScheduleStore();
</script>
<template>
- <Panel v-if="scheduleStore.schedule" title="Tracks" :icon="TrainTrack">
+ <div v-if="scheduleStore.status === 'pending'" class="loading">
+ <span class="loading-text">
+ <Spinner color="var(--color-text-muted)" />Updating schedule...
+ </span>
+ </div>
+ <Panel v-else title="Tracks" :icon="TrainTrack">
<ul class="tracks-list">
<li
- v-for="track in scheduleStore.schedule.tracks"
+ v-for="track in scheduleStore.schedule?.tracks"
:key="track.name"
class="tracks-item"
>