diff --git a/src/lib/ae_events/ae_events__event_badge.ts b/src/lib/ae_events/ae_events__event_badge.ts
index 9a4ea9c2..6929604a 100644
--- a/src/lib/ae_events/ae_events__event_badge.ts
+++ b/src/lib/ae_events/ae_events__event_badge.ts
@@ -466,7 +466,7 @@ export async function search__event_badge({
log_lvl?: number;
}) {
if (log_lvl) {
- console.log(`*** search__event_badge() *** event_id=${event_id} printed_status=${printed_status} affiliations=${affiliations_qry_str}`);
+ console.log(`*** search__event_badge() *** event_id=${event_id} printed_status=${printed_status} affiliations=${affiliations_qry_str} order_by_li=`, order_by_li);
}
if (!fulltext_search_qry_str && !like_search_qry_str && !affiliations_qry_str && !type_code && !external_event_id && printed_status === 'all') {
@@ -633,6 +633,8 @@ export const properties_to_save = [
'updated_on',
'print_count',
+ 'print_first_datetime',
+ 'print_last_datetime',
// Generated fields for sorting locally only
'tmp_sort_1',
diff --git a/src/routes/events/[event_id]/(badges)/badges/ae_comp__badge_obj_li.svelte b/src/routes/events/[event_id]/(badges)/badges/ae_comp__badge_obj_li.svelte
index 2195fbcc..b56c1983 100644
--- a/src/routes/events/[event_id]/(badges)/badges/ae_comp__badge_obj_li.svelte
+++ b/src/routes/events/[event_id]/(badges)/badges/ae_comp__badge_obj_li.svelte
@@ -24,6 +24,7 @@
import { liveQuery } from 'dexie';
import { db_events, type Badge } from '$lib/ae_events/db_events';
import { ae_loc } from '$lib/stores/ae_stores';
+ import { ae_util } from '$lib/ae_utils/ae_utils';
// let trusted_access = $derived(ae_loc.trusted_access); // This does NOT work with Svelte v5
// let trusted_access = $ae_loc?.trusted_access; // This works with Svelte v5
@@ -31,7 +32,16 @@
liveQuery(async () => {
if (badge_obj_li?.length) {
const ids = badge_obj_li.map((b) => b.event_badge_id_random);
- return await db_events.badge.bulkGet(ids);
+ const db_results = await db_events.badge.bulkGet(ids);
+
+ // Create a map for quick lookup by ID to restore order
+ // bulkGet does not guarantee order, so we must re-sort based on the input list
+ const db_results_map = new Map(
+ db_results.filter(Boolean).map((item) => [item.event_badge_id_random, item])
+ );
+
+ // Return items in the exact order of the original 'ids' array
+ return ids.map((id) => db_results_map.get(id)).filter(Boolean);
}
return [];
})
@@ -51,114 +61,157 @@
-
+
{#each $lq__event_badge_obj_li.filter(Boolean) as event_badge_obj: Badge (event_badge_obj?.event_badge_id)}
{#if !event_badge_obj?.hide || $ae_loc.trusted_access}
-
- {#if event_badge_obj?.print_count < 1 || $ae_loc.trusted_access}
-
-
- {#if event_badge_obj?.hide}
-
- {:else}
-
- {/if}
- {#if event_badge_obj?.print_count >= 1}
-
-
+
+ {#if event_badge_obj?.print_count < 1 || $ae_loc.trusted_access}
+
+
+ {#if event_badge_obj?.hide}
+
+ {:else}
+
+ {/if}
+ {#if event_badge_obj?.print_count >= 1}
+
+
- {event_badge_obj?.print_count}×
+ {event_badge_obj?.print_count}×
+ {/if}
+
+
+
+ {#if event_badge_obj?.full_name_override}
+ {event_badge_obj?.full_name_override}
+ {:else if event_badge_obj?.full_name}
+ {event_badge_obj?.full_name}
+ {:else if event_badge_obj?.given_name}
+ {event_badge_obj?.given_name} {event_badge_obj?.family_name}
+ {:else}
+ -- no name --
+ {/if}
+
+
+ {:else}
+
+
+ {#if event_badge_obj?.hide}
+
+ {:else}
+
+ {/if}
+ {#if event_badge_obj?.print_count >= 1}
+
+
+
+ {event_badge_obj?.print_count}×
+ {/if}
+
+
+
+ {#if event_badge_obj?.full_name_override}
+ {event_badge_obj?.full_name_override}
+ {:else if event_badge_obj?.full_name}
+ {event_badge_obj?.full_name}
+ {:else if event_badge_obj?.given_name}
+ {event_badge_obj?.given_name} {event_badge_obj?.family_name}
+ {:else}
+ -- no name --
+ {/if}
+
+
+ {/if}
+
+ {#if show_sensitive_fields}
+
|
+
+
+ {#if $ae_loc.trusted_access}
+ {event_badge_obj?.email}
+ {:else}
+ {event_badge_obj?.email
+ ? event_badge_obj?.email.replace(/^(.{3}).*@/, '$1...@')
+ : ''}
{/if}
-
-
- {#if event_badge_obj?.full_name_override}
- {event_badge_obj?.full_name_override}
- {:else if event_badge_obj?.full_name}
- {event_badge_obj?.full_name}
- {:else if event_badge_obj?.given_name}
- {event_badge_obj?.given_name} {event_badge_obj?.family_name}
- {:else}
- -- no name --
- {/if}
+ {/if}
+ {#if !hide_affiliations}
+ |
+
+ {event_badge_obj?.affiliations ?? '-- no affiliations --'}
-
- {:else}
-
-
- {#if event_badge_obj?.hide}
-
- {:else}
-
- {/if}
- {#if event_badge_obj?.print_count >= 1}
-
-
-
- {event_badge_obj?.print_count}×
- {/if}
+ {/if}
+ {#if !hide_location}
+ |
+
+ {event_badge_obj?.location ?? '-- no location --'}
+ {/if}
+ {#if !hide_badge_type}
+ |
+ {event_badge_obj?.badge_type}
+ {/if}
-
- {#if event_badge_obj?.full_name_override}
- {event_badge_obj?.full_name_override}
- {:else if event_badge_obj?.full_name}
- {event_badge_obj?.full_name}
- {:else if event_badge_obj?.given_name}
- {event_badge_obj?.given_name} {event_badge_obj?.family_name}
- {:else}
- -- no name --
- {/if}
-
-
- {/if}
-
- {#if show_sensitive_fields}
- -
-
-
- {#if $ae_loc.trusted_access}
- {event_badge_obj?.email}
- {:else}
- {event_badge_obj?.email
- ? event_badge_obj?.email.replace(/^(.{3}).*@/, '$1...@')
- : ''}
- {/if}
-
- {/if}
- {#if !hide_affiliations}
- -
- {event_badge_obj?.affiliations ?? '-- no affiliations --'}
- {/if}
- {#if !hide_location}
- -
- {event_badge_obj?.location ?? '-- no location --'}
- {/if}
- {#if !hide_badge_type}
- -
- {event_badge_obj?.badge_type}
- {/if}
+ {#if $ae_loc.edit_mode}
+
+
+ ID: {event_badge_obj?.event_badge_id}
+
+
+ CR: {event_badge_obj?.created_on
+ ? new Date(event_badge_obj.created_on).toLocaleString()
+ : '--'}
+
+
+ UP: {event_badge_obj?.updated_on
+ ? new Date(event_badge_obj.updated_on).toLocaleString()
+ : '--'}
+
+
+ FP: {event_badge_obj?.print_first_datetime
+ ? new Date(
+ event_badge_obj.print_first_datetime
+ ).toLocaleString()
+ : '--'}
+
+
+ LP: {event_badge_obj?.print_last_datetime
+ ? new Date(
+ event_badge_obj.print_last_datetime
+ ).toLocaleString()
+ : '--'}
+
+
+ CNT: {event_badge_obj?.print_count ?? 0}
+
+
+ {/if}
+
{#if $ae_loc.trusted_access}
ReviewReview
{/if}
diff --git a/src/routes/events/[event_id]/(badges)/badges/ae_comp__badge_search.svelte b/src/routes/events/[event_id]/(badges)/badges/ae_comp__badge_search.svelte
index f498bfcb..930313ba 100644
--- a/src/routes/events/[event_id]/(badges)/badges/ae_comp__badge_search.svelte
+++ b/src/routes/events/[event_id]/(badges)/badges/ae_comp__badge_search.svelte
@@ -122,28 +122,40 @@
{ code: 'test', name: 'Test' }
];
- let computed_order_by_li = $derived(() => {
- switch (qry_sort_order) {
- case 'name_asc':
- return { given_name: 'ASC', family_name: 'ASC' };
- case 'name_desc':
- return { given_name: 'DESC', family_name: 'DESC' };
- case 'updated_desc':
- return { updated_on: 'DESC' };
- case 'updated_asc':
- return { updated_on: 'ASC' };
- default:
- return {
- // print_count: 'ASC',
- // priority: 'DESC',
- // sort: 'DESC',
- given_name: 'ASC',
- family_name: 'ASC',
- updated_on: 'DESC',
- created_on: 'DESC'
- };
- }
- });
+ let computed_order_by_li = $derived(
+ (() => {
+ switch (qry_sort_order) {
+ case 'name_asc':
+ return { given_name: 'ASC', family_name: 'ASC' };
+ case 'name_desc':
+ return { given_name: 'DESC', family_name: 'DESC' };
+ case 'updated_desc':
+ return { updated_on: 'DESC' };
+ case 'updated_asc':
+ return { updated_on: 'ASC' };
+ case 'print_count_desc':
+ return { print_count: 'DESC' };
+ case 'print_first_desc':
+ return { print_first_datetime: 'DESC' };
+ case 'print_last_desc':
+ return { print_last_datetime: 'DESC' };
+ case 'badge_type_asc':
+ return { badge_type: 'ASC' };
+ case 'affiliations_asc':
+ return { affiliations: 'ASC' };
+ default:
+ return {
+ // print_count: 'ASC',
+ // priority: 'DESC',
+ // sort: 'DESC',
+ given_name: 'ASC',
+ family_name: 'ASC',
+ updated_on: 'DESC',
+ created_on: 'DESC'
+ };
+ }
+ })()
+ );
// *** Functions and Logic
function preventDefault(fn: (event: T) => void) {
@@ -166,7 +178,8 @@
if (log_lvl) {
console.log(
- `Triggered: event_badge_qry: ft search qry str:=${$events_loc.badges.fulltext_search_qry_str}`
+ `Triggered: event_badge_qry: ft search qry str:=${$events_loc.badges.fulltext_search_qry_str} sort order:=`,
+ computed_order_by_li
);
}
@@ -441,7 +454,7 @@
{/if}
- {#if $ae_loc.trusted_access}
+ {#if $ae_loc.trusted_access}
{/if}
+ {#if $ae_loc.trusted_access}
+
+ {/if}
+
{#if $ae_loc.trusted_access}