diff --git a/src/lib/ae_events/ae_events__event_session.ts b/src/lib/ae_events/ae_events__event_session.ts index 6ecc9e29..fedb3ec9 100644 --- a/src/lib/ae_events/ae_events__event_session.ts +++ b/src/lib/ae_events/ae_events__event_session.ts @@ -16,6 +16,7 @@ export async function load_ae_obj_id__event_session( api_cfg, event_session_id, inc_file_li = false, + inc_all_file_li = false, inc_presentation_li = false, inc_presenter_li = false, enabled = 'enabled', @@ -28,6 +29,7 @@ export async function load_ae_obj_id__event_session( api_cfg: any, event_session_id: string, inc_file_li?: boolean, + inc_all_file_li?: boolean, inc_presentation_li?: boolean, inc_presenter_li?: boolean, enabled?: string, @@ -137,11 +139,12 @@ export async function load_ae_obj_id__event_session( if (log_lvl) { console.log(`Need to load the presentation list for the session now`); } + // NOTE: The files will only be included if inc_all_file_li is true. 2025-09-17 let load_event_presentation_obj_li = load_ae_obj_li__event_presentation({ api_cfg: api_cfg, for_obj_type: 'event_session', for_obj_id: event_session_id, - inc_file_li: inc_file_li, + inc_file_li: inc_all_file_li, inc_presenter_li: inc_presenter_li, enabled: enabled, // all, disabled, enabled hidden: hidden, // all, hidden, not_hidden @@ -175,6 +178,7 @@ export async function load_ae_obj_li__event_session( for_obj_type, for_obj_id, inc_file_li = false, + inc_all_file_li = false, inc_presentation_li = false, inc_presenter_li = false, enabled = 'enabled', @@ -190,6 +194,7 @@ export async function load_ae_obj_li__event_session( for_obj_type: string, for_obj_id: string, inc_file_li?: boolean, + inc_all_file_li?: boolean, inc_presentation_li?: boolean, inc_presenter_li?: boolean, enabled?: string, // all, disabled, enabled @@ -316,11 +321,12 @@ export async function load_ae_obj_li__event_session( let event_session_obj = ae_promises.load__event_session_obj_li[i]; let event_session_id = event_session_obj.event_session_id_random; + // NOTE: The files will only be included if inc_all_file_li is true. 2025-09-17 let load_event_presentation_obj_li = load_ae_obj_li__event_presentation({ api_cfg: api_cfg, for_obj_type: 'event_session', for_obj_id: event_session_id, - inc_file_li: inc_file_li, + inc_file_li: inc_all_file_li, inc_presenter_li: inc_presenter_li, enabled: enabled, hidden: hidden, diff --git a/src/lib/ae_events_stores.ts b/src/lib/ae_events_stores.ts index a4ed4b5c..60731148 100644 --- a/src/lib/ae_events_stores.ts +++ b/src/lib/ae_events_stores.ts @@ -369,6 +369,9 @@ let events_session_data_struct: key_val = { native: { }, modal__open: false, + + loading__session_li_status: null, + loading__session_id_status: null, }, // Lead Retrievals (Exhibit) diff --git a/src/routes/events/[event_id]/(launcher)/launcher/+layout.svelte b/src/routes/events/[event_id]/(launcher)/launcher/+layout.svelte index 455acbc4..6a8c4abd 100644 --- a/src/routes/events/[event_id]/(launcher)/launcher/+layout.svelte +++ b/src/routes/events/[event_id]/(launcher)/launcher/+layout.svelte @@ -2,7 +2,7 @@ let log_lvl: number = $state(1); // *** Import Svelte specific -import { onMount, tick } from 'svelte'; +// import { onMount, tick } from 'svelte'; import { goto } from '$app/navigation'; import { sineIn } from 'svelte/easing'; @@ -27,7 +27,7 @@ import { api } from '$lib/api'; import { db_events } from '$lib/ae_events/db_events'; import { ae_snip, ae_loc, ae_sess, ae_api, ae_trig, slct, slct_trigger, time } from '$lib/ae_stores'; import { events_loc, events_sess, events_slct, events_trigger, events_trig } from '$lib/ae_events_stores'; -import { events_func } from '$lib/ae_events_functions'; +// import { events_func } from '$lib/ae_events_functions'; import Launcher_cfg from '../launcher_cfg.svelte'; import Launcher_menu from '../launcher_menu.svelte'; @@ -90,8 +90,30 @@ if (log_lvl > 1) { // Event let lq__event_obj = $derived(liveQuery(async () => { + if (log_lvl) { + console.log(`lq__event_obj: event_id = ${$events_slct?.event_id}`); + } + let results = await db_events.events - .get($events_slct.event_id); + .get($events_slct?.event_id ?? ''); // null or undefined does not reset things like '' does + if (log_lvl) { + console.log(`lq__event_obj: results = `, results); + } + // tmp_event_obj = { ...results }; + + // Check if results are different than the current session version stored under $events_slct + if ($events_slct.event_obj && results) { + if (JSON.stringify($events_slct.event_obj) !== JSON.stringify(results)) { + $events_slct.event_obj = { ...results}; + if (log_lvl) { + console.log(`Session slct stored version has changed for ID = ${$events_slct.event_id}`, $events_slct.event_obj); + } + } else { + if (log_lvl) { + console.log(`Session slct stored version has not changed for ID = ${$events_slct.event_id}`); + } + } + } return results; })); @@ -152,28 +174,121 @@ let lq__event_session_obj = $derived(liveQuery(async () => { // return results; // })); +// let lq__event_session_obj_li = $derived(liveQuery(async () => { +// let results = await db_events.sessions +// .where('event_location_id') +// .equals($events_slct.event_location_id) +// // .and((x) => (x.archive_on === null || x.archive_on > (new Date()).toISOString())) +// // .and((x) => (x.archive_on === null || x.archive_on > (new Date()).toISOString())) // null or future events only +// // .and((x) => (x.archive_on < (new Date()).toISOString())) // past events only +// // .and((x) => (x.archive_on > (new Date()).toISOString())) // future events only +// // .orderBy('updated_on') +// // .toArray() +// .reverse() +// // .limit($idaa_loc.bb.qry__limit) +// .sortBy('name'); +// // .sortBy('tmp_sort_1'); +// // .sortBy('updated_on'); +// // .sortBy('updated_on, created_on'); +// // .sortBy('[updated_on+created_on]'); +// // .sortBy('[created_on+updated_on]'); + +// return results; +// })); + + let lq__event_session_obj_li = $derived(liveQuery(async () => { - let results = await db_events.sessions - .where('event_location_id') - .equals($events_slct.event_location_id) - // .and((x) => (x.archive_on === null || x.archive_on > (new Date()).toISOString())) - // .and((x) => (x.archive_on === null || x.archive_on > (new Date()).toISOString())) // null or future events only - // .and((x) => (x.archive_on < (new Date()).toISOString())) // past events only - // .and((x) => (x.archive_on > (new Date()).toISOString())) // future events only - // .orderBy('updated_on') - // .toArray() - .reverse() - // .limit($idaa_loc.bb.qry__limit) - .sortBy('name'); - // .sortBy('tmp_sort_1'); - // .sortBy('updated_on'); - // .sortBy('updated_on, created_on'); - // .sortBy('[updated_on+created_on]'); - // .sortBy('[created_on+updated_on]'); + log_lvl = 1; + + if (log_lvl) { + console.log(`LQ - $lq__event_obj.cfg_json = `, $lq__event_obj?.cfg_json); + console.log(`LQ - $events_loc.filter__category_code = `, $events_loc.filter__category_code); + } + + if ($events_sess.session_li_trigger && !$events_sess?.session_li) { + $events_sess.session_li = null; + $events_sess.session_li_trigger = false; + } + + let results; + + if ($events_sess?.session_li && $events_sess?.session_li?.length) { + if (log_lvl) { + console.log(`LQ - Using $events_sess.session_li to get event sessions.`); + } + // $events_sess.session_li_trigger = false; + let event_session_id_random_li = []; // This is to prevent the array from constantly updating and triggering the liveQuery. + + for (let i = 0; i < $events_sess?.session_li.length; i++) { + let event_session_obj = $events_sess?.session_li[i]; + let event_session_id_random = event_session_obj.event_session_id_random; + event_session_id_random_li.push(event_session_id_random); + } + // let event_session_id_random_li = tmp_li; + + results = await db_events.sessions + .bulkGet(event_session_id_random_li); + + // } else if ($lq__event_obj?.cfg_json?.session_group_sort === 'DESC') { + // if (log_lvl) { + // console.log(`LQ - Using DESC sort for Event Session list event_id: ${$events_slct?.event_id}`); + // } + // results = await db_events.sessions + // // .orderBy('updated_on') + // .where('event_id') + // .equals($events_slct?.event_id ?? '') // null or undefined does not reset things like '' does + // .reverse() + // // .sortBy('tmp_sort_2'); + // .sortBy('updated_on'); + // // .sortBy('title'); + + // } else if ($events_loc.filter__category_code && $events_loc.filter__category_code.length > 0) { + // if (log_lvl) { + // console.log(`LQ - Using category filter: ${$events_loc.filter__category_code}`); + // } + // results = await db_events.sessions + // .where('event_id') + // .equals($events_slct?.event_id ?? '') // null or undefined does not reset things like '' does + // .and(session => session.category_code === $events_loc.filter__category_code) + // .reverse() + // .sortBy('tmp_sort_1'); + + } else { + if (log_lvl) { + // console.log(`$lq__event_obj.cfg_json = `, $lq__event_obj?.cfg_json); + console.log(`LQ - Using default sort for Event Session list event_id: ${$events_slct?.event_id}`); + } + results = await db_events.sessions + .where('event_location_id') + .equals($events_slct.event_location_id) + // .where('event_id') + // .equals($events_slct?.event_id ?? '') // null or undefined does not reset things like '' does + .reverse() + .sortBy('name'); + // .sortBy('tmp_sort_1'); + // .sortBy('updated_on'); + + } + + // Check if results are different than the current session version stored under $events_slct + if ($events_slct.event_session_obj_li && JSON.stringify($events_slct.event_session_obj_li) !== JSON.stringify(results)) { + $events_slct.event_session_obj_li = [...results]; + if (log_lvl) { + console.log(`Session slct li stored version has changed for ID = ${$events_slct.event_id}`, $events_slct.event_session_obj_li); + } + } else { + if (log_lvl > 1) { + console.log(`Session slct li stored version has not changed for ID = ${$events_slct.event_id}`); + } + } return results; + })); + + + // $: if (!$events_sess.launcher.modal__open) { // if ($events_loc.launcher.controller == 'local_push' && $events_sess.launcher.ws_connect_status == 'connected') { // console.log(`Local Push Controller Command: ae_close:event_file_modal`); @@ -187,14 +302,6 @@ let ae_promises: key_val = { slct_event_presentation_li: null }; -onMount(() => { - console.log('Events - Launcher: +layout.svelte'); - // Hide the AppShell shell header (id="shell-header") and footer - // document.getElementById('shell-header').classList.add('hidden'); - // document.getElementById('shell-footer').classList.add('hidden'); -}); -console.log(`BROWSER Events - [event_id] launcher +layout.svelte start`); - /* *** BEGIN *** Handle WebSocket events */ function handle_ws_conn(event) { @@ -603,12 +710,7 @@ $effect(() => { > -{#if !$lq__event_obj} -