diff --git a/src/routes/events/[event_id]/(badges)/badges/reports/+page.svelte b/src/routes/events/[event_id]/(badges)/badges/reports/+page.svelte index 66eb8671..238056fd 100644 --- a/src/routes/events/[event_id]/(badges)/badges/reports/+page.svelte +++ b/src/routes/events/[event_id]/(badges)/badges/reports/+page.svelte @@ -9,10 +9,9 @@ let { data, log_lvl = 0 }: Props = $props(); import { liveQuery } from 'dexie'; import { page } from '$app/state'; -import { ae_loc, ae_api } from '$lib/stores/ae_stores'; +import { ae_loc } from '$lib/stores/ae_stores'; import { db_events } from '$lib/ae_events/db_events'; import { events_loc } from '$lib/stores/ae_events_stores'; -import { events_func } from '$lib/ae_events/ae_events_functions'; import { ArrowLeft, TrendingUp, Type, Gauge, LoaderCircle } from '@lucide/svelte'; import Reports_badge_long_names from './reports_badge_long_names.svelte'; @@ -20,20 +19,6 @@ import Reports_badge_print_throughput from './reports_badge_print_throughput.sve let event_id = $derived(page.params.event_id); -// Reports read from IDB, so we need to ensure IDB is populated even when -// arriving directly (without having visited the badge search page first). -// Fire a background refresh — liveQuery below will reactively pick up new data. -$effect(() => { - const eid = event_id; - if (!eid || !$ae_api?.base_url) return; - // try_cache defaults to true — results are written to IDB so liveQuery picks them up. - events_func.search__event_badge({ - api_cfg: $ae_api, - event_id: eid, - limit: 5000 - }); -}); - type ReportKey = 'long_names' | 'print_throughput'; let active_report: ReportKey | null = $state(null); diff --git a/src/routes/events/[event_id]/(badges)/badges/reports/+page.ts b/src/routes/events/[event_id]/(badges)/badges/reports/+page.ts new file mode 100644 index 00000000..2179c27a --- /dev/null +++ b/src/routes/events/[event_id]/(badges)/badges/reports/+page.ts @@ -0,0 +1,18 @@ +import { browser } from '$app/environment'; +import { events_func } from '$lib/ae_events/ae_events_functions'; + +export async function load({ params, parent }) { + const data = await parent(); + const event_id = params.event_id; + + if (browser && event_id && data.ae_api?.base_url) { + // Fire and forget — writes to IDB so the liveQuery in +page.svelte reacts. + events_func.search__event_badge({ + api_cfg: data.ae_api, + event_id, + limit: 5000 + }); + } + + return data; +}