diff --git a/src/lib/ae_events/ae_events__event_badge.ts b/src/lib/ae_events/ae_events__event_badge.ts index bb4a8cbd..d8b63b64 100644 --- a/src/lib/ae_events/ae_events__event_badge.ts +++ b/src/lib/ae_events/ae_events__event_badge.ts @@ -411,13 +411,14 @@ export async function search__event_badge({ params_json['and_qry']['badge_type_code'] = type_code; } - ae_promises.search__event_badge_obj_li = await api.get_ae_obj_li_for_obj_id_crud({ + // ae_promises.search__event_badge_obj_li = await api.get_ae_obj_li_for_obj_id_crud({ + ae_promises.search__event_badge_obj_li = await api.get_ae_obj_li_for_obj_id_crud_v2({ api_cfg, obj_type: 'event_badge', for_obj_type: 'event', for_obj_id: event_id, - use_alt_table: false, - use_alt_base: false, + use_alt_tbl: false, + use_alt_mdl: true, enabled, hidden, order_by_li, @@ -534,6 +535,8 @@ export const properties_to_save = [ 'external_id', 'external_person_id', + 'default_qry_string', + 'alert', 'enable', @@ -631,6 +634,8 @@ export async function process_ae_obj__event_badge_props({ external_id: obj.external_id, external_person_id: obj.external_person_id, + default_qry_string: obj.default_qry_string, + alert: obj.alert, enable: obj.enable, @@ -642,8 +647,8 @@ export async function process_ae_obj__event_badge_props({ created_on: obj.created_on, updated_on: obj.updated_on, - tmp_sort_1: obj.tmp_sort_1, - tmp_sort_2: obj.tmp_sort_2, + tmp_sort_1: `${obj.group}_${obj.priority}_${obj.sort}_${obj.updated_on ?? obj.created_on}`, + tmp_sort_2: `${obj.print_count}_${obj.priority}_${obj.sort}_${obj.given_name}_${obj.family_name}_${obj.updated_on}_${obj.created_on}`, person_external_id: obj.person_external_id, person_external_sys_id: obj.person_external_sys_id, diff --git a/src/lib/ae_events/db_events.ts b/src/lib/ae_events/db_events.ts index 8938d632..4e59911e 100644 --- a/src/lib/ae_events/db_events.ts +++ b/src/lib/ae_events/db_events.ts @@ -157,6 +157,8 @@ export interface Badge { // data_json?: null|string; + default_qry_string?: null|string; + alert?: null|boolean; enable: null|boolean; @@ -739,7 +741,7 @@ export class MySubClassedDexie extends Dexie { constructor() { super('ae_events_db'); - this.version(5).stores({ + this.version(6).stores({ event: ` id, event_id, event_id_random, code, @@ -760,6 +762,7 @@ export class MySubClassedDexie extends Dexie { affiliations, affiliations_override, badge_type, badge_type_code, badge_type_code_override, badge_type_override, external_event_id, external_id, external_person_id, + default_qry_string, alert, tmp_sort_1, tmp_sort_2, enable, hide, priority, sort, group, notes, created_on, updated_on`, diff --git a/src/lib/ae_events_stores.ts b/src/lib/ae_events_stores.ts index a3ce5727..dbfe7491 100644 --- a/src/lib/ae_events_stores.ts +++ b/src/lib/ae_events_stores.ts @@ -90,7 +90,11 @@ let events_local_data_struct: key_val = { // 'theme_name': 'wintry', 'fulltext_search_qry_str': null, + 'search_badge_type_code': null, 'status_qry__search': null, + 'use_id_li': true, + 'search_status': null, + 'search_complete': false, 'classes__form': 'border border-surface-200 p-4 space-y-4 rounded-container', }, @@ -346,7 +350,11 @@ let events_session_data_struct: key_val = { // Badge Printing 'badges': { 'fulltext_search_qry_str': null, + 'search_badge_type_code': null, 'status_qry__search': null, + 'use_id_li': true, + 'search_status': null, + 'search_complete': true, show_form__search: true, show_form__search_results: true, diff --git a/src/routes/events/[event_id]/(badges)/badges/+page.svelte b/src/routes/events/[event_id]/(badges)/badges/+page.svelte index d5fee1dc..5f88d82f 100644 --- a/src/routes/events/[event_id]/(badges)/badges/+page.svelte +++ b/src/routes/events/[event_id]/(badges)/badges/+page.svelte @@ -104,7 +104,12 @@ let event_badge_id_li: Array = $state([]); @@ -117,14 +122,27 @@ let event_badge_id_li: Array = $state([]); {/await} --> +{#if $events_sess?.badges?.search_status != 'loading' && $events_sess?.badges?.search_status != 'processing'} + + +{:else} +

Loading badges...

+{/if} - -{#if event_badge_id_li && event_badge_id_li?.length > 0} + \ No newline at end of file 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 2d7e106f..709a0bf7 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 @@ -3,7 +3,11 @@ interface Props { // Exports container_class_li?: string|Array; // export let display_mode: string = 'default'; // 'default', 'compact', 'minimal', 'launcher' + use_id_li?: boolean; event_badge_id_li?: Array; + qry_idb?: boolean; + qry_str?: string; + qry_type_code?: string; // event_badge_obj_li?: Array; link_to_type?: string; link_to_id?: string; @@ -17,7 +21,11 @@ interface Props { let { container_class_li = [], + use_id_li = $bindable(true), event_badge_id_li = $bindable([]), + qry_idb = false, + qry_str = '', + qry_type_code = '', // event_badge_obj_li = $bindable(), link_to_type, link_to_id, @@ -57,21 +65,54 @@ if (log_lvl) { // let event_badge_id_li: Array = $state([]); -let dq__where_type_id_val: string = `${link_to_type}_id_random`; -let dq__where_eq_id_val: string = link_to_id ?? ''; + // *** Functions and Logic let lq__event_badge_obj_li = $derived(liveQuery(async () => { let results: any; - log_lvl = 2; + log_lvl = 1; - if (event_badge_id_li?.length) { + if (use_id_li && event_badge_id_li?.length) { if (log_lvl) { console.log(`LQ - Using event_badge_id_li to get event badges.`, event_badge_id_li); } results = await db_events.badge .bulkGet(event_badge_id_li); + } else if (qry_str && qry_str?.length) { + if (log_lvl) { + console.log(`LQ - Using qry_str to get event badges. qry_str=${qry_str}`); + } + + // let ft_query = ae_util.sanitize_fulltext_search(qry_str); + // let ft_query = qry_str; + if (log_lvl) { + console.log(`Fulltext search query: ${qry_str}`); + } + + if (qry_type_code && qry_type_code !== 'all') { + if (log_lvl) { + console.log(`Also filtering by badge type code: ${qry_type_code}`); + } + results = await db_events.badge + .where('default_qry_string') + .equalsIgnoreCase(qry_str) + // .equals(ft_query) + // .and((badge) => badge.badge_type_code === qry_type_code && badge.event_id === $events_slct.event_id) + .sortBy('tmp_sort_2'); + } else { + results = await db_events.badge + .where('full_name') + .startsWithIgnoreCase(qry_str) + // .where('default_qry_string') + // .equalsIgnoreCase(qry_str) + // .equals(ft_query) + // .and((badge) => badge.event_id === $events_slct.event_id) + .sortBy('tmp_sort_2'); + } + + // event_badge_id_li = results.map((badge) => badge.event_badge_id); + // } else if (event_badge_obj_li?.length) { // if (log_lvl) { @@ -90,6 +131,9 @@ let lq__event_badge_obj_li = $derived(liveQuery(async () => { // .bulkGet(event_badge_id_li); } else if (link_to_type && link_to_id) { + let dq__where_type_id_val: string = `${link_to_type}_id_random`; + let dq__where_eq_id_val: string = link_to_id ?? ''; + if (log_lvl) { console.log(`LQ - Trying where: ${dq__where_type_id_val}; equals: ${dq__where_eq_id_val}`); } @@ -97,7 +141,7 @@ let lq__event_badge_obj_li = $derived(liveQuery(async () => { results = await db_events.badge .where(dq__where_type_id_val) .equals(dq__where_eq_id_val) - .sortBy('name'); + .sortBy('tmp_sort_2'); // event_badge_id_li = results.map((badge) => badge.event_badge_id); @@ -112,11 +156,17 @@ let lq__event_badge_obj_li = $derived(liveQuery(async () => { if ($events_slct.event_badge_obj_li && JSON.stringify($events_slct.event_badge_obj_li) !== JSON.stringify(results)) { $events_slct.event_badge_obj_li = [...results]; if (log_lvl) { - console.log(`Session slct li stored version has changed for ID = ${$events_slct.journal_id}`, $events_slct.event_badge_obj_li); + console.log(`Session slct li stored version has changed for ID = ${$events_slct.event_id}`, $events_slct.event_badge_obj_li); + + } + } else if (!$events_slct?.event_badge_obj_li) { + $events_slct.event_badge_obj_li = [...results]; + if (log_lvl) { + console.log(`Session slct li stored version was not set for ID = ${$events_slct.event_id}`, $events_slct.event_badge_obj_li); } } else { if (log_lvl > 1) { - console.log(`Session slct li stored version has not changed for ID = ${$events_slct.journal_id}`); + console.log(`Session slct li stored version has not changed for ID = ${$events_slct.event_id}`, $events_slct.event_badge_obj_li); } } @@ -145,7 +195,8 @@ let lq__event_badge_obj_li = $derived(liveQuery(async () => {
-{#if event_badge_id_li?.length && $lq__event_badge_obj_li?.length} + +{#if $lq__event_badge_obj_li?.length}

Results:

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 eb537b72..0c075810 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 @@ -1,19 +1,25 @@