diff --git a/src/routes/events/[event_id]/(leads)/leads/+page.svelte b/src/routes/events/[event_id]/(leads)/leads/+page.svelte index 1c990267..09b556c2 100644 --- a/src/routes/events/[event_id]/(leads)/leads/+page.svelte +++ b/src/routes/events/[event_id]/(leads)/leads/+page.svelte @@ -2,7 +2,11 @@ import { onMount, untrack } from 'svelte'; import { liveQuery } from 'dexie'; import { db_events } from '$lib/ae_events/db_events'; - import { events_loc, events_sess, events_slct } from '$lib/stores/ae_events_stores'; + import { + events_loc, + events_sess, + events_slct + } from '$lib/stores/ae_events_stores'; import { ae_api, ae_loc } from '$lib/stores/ae_stores'; import { page } from '$app/state'; import { events_func } from '$lib/ae_events_functions'; @@ -11,10 +15,14 @@ // *** Initialization & Store Guard *** if ($events_loc.leads) { - if (typeof $events_loc.leads.search_version === 'undefined') $events_loc.leads.search_version = 0; - if (typeof $events_loc.leads.qry__remote_first === 'undefined') $events_loc.leads.qry__remote_first = false; - if (typeof $events_loc.leads.qry__search_text === 'undefined') $events_loc.leads.qry__search_text = ''; - if (typeof $events_loc.leads.qry__sort_order === 'undefined') $events_loc.leads.qry__sort_order = 'name_asc'; + if (typeof $events_loc.leads.search_version === 'undefined') + $events_loc.leads.search_version = 0; + if (typeof $events_loc.leads.qry__remote_first === 'undefined') + $events_loc.leads.qry__remote_first = false; + if (typeof $events_loc.leads.qry__search_text === 'undefined') + $events_loc.leads.qry__search_text = ''; + if (typeof $events_loc.leads.qry__sort_order === 'undefined') + $events_loc.leads.qry__sort_order = 'name_asc'; } let exhibit_id_li: Array = $state([]); @@ -27,14 +35,14 @@ let lq__event_exhibit_obj_li = $derived.by(() => { const ids = exhibit_id_li; const event_id = page.params.event_id; - + return liveQuery(async () => { // SCENARIO 1: Specific IDs provided (Search Results) if (Array.isArray(ids) && ids.length > 0) { const results = await db_events.exhibit.bulkGet(ids); - return results.filter(item => item !== undefined); + return results.filter((item) => item !== undefined); } - + // SCENARIO 2: Fallback broad search if (event_id && !$events_loc.leads.qry__search_text) { return await db_events.exhibit @@ -77,7 +85,7 @@ const current_search_id = ++last_search_id; const event_id = params.event_id; const remote_first = params.remote_first; - + if (!event_id) return; untrack(() => { @@ -92,11 +100,15 @@ let local_results = await db_events.exhibit .where('event_id_random') .equals(event_id) - .filter(exhibit => { + .filter((exhibit) => { if (qry_str) { const name = (exhibit.name ?? '').toLowerCase(); const code = (exhibit.code ?? '').toLowerCase(); - if (!name.includes(qry_str) && !code.includes(qry_str)) return false; + if ( + !name.includes(qry_str) && + !code.includes(qry_str) + ) + return false; } return true; }) @@ -104,16 +116,27 @@ local_results.sort((a, b) => { switch (params.sort) { - case 'name_asc': return (a.name ?? '').localeCompare(b.name ?? ''); - case 'name_desc': return (b.name ?? '').localeCompare(a.name ?? ''); - case 'code_asc': return (a.code ?? '').localeCompare(b.code ?? ''); - case 'code_desc': return (b.code ?? '').localeCompare(a.code ?? ''); - case 'updated_desc': return new Date(b.updated_on || 0).getTime() - new Date(a.updated_on || 0).getTime(); - default: return (a.name ?? '').localeCompare(b.name ?? ''); + case 'name_asc': + return (a.name ?? '').localeCompare(b.name ?? ''); + case 'name_desc': + return (b.name ?? '').localeCompare(a.name ?? ''); + case 'code_asc': + return (a.code ?? '').localeCompare(b.code ?? ''); + case 'code_desc': + return (b.code ?? '').localeCompare(a.code ?? ''); + case 'updated_desc': + return ( + new Date(b.updated_on || 0).getTime() - + new Date(a.updated_on || 0).getTime() + ); + default: + return (a.name ?? '').localeCompare(b.name ?? ''); } }); - const local_ids = local_results.map(e => String(e.id || e.event_exhibit_id_random)).filter(Boolean); + const local_ids = local_results + .map((e) => String(e.id || e.event_exhibit_id_random)) + .filter(Boolean); if (current_search_id === last_search_id) { untrack(() => { exhibit_id_li = local_ids; @@ -128,12 +151,23 @@ try { let order_by_li: any = {}; switch (params.sort) { - case 'name_asc': order_by_li = { name: 'ASC' }; break; - case 'name_desc': order_by_li = { name: 'DESC' }; break; - case 'code_asc': order_by_li = { code: 'ASC' }; break; - case 'code_desc': order_by_li = { code: 'DESC' }; break; - case 'updated_desc': order_by_li = { updated_on: 'DESC' }; break; - default: order_by_li = { name: 'ASC' }; + case 'name_asc': + order_by_li = { name: 'ASC' }; + break; + case 'name_desc': + order_by_li = { name: 'DESC' }; + break; + case 'code_asc': + order_by_li = { code: 'ASC' }; + break; + case 'code_desc': + order_by_li = { code: 'DESC' }; + break; + case 'updated_desc': + order_by_li = { updated_on: 'DESC' }; + break; + default: + order_by_li = { name: 'ASC' }; } const results = await events_func.search__exhibit({ @@ -145,7 +179,9 @@ }); if (current_search_id === last_search_id) { - const api_ids = results.map((e: any) => String(e.id || e.event_exhibit_id_random)).filter(Boolean); + const api_ids = results + .map((e: any) => String(e.id || e.event_exhibit_id_random)) + .filter(Boolean); untrack(() => { exhibit_id_li = api_ids; $events_sess.leads.submit_status__search = 'done'; @@ -161,33 +197,40 @@ } -
+

Exhibitor Leads

- + {#if $events_sess.leads.submit_status__search === 'searching' && exhibit_id_li.length === 0} -
+

Searching exhibits...

{:else if $lq__event_exhibit_obj_li && $lq__event_exhibit_obj_li.length > 0}

Select your exhibit from the list

-
+
{#each $lq__event_exhibit_obj_li as exhibit_obj} -
{exhibit_obj.name}
-
Booth #{exhibit_obj.code}
+
+ Booth #{exhibit_obj.code} +
{/each}
{:else}

No exhibits found matching your search.

{/if} -
\ No newline at end of file +
diff --git a/src/routes/events/[event_id]/(leads)/leads/ae_comp__exhibit_search.svelte b/src/routes/events/[event_id]/(leads)/leads/ae_comp__exhibit_search.svelte index 411fa41b..b6ca6068 100644 --- a/src/routes/events/[event_id]/(leads)/leads/ae_comp__exhibit_search.svelte +++ b/src/routes/events/[event_id]/(leads)/leads/ae_comp__exhibit_search.svelte @@ -4,10 +4,7 @@ log_lvl?: number; } - let { - event_id, - log_lvl = 0 - }: Props = $props(); + let { event_id, log_lvl = 0 }: Props = $props(); // *** Import other supporting libraries import { @@ -17,13 +14,8 @@ LoaderCircle } from 'lucide-svelte'; - import { - ae_loc - } from '$lib/stores/ae_stores'; - import { - events_loc, - events_sess - } from '$lib/stores/ae_events_stores'; + import { ae_loc } from '$lib/stores/ae_stores'; + import { events_loc, events_sess } from '$lib/stores/ae_events_stores'; function handle_search_trigger() { if ($events_loc.leads.search_version === undefined) { @@ -34,13 +26,15 @@ function prevent_default(fn: (event: T) => void) { return function (event: T) { - event.prevent_default(); + event.preventDefault(); fn(event); }; } -