From 906f0376d22b48d78e449363e321c7ba1e516063 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Kr=C4=8Dek?= Date: Wed, 25 Jun 2025 14:16:45 +0200 Subject: [PATCH] Event overview panel --- src/routes/+page.svelte | 4 +- src/routes/private/events/+page.server.ts | 8 ++ src/routes/private/events/+page.svelte | 25 +++++ .../private/events/event/+page.server.ts | 13 +++ src/routes/private/events/event/+page.svelte | 95 +++++++++++++++++++ src/routes/private/scanner/+page.svelte | 2 +- 6 files changed, 145 insertions(+), 2 deletions(-) create mode 100644 src/routes/private/events/+page.server.ts create mode 100644 src/routes/private/events/+page.svelte create mode 100644 src/routes/private/events/event/+page.server.ts create mode 100644 src/routes/private/events/event/+page.svelte diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 3d640c9..9562823 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -6,6 +6,8 @@

ESN Scanner App

Make entrance to your events a breeze.

- Get started + + Get started +
diff --git a/src/routes/private/events/+page.server.ts b/src/routes/private/events/+page.server.ts new file mode 100644 index 0000000..7e450e7 --- /dev/null +++ b/src/routes/private/events/+page.server.ts @@ -0,0 +1,8 @@ +export async function load({ locals }) { + const { data: events, error } = await locals.supabase + .from('events') + .select('*') + .order('date', { ascending: false }); + console.log('events', events); + return { events }; +} \ No newline at end of file diff --git a/src/routes/private/events/+page.svelte b/src/routes/private/events/+page.svelte new file mode 100644 index 0000000..1664850 --- /dev/null +++ b/src/routes/private/events/+page.svelte @@ -0,0 +1,25 @@ + + +

All Events

+
+ {#each data.events as event} + +
+ {event.name} + {event.date} +
+
+ {/each} +
+ + + New Event + \ No newline at end of file diff --git a/src/routes/private/events/event/+page.server.ts b/src/routes/private/events/event/+page.server.ts new file mode 100644 index 0000000..d63e5a4 --- /dev/null +++ b/src/routes/private/events/event/+page.server.ts @@ -0,0 +1,13 @@ +export async function load({ locals, url }) { + const event_id = url.searchParams.get('id'); + const { data: event_data, error: eventError } = await locals.supabase + .from('events') + .select('*') + .eq('id', event_id) + .single() + const { data: participants, error: participantsError } = await locals.supabase + .from('participants') + .select('*, scanned_by:profiles (id, display_name)') + .eq('event', event_id) + return {event_data, participants}; +} \ No newline at end of file diff --git a/src/routes/private/events/event/+page.svelte b/src/routes/private/events/event/+page.svelte new file mode 100644 index 0000000..c94c16a --- /dev/null +++ b/src/routes/private/events/event/+page.svelte @@ -0,0 +1,95 @@ + + +

Event Overview

+ +
+
+ {data.event_data.name} + {data.event_data.date} +
+
+ +
+
+ + + + Scanned ({scannedCount}) +
+
+
+ + + + + + Not scanned ({notScannedCount}) +
+
+ +
+

Participants ({data.participants.length})

+ +
diff --git a/src/routes/private/scanner/+page.svelte b/src/routes/private/scanner/+page.svelte index 53c3e42..10b236d 100644 --- a/src/routes/private/scanner/+page.svelte +++ b/src/routes/private/scanner/+page.svelte @@ -15,7 +15,7 @@ scan_state = ScanState.scanning; data.supabase - .from('qrcodes') + .from('participants') .select(`*, event ( id, name ), scanned_by ( id, display_name )`) .eq('id', scanned_id) .then( response => {