diff --git a/src/lib/stores/ae_events_stores.ts b/src/lib/stores/ae_events_stores.ts index 66cfba1f..939992f0 100644 --- a/src/lib/stores/ae_events_stores.ts +++ b/src/lib/stores/ae_events_stores.ts @@ -247,6 +247,10 @@ const events_local_data_struct: key_val = { qry__files_offset_seconds: null, qry__files_sort: 'created_on', + // New additions for search stabilization (Standardized Pattern 2026-01-27) + search_version: 0, + qry__remote_first: false, + qry_and__file_count: true, // Essentially it should be greater than 0 save_search_text: true, diff --git a/src/routes/events/[event_id]/+page.svelte b/src/routes/events/[event_id]/+page.svelte index 3ef8f408..191ee1d9 100644 --- a/src/routes/events/[event_id]/+page.svelte +++ b/src/routes/events/[event_id]/+page.svelte @@ -5,20 +5,17 @@ log_lvl?: number; } - let { data, log_lvl = 0 }: Props = $props(); + let { data, log_lvl = $bindable(0) }: Props = $props(); // *** Import Svelte specific + import { untrack } from 'svelte'; import { browser } from '$app/environment'; - // import { goto, invalidate, pushState, replaceState } from '$app/navigation'; import type { key_val } from '$lib/stores/ae_stores'; import { ae_util } from '$lib/ae_utils/ae_utils'; - // import Element_data_store from '$lib/element_data_store_v2.svelte'; - // import Comp_event_session_obj_li from '../ae_comp__event_session_obj_li.svelte'; import Comp_event_session_obj_li_wrapper from '../ae_comp__event_session_obj_li_wrapper.svelte'; import { liveQuery } from 'dexie'; - // import { core_func } from '$lib/ae_core_functions'; import { db_events } from '$lib/ae_events/db_events'; import { ae_snip, @@ -42,42 +39,28 @@ import Event_page_menu from './event_page_menu.svelte'; // Quickly save the data passed from the parent(s) to the Svelte stores, localStorage, and other. - // $slct.account_id = data.account_id; - // console.log(`$slct.account_id = `, $slct.account_id); let ae_acct = data[$slct.account_id]; - if (log_lvl) { - console.log(`ae_acct = `, ae_acct); - } - - if (log_lvl) { - console.log(`event_id layout A: ${data.params.event_id}`); - console.log(`event_id layout B: ${ae_acct.slct.event_id}`); - console.log(`event_id layout C: ${$events_slct.event_id}`); - } let event_id = data.params.event_id; $events_slct.event_id = ae_acct.slct.event_id; - // $events_slct.event_device_id = null; - // $events_slct.event_location_id = null; - // $events_slct.event_session_id = null; + + // *** Initialization & Store Guard *** + if ($events_loc.pres_mgmt) { + if (typeof $events_loc.pres_mgmt.search_version === 'undefined') $events_loc.pres_mgmt.search_version = 0; + if (typeof $events_loc.pres_mgmt.qry__remote_first === 'undefined') $events_loc.pres_mgmt.qry__remote_first = false; + if (typeof $events_loc.pres_mgmt.fulltext_search_qry_str === 'undefined') $events_loc.pres_mgmt.fulltext_search_qry_str = ''; + if (typeof $events_loc.pres_mgmt.location_name_qry_str === 'undefined') $events_loc.pres_mgmt.location_name_qry_str = ''; + } let lq__event_obj = $derived( liveQuery(async () => { - if (log_lvl) { - console.log(`*** LiveQuery: lq__event_obj *** event_id=${$events_slct.event_id}`); - } - let results = await db_events.event.get($events_slct?.event_id ?? ''); - - return results; + if (log_lvl) console.log(`*** LiveQuery: lq__event_obj *** event_id=${$events_slct.event_id}`); + return await db_events.event.get($events_slct?.event_id ?? ''); }) ); // JSON formatted configuration options for an event, and specifically for the presentation management module. $effect(() => { if ($lq__event_obj?.mod_pres_mgmt_json) { - // if (log_lvl) { - // console.log(`*** Event Pres Mgmt JSON *** pres_mgmt_cfg_local`, $events_loc.pres_mgmt); - // } - // $events_loc.pres_mgmt = events_func.sync_config__event_pres_mgmt({ pres_mgmt_cfg_remote: $lq__event_obj.mod_pres_mgmt_json, pres_mgmt_cfg_local: $events_loc.pres_mgmt, @@ -86,33 +69,37 @@ } }); - let event_session_id_random_li: Array = $state([]); + let event_session_id_li: Array = $state([]); + let search_debounce_timer: any = null; + let last_search_id = 0; + let last_executed_key = ''; // Search Guard Key - // OMG THIS WORKS!!! 2024-09-17 - // Using the $: seems to have fixed it along with the async await? - // let lq__event_session_obj_li = $derived(liveQuery(async () => { - // // console.log(`*** LiveQuery: lq__event_session_obj_li *** event_session_id_random_li`, $state.snapshot(event_session_id_random_li)); - // // if (!event_session_id_random_li) { - // // // return []; - // // return; - // // } - // if (event_session_id_random_li.length) { - // console.log(`*** LiveQuery: lq__event_session_obj_li *** time to bulkGet`, $state.snapshot(event_session_id_random_li)); - // let results = await db_events.session - // .bulkGet(event_session_id_random_li); + // Stable LiveQuery Pattern (Aether UI V3) + let lq__event_session_obj_li = $derived.by(() => { + const ids = event_session_id_li; + const event_id = $events_slct?.event_id; + + return liveQuery(async () => { + // SCENARIO 1: Specific IDs provided (Search Results) + if (Array.isArray(ids) && ids.length > 0) { + if (log_lvl) console.log(`Session Page LQ: bulkGet ${ids.length} IDs`); + const results = await db_events.session.bulkGet(ids); + return results.filter(item => item !== undefined); + } + + // SCENARIO 2: Fallback broad search (Only if no active filters) + if (event_id && !$events_loc.pres_mgmt.fulltext_search_qry_str && !$events_loc.pres_mgmt.location_name_qry_str) { + if (log_lvl) console.log(`Session Page LQ: Fallback search for event: ${event_id}`); + return await db_events.session + .where('event_id_random') + .equals(event_id) + .limit(50) + .sortBy('name'); + } - // return results; - // } else { - // let results = await db_events.session - // .where('event_id') - // .equals($events_slct?.event_id ?? '') // null or undefined does not reset things like '' does - // .reverse() - // .sortBy('name'); - - // return results; - // } - - // })); + return []; + }); + }); let lq__event_location_obj_li = $derived( liveQuery(async () => { @@ -124,28 +111,144 @@ }) ); - // let load_obj_li_results: Promise|key_val; - let search_submit_results: Promise | key_val; + // Standardized Reactive Search Pattern (Aether UI V3) + let search_params = $derived({ + v: $events_loc.pres_mgmt.search_version, + str: ($events_loc.pres_mgmt.fulltext_search_qry_str ?? '').toLowerCase().trim(), + location: $events_loc.pres_mgmt.location_name_qry_str, + event_id: $events_slct?.event_id, + remote_first: $events_loc.pres_mgmt.qry__remote_first + }); - let ae_tmp: key_val = {}; - let ae_triggers: key_val = {}; + $effect(() => { + const params = search_params; + if (search_debounce_timer) clearTimeout(search_debounce_timer); + search_debounce_timer = setTimeout(() => { + untrack(() => { + handle_search_refresh(params); + }); + }, 300); + return () => { + if (search_debounce_timer) clearTimeout(search_debounce_timer); + }; + }); + + async function handle_search_refresh(params: any) { + // 1. Guard + const qry_key = JSON.stringify(params); + if (qry_key === last_executed_key) return; + last_executed_key = qry_key; + + const current_search_id = ++last_search_id; + const event_id = params.event_id; + const remote_first = params.remote_first; + + if (log_lvl) console.log(`[Session Search #${current_search_id}] Refreshing (remote=${remote_first}, event=${event_id}, str=${params.str})...`); + + untrack(() => { + $events_sess.pres_mgmt.status_qry__search = 'loading'; + }); + + const qry_str = params.str; + const location_name = params.location; + + // 2. FAST PATH: Local IDB Search + if (!remote_first) { + try { + if (event_id) { + let local_results = await db_events.session + .where('event_id_random') + .equals(event_id) + .filter(session => { + if (location_name && session.event_location_name !== location_name) return false; + + if (qry_str) { + const name = (session.name ?? '').toLowerCase(); + const code = (session.code ?? '').toLowerCase(); + const description = (session.description ?? '').toLowerCase(); + const qry_string = (session.default_qry_str ?? '').toLowerCase(); + + const match = name.includes(qry_str) || + code.includes(qry_str) || + description.includes(qry_str) || + qry_string.includes(qry_str); + + if (!match) return false; + } + return true; + }) + .toArray(); + + local_results.sort((a, b) => (a.name ?? '').localeCompare(b.name ?? '')); + const local_ids = local_results.map(s => s.id || s.event_session_id_random).filter(Boolean); + + if (current_search_id === last_search_id) { + if (log_lvl) console.log(`[Session Search #${current_search_id}] Fast Path found ${local_ids.length} items locally.`); + untrack(() => { + event_session_id_li = local_ids; + if (local_ids.length > 0) $events_sess.pres_mgmt.status_qry__search = 'done'; + }); + } + } + } catch (e) { + if (log_lvl) console.warn('Session Fast Path failed.', e); + } + } else { + untrack(() => { + event_session_id_li = []; + }); + } + + // 3. REVALIDATE: API Request + try { + const results = await events_func.search__event_session({ + api_cfg: $ae_api, + event_id: event_id, + fulltext_search_qry_str: qry_str || null, + like_search_qry_str: qry_str || null, + location_name: location_name || null, + enabled: $events_loc.pres_mgmt.qry_enabled ?? 'enabled', + hidden: $events_loc.pres_mgmt.qry_hidden ?? 'not_hidden', + limit: $events_loc.pres_mgmt.qry_limit__sessions ?? 100, + try_cache: true, + log_lvl: 0 + }); + + if (current_search_id === last_search_id) { + const api_results = results || []; + const api_ids = api_results.map((s: any) => s.id || s.event_session_id_random).filter(Boolean); + + untrack(() => { + $events_slct.event_session_obj_li = api_results; + event_session_id_li = api_ids; + $events_sess.pres_mgmt.status_qry__search = 'done'; + }); + if (log_lvl) console.log(`[Session Search #${current_search_id}] Revalidation Complete. Found ${api_ids.length} items.`); + } + } catch (error) { + if (current_search_id === last_search_id) { + console.error('Session revalidation failed:', error); + untrack(() => { + $events_sess.pres_mgmt.status_qry__search = 'error'; + }); + } + } + } if ($events_loc.pres_mgmt?.save_search_text && $events_loc.pres_mgmt?.saved_search__session) { - $events_sess.pres_mgmt.fulltext_search_qry_str = + $events_loc.pres_mgmt.fulltext_search_qry_str = $events_loc.pres_mgmt.saved_search__session; } if ( $events_loc.pres_mgmt?.save_search_text && $events_loc.pres_mgmt?.saved_search__session_location_name ) { - $events_sess.pres_mgmt.location_name_qry_str = + $events_loc.pres_mgmt.location_name_qry_str = $events_loc.pres_mgmt.saved_search__session_location_name; } - // *** Functions and Logic - if (browser) { - // console.log('Events Event [event_id]: +page.svelte'); - $events_trigger = 'load__event_session_obj_li'; + function handle_search_trigger() { + $events_loc.pres_mgmt.search_version++; } function preventDefault(fn: (event: T) => void) { @@ -154,241 +257,6 @@ fn(event); }; } - - // Updated 2024-06-12 late - $effect(() => { - if ($events_trigger == 'load__event_session_obj_li' && $events_slct.event_id) { - console.log( - `load__event_session_obj_li() $events_slct.event_id=${$events_slct.event_id}` - ); - log_lvl = 1; - $events_trigger = null; - - if ($events_loc.pres_mgmt.save_search_text) { - if (log_lvl) { - console.log( - `*** Save search text *** ${$events_loc.pres_mgmt.save_search_text}` - ); - } - $events_loc.pres_mgmt.saved_search__session = - $events_sess.pres_mgmt.fulltext_search_qry_str; - $events_loc.pres_mgmt.saved_search__session_location_name = - $events_sess.pres_mgmt.location_name_qry_str; - } - - if ($events_sess.pres_mgmt.fulltext_search_qry_str?.length > 2) { - console.log('*** Search string is valid ***'); - process_search_string($events_sess.pres_mgmt.fulltext_search_qry_str); - } else if ($ae_loc.authenticated_access) { - console.log('*** Administrator Access or Trusted Access ***'); - process_search_string($events_sess.pres_mgmt.fulltext_search_qry_str); - } else { - console.log( - '*** Check permissions and or search string. Not allowed or too short. ***' - ); - $events_slct.event_session_obj_li = []; - event_session_id_random_li = []; - } - } - - // if ($events_sess.pres_mgmt.status_qry__search == 'done' && $events_slct?.event_session_obj_li) { - log_lvl = 1; - if ($events_trigger == 'search_done') { - $events_trigger = null; - $events_sess.pres_mgmt.status_qry__search = null; - - if (log_lvl) { - console.log('TEST search done: Pulling out the event_session_id_randoms...'); - } - - // We need to loop through the array of objects and get the event_session_id_random from each object a new list of event_session_id_randoms. Then we can use this list to get the full objects from the database. - let tmp_li = []; // This is to prevent the array from constantly updating and triggering the liveQuery. - if ($events_slct.event_session_obj_li && $events_slct.event_session_obj_li.length) { - event_session_id_random_li = []; - // console.log(`TEST SEARCH - Get ids:`, $events_slct.event_session_obj_li); - for (let i = 0; i < $events_slct.event_session_obj_li.length; i++) { - tmp_li.push($events_slct.event_session_obj_li[i].event_session_id_random); - } - } - event_session_id_random_li = tmp_li; - console.log( - `TEST search results: event_session_id_random_li`, - $state.snapshot(event_session_id_random_li) - ); - } - }); - - function process_search_string(search_str: string) { - if (log_lvl) { - console.log(`process_search_string() search_str=${search_str}`); - } - - if (search_str?.length) { - // console.log(`*** Search string length: ${search_str.length} ***`); - } else { - // console.log(`*** Search string is empty ***`); - } - - // let type_code = $events_sess.pres_mgmt.search_badge_type_code; - - // let search_str = $events_sess.pres_mgmt.fulltext_search_qry_str.trim(); - - let search_method = 'lk'; // 'ft', 'lk', 'eq' - let ft_search_str_new = ''; - let lk_search_str_new = ''; - - if (search_method == 'ft') { - // Add quotes around the search string to make it an exact match. - ft_search_str_new = `${search_str}`; - // ft_search_str_new = `"${search_str}"`; - } else if (search_method == 'lk') { - if (search_str == null) { - search_str = ''; - } - // Add a wildcard to the search string to make it a like match. - lk_search_str_new = search_str - .trim() - .replace(',', ' ') - .replace(';', ' ') - .replaceAll(' ', '%') - .replaceAll(' ', '%'); - lk_search_str_new = `%${lk_search_str_new}%`; - } - - if (log_lvl) { - // console.log(`*** Search method: ${search_method} ***`); - console.log(`*** Search string: ${search_str} ***`); - // console.log(`*** Fulltext search string: ${ft_search_str_new} ***`); - // console.log(`*** Like search string: ${lk_search_str_new} ***`); - } - - let location_name = ''; - if ($events_sess.pres_mgmt.location_name_qry_str?.length) { - location_name = $events_sess.pres_mgmt.location_name_qry_str; - console.log(`Location name: ${location_name}`); - } - - handle_search__event_session({ - ft_search_str: ft_search_str_new, - lk_search_str: lk_search_str_new, - and_lk_location_name: location_name, - // fulltext_search_qry_str: ft_search_str_new, - // ft_presenter_search_qry_str: null, - // like_search_qry_str: lk_search_str_new, - // like_presentation_search_qry_str: lk_search_str_new, - // like_presenter_search_qry_str: lk_search_str_new, - // params: params, - try_cache: true, - log_lvl: log_lvl - }); - } - - async function handle_search__event_session({ - ft_search_str = '', - lk_search_str = '', - and_lk_location_name = '', - search_delay = 0, - max_tries = 5, - enabled = $events_loc.pres_mgmt.qry_enabled ?? 'enabled', - hidden = $events_loc.pres_mgmt.qry_hidden ?? 'not_hidden', - limit = $events_loc.pres_mgmt.qry_limit__sessions ?? 35, - try_cache = true, - log_lvl = 0 - }: { - ft_search_str?: string; - lk_search_str?: string; - and_lk_location_name?: string; - search_delay?: number; // In milliseconds - max_tries?: number; - enabled?: 'enabled' | 'all' | 'not_enabled' | undefined; - hidden?: 'hidden' | 'all' | 'not_hidden' | undefined; - limit?: number; - try_cache?: boolean; - log_lvl?: number; - }) { - if (log_lvl) { - console.log('handle_search__event_session()'); - } - - if ( - $events_sess.pres_mgmt?.status_qry__search != null && - $events_sess.pres_mgmt?.status_qry__search != 'done' - ) { - // WARNING: This is a temporary fix for the search string. It needs to be fixed in the future. Using lk_search_str for now. - $events_sess.pres_mgmt.status_qry__last_request_str = lk_search_str; - - // We want to delay the initial search request to give the previous search request to finish. - let random_delay = Math.floor(Math.random() * 50); - search_delay += 50 + random_delay; - } - - // log_lvl = 1; - - let count = 0; - let request_loop = setInterval(() => { - count++; - if (log_lvl) { - console.log( - `*** TEST SEARCH - Search delay: ${search_delay} *** loop count=${count}` - ); - } - if (count >= max_tries) { - console.log('*** TEST SEARCH - Max tries reached ***'); - clearInterval(request_loop); - } - - if ( - $events_sess.pres_mgmt?.status_qry__search != null && - $events_sess.pres_mgmt?.status_qry__search != 'done' - ) { - let random_delay = Math.floor(Math.random() * 25); - search_delay += 25 + random_delay; - console.log( - `*** TEST SEARCH - $events_sess.pres_mgmt.status_qry__search == loading wait *** search_delay=${search_delay}` - ); - // $events_sess.status_qry__last_request_str = lk_search_str; - } else { - // console.log('*** TEST SEARCH - $events_sess.pres_mgmt.status_qry__search != loading ***'); - - $events_trigger = 'loading_search_results'; - $events_sess.pres_mgmt.status_qry__search = 'loading'; - - event_session_id_random_li = []; // Resetting this seems to help trigger the new results to show correctly??? - - search_submit_results = events_func - .search__event_session({ - api_cfg: $ae_api, - event_id: $events_slct.event_id, - // type_code: type_code, - fulltext_search_qry_str: ft_search_str, - ft_presenter_search_qry_str: null, - like_search_qry_str: lk_search_str, - like_presentation_search_qry_str: lk_search_str, - like_presenter_search_qry_str: lk_search_str, - like_poc_name_qry_str: lk_search_str, - // external_event_id: $events_loc.pres_mgmt.default__external_registration_id, - location_name: and_lk_location_name, - enabled: enabled, - hidden: hidden, - limit: limit, - try_cache: try_cache, - log_lvl: log_lvl - }) - .then(function (search_results) { - // Processing the results from the search. - $events_trigger = 'process_search_results'; - $events_sess.pres_mgmt.status_qry__search = 'processing'; - $events_slct.event_session_obj_li = search_results; - }) - .finally(() => { - // Finally done with the search. - $events_trigger = 'search_done'; - $events_sess.pres_mgmt.status_qry__search = 'done'; - }); - clearInterval(request_loop); - } - }, search_delay); - } @@ -399,41 +267,17 @@ - - - - {#if !$lq__event_obj} -
- +
+ Loading event information...
{:else if $lq__event_obj?.enable || $ae_loc.trusted_access}
-
{#if !$events_loc.pres_mgmt.show_content__event_view || $events_loc.pres_mgmt.show_content__event_view == 'default'} -
{ - $events_trigger = 'load__event_session_obj_li'; - })} + onsubmit={preventDefault(() => handle_search_trigger())} autocomplete="off" class="form grow flex flex-row flex-wrap gap-1 justify-center items-center w-full" > - @@ -534,34 +364,24 @@ max-w-max --> - { - if ( - $events_sess.pres_mgmt?.fulltext_search_qry_str && - $events_sess.pres_mgmt.fulltext_search_qry_str.length >= 3 - ) { - $events_trigger = 'load__event_session_obj_li'; - } + onkeyup={(e) => { + if (e.key === 'Enter') handle_search_trigger(); }} autofocus data-ignore="true" @@ -570,7 +390,6 @@ max-w-max --> + + {#if $ae_loc.edit_mode} + + {/if}
- - {#if event_session_id_random_li.length} + {#if event_session_id_li.length} hide__location_link={$events_loc.pres_mgmt?.hide__location_link} log_lvl={1} /> + {:else if $events_sess.pres_mgmt.status_qry__search === 'loading'} +
+ +

Searching sessions...

+
{:else} -
+
No results to show @@ -658,8 +491,7 @@ max-w-max --> @@ -672,40 +504,9 @@ max-w-max --> Event Disabled -

- This event is currently disabled. Please contact the event organizer for more - information. -

+

This event is currently disabled. Please contact the event organizer for more information.

{/if} - - + \ No newline at end of file diff --git a/src/routes/events/ae_comp__event_session_obj_li.svelte b/src/routes/events/ae_comp__event_session_obj_li.svelte index d91e9fc0..1cb31ebd 100644 --- a/src/routes/events/ae_comp__event_session_obj_li.svelte +++ b/src/routes/events/ae_comp__event_session_obj_li.svelte @@ -1,11 +1,7 @@ - - -
- {#if $lq__event_session_obj_li && $lq__event_session_obj_li?.length} -

- Sessions: +
- {#if $lq__event_session_obj_li?.length} - - - {$lq__event_session_obj_li.length ?? 'None'}× - - {/if} -

+ {#if visible_session_obj_li === null} + +
+ + + +

Loading sessions...

+ +
+ + {:else if visible_session_obj_li.length > 0} + +
+ +

Sessions:

+ + + + {visible_session_obj_li.length}× + + + +
+ + + + -
- + + + - - - - - + + + + + + + + + + + - - {#each $lq__event_session_obj_li as session_obj, index} - + + {#each visible_session_obj_li as session_obj, index (session_obj.id || session_obj.event_session_id || session_obj.event_session_id_random || index)} + + + - - + + + + + + + + {/each} + +
SessionDate - Times - - Location POC - Admin - LocationPOCAdmin
+ {#if session_obj?.alert && $ae_loc.trusted_access} + + {/if} + +
-
- - - - - - - {session_obj?.name} - - + +
+ + + + {#if session_obj?.hide} + + + + {:else} + + + + {/if} + + {session_obj?.name} + + + + + {#if session_obj?.file_count_all} - - - {session_obj?.file_count_all}× + + + + + + {session_obj.file_count_all} + - {:else} - + {/if} + + + {#if (show__session_presentations || show__session_files) && $ae_loc.manager_access} + + {/if} +
+ + + + +
+ + {ae_util.iso_datetime_formatter(session_obj?.start_datetime, 'date_short_month_day')} + + {ae_util.iso_datetime_formatter(session_obj?.start_datetime, 'time_12_short')} + +
+ + + {#if show_details_kv[session_obj.event_session_id]} -
+ +
+ {#if show__session_presentations && $ae_loc.manager_access} + + + /> + {/if} {#if show__session_files && $ae_loc.manager_access} + + {/if} +
+ {/if} +
+
- - - {ae_util.iso_datetime_formatter( - session_obj?.start_datetime, - 'dddd' - )} - - - {ae_util.iso_datetime_formatter( - session_obj?.start_datetime, - 'date_long_month_day' - )} - - - - - {#if session_obj?.start_datetime} - - {ae_util.iso_datetime_formatter( - session_obj?.start_datetime, - 'time_12_short' - )} - - - - {ae_util.iso_datetime_formatter( - session_obj?.end_datetime, - 'time_12_short' - )} - - {:else} - {@html ae_snip.html__not_set} - {/if} - + + + + - - - - - {session_obj?.event_location_name ?? '-- not set --'} - - - - - - - - +
- - - - - + {session_obj?.event_location_name ?? '--'} - - - - - - +
- {#if $ae_loc.edit_mode && $ae_loc.trusted_access} - - {/if} + {#if !hide__launcher_link} - {#if $events_sess.pres_mgmt.show__edit_location[session_obj?.event_session_id]} - - {:else if $ae_loc.edit_mode} -
+ +
- " - > - - - - - {/if} -
- + +
+ {#if session_obj?.poc_person_full_name} - - - {session_obj?.poc_person_full_name} - - + + {session_obj.poc_person_full_name} + {#if $ae_loc.trusted_access && session_obj?.poc_person_primary_email} - - - - {session_obj?.poc_person_primary_email} - - + + Email + {/if} + {:else} - {@html ae_snip.html__not_set} + + -- + {/if} - {#if $ae_loc.edit_mode && $ae_loc.administrator_access} - +
- - {/if} -
-
- - - - + > - - - ae_promises.api_update__ae_obj = core_func - .update_ae_obj_id_crud_v2({ - api_cfg: $ae_api, - object_type: 'event_session', - object_id: session_obj?.event_session_id, - object_reload: true, - field_name: 'hide_event_launcher', - new_field_value: new_hide_event_launcher_value, - log_lvl: 1 - }) - .then(function (results) {}) - .finally(function () {}); - }} - class=" - btn btn-icon - text-xs - m-0 px-0.5 - preset-tonal-secondary hover:preset-filled-secondary-500 - preset-outlined-secondary-100-900 hover:preset-outlined-secondary-600-400 - opacity-50 hover:opacity-100 - transition-all - " - title={session_obj?.hide_event_launcher - ? 'Show in event launcher' - : 'Hide from event launcher'} - > - - {#if session_obj?.hide_event_launcher} - - {:else} - - - {/if} - + - -
- + {:else} -

- - No results to show. Please use the search above to find your session. - -

- - - - - - + +
+ + + +

No sessions found matching your criteria.

+ +

Try adjusting your filters or search terms.

+ +
+ {/if} -
+ +
\ No newline at end of file diff --git a/src/routes/events/ae_comp__event_session_obj_li_wrapper.svelte b/src/routes/events/ae_comp__event_session_obj_li_wrapper.svelte index 4a851a9f..efb3db2e 100644 --- a/src/routes/events/ae_comp__event_session_obj_li_wrapper.svelte +++ b/src/routes/events/ae_comp__event_session_obj_li_wrapper.svelte @@ -1,8 +1,7 @@ - - +> \ No newline at end of file