diff --git a/src/routes/events/[event_id]/(badges)/badges/+page.svelte b/src/routes/events/[event_id]/(badges)/badges/+page.svelte index 972a0ce9..c23c9da5 100644 --- a/src/routes/events/[event_id]/(badges)/badges/+page.svelte +++ b/src/routes/events/[event_id]/(badges)/badges/+page.svelte @@ -19,11 +19,11 @@ import { ae_loc, ae_api } from '$lib/stores/ae_stores'; import { db_events } from '$lib/ae_events/db_events'; import { - events_loc, events_sess, events_slct, events_trigger } from '$lib/stores/ae_events_stores'; +import { badges_loc } from '$lib/stores/ae_events_stores__badges.svelte'; import { events_func } from '$lib/ae_events/ae_events_functions'; import Comp_badge_search from './ae_comp__badge_search.svelte'; @@ -54,24 +54,8 @@ let lq__badge_template_li = $derived( .sortBy('name'); }) ); -// *** Initialization & Store Guard *** -// Ensure all search fields are initialized to prevent circular undefined triggers -if ($events_loc.badges) { - if (typeof $events_loc.badges.search_version === 'undefined') - $events_loc.badges.search_version = 0; - if (typeof $events_loc.badges.qry__remote_first === 'undefined') - $events_loc.badges.qry__remote_first = false; - if (typeof $events_loc.badges.fulltext_search_qry_str === 'undefined') - $events_loc.badges.fulltext_search_qry_str = ''; - if (typeof $events_loc.badges.search_badge_type_code === 'undefined') - $events_loc.badges.search_badge_type_code = ''; - if (typeof $events_loc.badges.qry_printed_status === 'undefined') - $events_loc.badges.qry_printed_status = 'all'; - if (typeof $events_loc.badges.qry_affiliations === 'undefined') - $events_loc.badges.qry_affiliations = ''; - if (typeof $events_loc.badges.qry_sort_order === 'undefined') - $events_loc.badges.qry_sort_order = ''; -} +// badges_loc (PersistedState) is always initialized from badges_loc_defaults — +// no manual typeof guards needed. All fields are guaranteed to exist. // Variables let show_create_badge_modal: boolean = $state(false); @@ -113,10 +97,10 @@ let lq__event_badge_obj_li = $derived.by(() => { // SCENARIO 2: Fallback broad search (Only if no active filters) if ( event_id && - !$events_loc.badges.fulltext_search_qry_str && - $events_loc.badges.qry_printed_status === 'all' && - !$events_loc.badges.qry_affiliations && - !$events_loc.badges.search_badge_type_code + !badges_loc.current.fulltext_search_qry_str && + badges_loc.current.qry_printed_status === 'all' && + !badges_loc.current.qry_affiliations && + !badges_loc.current.search_badge_type_code ) { if (log_lvl) console.log( @@ -136,16 +120,18 @@ let lq__event_badge_obj_li = $derived.by(() => { // Standardized Reactive Search Pattern (Aether UI V3) // 1. Isolate dependencies into a stable derived object let search_params = $derived({ - v: $events_loc.badges.search_version, - str: ($events_loc.badges.fulltext_search_qry_str ?? '') + v: badges_loc.current.search_version, + str: (badges_loc.current.fulltext_search_qry_str ?? '') .toLowerCase() .trim(), - type: $events_loc.badges.search_badge_type_code, - printed: $events_loc.badges.qry_printed_status, - aff: ($events_loc.badges.qry_affiliations ?? '').toLowerCase().trim(), - sort: $events_loc.badges.qry_sort_order, + type: badges_loc.current.search_badge_type_code, + printed: badges_loc.current.qry_printed_status, + aff: (badges_loc.current.qry_affiliations ?? '').toLowerCase().trim(), + sort: badges_loc.current.qry_sort_order, event_id: $events_slct?.event_id, - remote_first: $events_loc.badges.qry__remote_first + remote_first: badges_loc.current.qry__remote_first, + // Event-level override: when true, restrict searches to badge IDs only + badge_id_only: $lq__event_obj?.mod_badges_json?.badge_id_only_search ?? false }); // 2. Controlled effect for triggering searches @@ -208,7 +194,10 @@ async function handle_search_refresh(params: any) { return false; } - if (qry_str) { + if (params.badge_id_only && qry_str) { + const id = (badge.event_badge_id ?? '').toLowerCase(); + if (!id.includes(qry_str)) return false; + } else if (qry_str) { const given_name = ( badge.given_name ?? '' ).toLowerCase(); @@ -387,7 +376,7 @@ async function handle_search_refresh(params: any) { -{#if $ae_loc.edit_mode} +{#if $ae_loc.edit_mode && ($lq__event_obj?.mod_badges_json?.enable_add_badge_btn ?? true)}
+ {#if $lq__event_obj?.mod_badges_json?.enable_search_qr ?? true} + + {/if} {:else} + {/if} + {#if event_obj?.mod_badges_json?.enable_upload_badge_li_btn ?? true} + {/if}
+ {/if} + {#if event_obj?.mod_badges_json?.enable_mass_print ?? true}

Mass Print Options

@@ -165,6 +172,7 @@ async function handle_save(field_name: string, data: any) {
+ {/if}