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) {