diff --git a/src/routes/events/[event_id]/(badges)/badges/+page.svelte b/src/routes/events/[event_id]/(badges)/badges/+page.svelte index b8672240..4c9b40c6 100644 --- a/src/routes/events/[event_id]/(badges)/badges/+page.svelte +++ b/src/routes/events/[event_id]/(badges)/badges/+page.svelte @@ -139,11 +139,17 @@ let lq__event_badge_obj_li = $derived.by(() => { console.log( `Badge Page LQ: Fallback search for event: ${event_id}` ); - return await db_events.badge + // Dexie sortBy supports only one field; sort by print_count then name in JS. + const fallback_results = await db_events.badge .where('event_id') .equals(event_id) .limit(fallback_limit) - .sortBy('given_name'); + .toArray(); + fallback_results.sort((a, b) => + (a.print_count ?? 0) - (b.print_count ?? 0) || + (a.given_name ?? '').localeCompare(b.given_name ?? '') + ); + return fallback_results; } return []; @@ -366,8 +372,10 @@ async function handle_search_refresh(params: any) { ) ); default: - return (a.given_name ?? '').localeCompare( - b.given_name ?? '' + // Matches the API default: unprinted first, then alphabetical. + return ( + (a.print_count ?? 0) - (b.print_count ?? 0) || + (a.given_name ?? '').localeCompare(b.given_name ?? '') ); } });