perf(launcher): instrument SWR tracing and optimize session loading flow
This commit is contained in:
@@ -10,7 +10,7 @@ import { load_ae_obj_li__event_presentation } from '$lib/ae_events/ae_events__ev
|
|||||||
|
|
||||||
const ae_promises: key_val = {};
|
const ae_promises: key_val = {};
|
||||||
|
|
||||||
// Updated 2026-01-30: Fixed - Removed aggressive ID overwriting
|
// Updated 2026-01-30: Trace-Ready SWR Pattern
|
||||||
export async function load_ae_obj_id__event_session({
|
export async function load_ae_obj_id__event_session({
|
||||||
api_cfg,
|
api_cfg,
|
||||||
event_session_id,
|
event_session_id,
|
||||||
@@ -41,56 +41,91 @@ export async function load_ae_obj_id__event_session({
|
|||||||
log_lvl?: number;
|
log_lvl?: number;
|
||||||
}): Promise<ae_EventSession | null> {
|
}): Promise<ae_EventSession | null> {
|
||||||
if (log_lvl) {
|
if (log_lvl) {
|
||||||
console.log(`*** load_ae_obj_id__event_session() *** [V3] id=${event_session_id} (SWR)`);
|
console.log(`🔎 [Trace] load_ae_obj_id__event_session: START (id=${event_session_id}, try_cache=${try_cache})`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 1. FAST PATH: Return cached data immediately
|
||||||
if (try_cache) {
|
if (try_cache) {
|
||||||
try {
|
try {
|
||||||
const cached = await db_events.session.get(event_session_id);
|
const cached = await db_events.session.get(event_session_id);
|
||||||
if (cached) {
|
if (cached) {
|
||||||
|
if (log_lvl) console.log(`✅ [Trace] load_ae_obj_id: CACHE HIT. Returning stale data for id=${event_session_id}`);
|
||||||
|
|
||||||
|
// Background refresh & nested loads (non-blocking)
|
||||||
_refresh_session_id_background({
|
_refresh_session_id_background({
|
||||||
api_cfg, event_session_id, view, try_cache,
|
api_cfg, event_session_id, view, try_cache,
|
||||||
inc_file_li, inc_all_file_li, inc_presentation_li, inc_presenter_li,
|
inc_file_li, inc_all_file_li, inc_presentation_li, inc_presenter_li,
|
||||||
enabled, hidden, limit, offset, log_lvl: 0
|
enabled, hidden, limit, offset, log_lvl: log_lvl > 1 ? log_lvl : 0
|
||||||
});
|
});
|
||||||
|
|
||||||
return await _handle_nested_loads(cached, { api_cfg, inc_file_li, inc_all_file_li, inc_presentation_li, inc_presenter_li, enabled, hidden, limit, offset, try_cache, log_lvl: 0 });
|
return await _handle_nested_loads(cached, { api_cfg, inc_file_li, inc_all_file_li, inc_presentation_li, inc_presenter_li, enabled, hidden, limit, offset, try_cache, log_lvl: 0 });
|
||||||
|
} else if (log_lvl) {
|
||||||
|
console.log(`⏳ [Trace] load_ae_obj_id: CACHE MISS for id=${event_session_id}`);
|
||||||
}
|
}
|
||||||
} catch (e) {}
|
} catch (e) {
|
||||||
|
if (log_lvl) console.error(`❌ [Trace] load_ae_obj_id: Cache access error:`, e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 2. SLOW PATH: Wait for API
|
||||||
|
if (log_lvl) console.log(`🚀 [Trace] load_ae_obj_id: Proceeding to API path for id=${event_session_id}`);
|
||||||
return await _refresh_session_id_background({ api_cfg, event_session_id, view, try_cache, inc_file_li, inc_all_file_li, inc_presentation_li, inc_presenter_li, enabled, hidden, limit, offset, log_lvl });
|
return await _refresh_session_id_background({ api_cfg, event_session_id, view, try_cache, inc_file_li, inc_all_file_li, inc_presentation_li, inc_presenter_li, enabled, hidden, limit, offset, log_lvl });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Internal background refresh for a single session
|
||||||
|
*/
|
||||||
async function _refresh_session_id_background({ api_cfg, event_session_id, view, try_cache, inc_file_li, inc_all_file_li, inc_presentation_li, inc_presenter_li, enabled, hidden, limit, offset, log_lvl }: any) {
|
async function _refresh_session_id_background({ api_cfg, event_session_id, view, try_cache, inc_file_li, inc_all_file_li, inc_presentation_li, inc_presenter_li, enabled, hidden, limit, offset, log_lvl }: any) {
|
||||||
if (typeof navigator !== 'undefined' && !navigator.onLine) return null;
|
if (typeof navigator !== 'undefined' && !navigator.onLine) return null;
|
||||||
try {
|
try {
|
||||||
|
if (log_lvl) console.log(`📡 [Trace] _refresh_session_id: API Fetching id=${event_session_id}`);
|
||||||
const result = await api.get_ae_obj_v3({ api_cfg, obj_type: 'event_session', obj_id: event_session_id, view, log_lvl });
|
const result = await api.get_ae_obj_v3({ api_cfg, obj_type: 'event_session', obj_id: event_session_id, view, log_lvl });
|
||||||
|
|
||||||
if (result) {
|
if (result) {
|
||||||
const processed = await process_ae_obj__event_session_props({ obj_li: [result], log_lvl });
|
const processed = await process_ae_obj__event_session_props({ obj_li: [result], log_lvl });
|
||||||
const processed_obj = processed[0];
|
const processed_obj = processed[0];
|
||||||
|
|
||||||
|
if (log_lvl) console.log(`📦 [Trace] _refresh_session_id: Received from API (id=${processed_obj.id})`);
|
||||||
|
|
||||||
if (try_cache) {
|
if (try_cache) {
|
||||||
await db_save_ae_obj_li__ae_obj({ db_instance: db_events, table_name: 'session', obj_li: [processed_obj], properties_to_save, log_lvl });
|
await db_save_ae_obj_li__ae_obj({ db_instance: db_events, table_name: 'session', obj_li: [processed_obj], properties_to_save, log_lvl });
|
||||||
|
if (log_lvl) console.log(`💾 [Trace] _refresh_session_id: Saved to IDB cache.`);
|
||||||
}
|
}
|
||||||
return await _handle_nested_loads(processed_obj, { api_cfg, inc_file_li, inc_all_file_li, inc_presentation_li, inc_presenter_li, enabled, hidden, limit, offset, try_cache: false, log_lvl });
|
return await _handle_nested_loads(processed_obj, { api_cfg, inc_file_li, inc_all_file_li, inc_presentation_li, inc_presenter_li, enabled, hidden, limit, offset, try_cache: false, log_lvl });
|
||||||
}
|
}
|
||||||
} catch (e) {}
|
} catch (e) {
|
||||||
|
if (log_lvl) console.error(`❌ [Trace] _refresh_session_id: API error for id=${event_session_id}:`, e);
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper to handle nested collection loads for a session
|
||||||
|
*/
|
||||||
async function _handle_nested_loads(session_obj: any, { api_cfg, inc_file_li, inc_all_file_li, inc_presentation_li, inc_presenter_li, enabled, hidden, limit, offset, try_cache, log_lvl }: any) {
|
async function _handle_nested_loads(session_obj: any, { api_cfg, inc_file_li, inc_all_file_li, inc_presentation_li, inc_presenter_li, enabled, hidden, limit, offset, try_cache, log_lvl }: any) {
|
||||||
const current_session_id = session_obj.id || session_obj.event_session_id;
|
const current_session_id = session_obj.id || session_obj.event_session_id;
|
||||||
if (!current_session_id) return session_obj;
|
if (!current_session_id) return session_obj;
|
||||||
|
|
||||||
const tasks = [];
|
const tasks = [];
|
||||||
if (inc_file_li) {
|
if (inc_file_li) {
|
||||||
tasks.push(load_ae_obj_li__event_file({ api_cfg, for_obj_type: 'event_session', for_obj_id: current_session_id, enabled, limit: 15, try_cache, log_lvl }).then(res => session_obj.event_file_li = res));
|
tasks.push(load_ae_obj_li__event_file({
|
||||||
|
api_cfg, for_obj_type: 'event_session', for_obj_id: current_session_id,
|
||||||
|
enabled, limit: 15, try_cache, log_lvl
|
||||||
|
}).then(res => session_obj.event_file_li = res));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (inc_presentation_li) {
|
if (inc_presentation_li) {
|
||||||
tasks.push(load_ae_obj_li__event_presentation({ api_cfg, for_obj_type: 'event_session', for_obj_id: current_session_id, inc_file_li: inc_all_file_li, inc_presenter_li, enabled, hidden, limit, offset, try_cache, log_lvl }).then(res => session_obj.event_presentation_li = res));
|
tasks.push(load_ae_obj_li__event_presentation({
|
||||||
|
api_cfg, for_obj_type: 'event_session', for_obj_id: current_session_id,
|
||||||
|
inc_file_li: inc_all_file_li, inc_presenter_li, enabled, hidden, limit, offset, try_cache, log_lvl
|
||||||
|
}).then(res => session_obj.event_presentation_li = res));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tasks.length > 0) await Promise.all(tasks);
|
if (tasks.length > 0) await Promise.all(tasks);
|
||||||
return session_obj;
|
return session_obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Updated 2026-01-30: Robust Cache Lookups with Tracing
|
||||||
export async function load_ae_obj_li__event_session({
|
export async function load_ae_obj_li__event_session({
|
||||||
api_cfg,
|
api_cfg,
|
||||||
for_obj_type = 'event',
|
for_obj_type = 'event',
|
||||||
@@ -131,17 +166,32 @@ export async function load_ae_obj_li__event_session({
|
|||||||
log_lvl?: number;
|
log_lvl?: number;
|
||||||
}): Promise<ae_EventSession[]> {
|
}): Promise<ae_EventSession[]> {
|
||||||
if (log_lvl) {
|
if (log_lvl) {
|
||||||
console.log(`*** load_ae_obj_li__event_session() *** [V3] for=${for_obj_type}:${for_obj_id} (SWR)`);
|
console.log(`🔎 [Trace] load_ae_obj_li__event_session: START (for=${for_obj_type}:${for_obj_id}, try_cache=${try_cache})`);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (try_cache) {
|
if (try_cache) {
|
||||||
try {
|
try {
|
||||||
const cached_li = await db_events.session.where('event_location_id').equals(for_obj_id).toArray();
|
// Robust lookup logic
|
||||||
|
let query;
|
||||||
|
if (for_obj_type === 'event_location') query = db_events.session.where('event_location_id').equals(for_obj_id);
|
||||||
|
else if (for_obj_type === 'event') query = db_events.session.where('event_id').equals(for_obj_id);
|
||||||
|
else query = db_events.session.where('for_id').equals(for_obj_id);
|
||||||
|
|
||||||
|
const cached_li = await query.toArray();
|
||||||
|
|
||||||
if (cached_li && cached_li.length > 0) {
|
if (cached_li && cached_li.length > 0) {
|
||||||
_refresh_session_li_background({ api_cfg, for_obj_type, for_obj_id, inc_file_li, inc_all_file_li, inc_presentation_li, inc_presenter_li, enabled, hidden, limit, offset, order_by_li, try_cache, log_lvl: 0 });
|
if (log_lvl) console.log(`✅ [Trace] load_ae_obj_li: CACHE HIT (${cached_li.length} items).`);
|
||||||
|
|
||||||
|
// Background refresh (non-blocking)
|
||||||
|
_refresh_session_li_background({ api_cfg, for_obj_type, for_obj_id, inc_file_li, inc_all_file_li, inc_presentation_li, inc_presenter_li, enabled, hidden, limit, offset, order_by_li, try_cache, log_lvl: log_lvl > 1 ? log_lvl : 0 });
|
||||||
|
|
||||||
return cached_li;
|
return cached_li;
|
||||||
|
} else if (log_lvl) {
|
||||||
|
console.log(`⏳ [Trace] load_ae_obj_li: CACHE MISS for type=${for_obj_type} id=${for_obj_id}`);
|
||||||
}
|
}
|
||||||
} catch (e) {}
|
} catch (e) {
|
||||||
|
if (log_lvl) console.error(`❌ [Trace] load_ae_obj_li: Cache access error:`, e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return await _refresh_session_li_background({ api_cfg, for_obj_type, for_obj_id, inc_file_li, inc_all_file_li, inc_presentation_li, inc_presenter_li, enabled, hidden, limit, offset, order_by_li, try_cache, log_lvl });
|
return await _refresh_session_li_background({ api_cfg, for_obj_type, for_obj_id, inc_file_li, inc_all_file_li, inc_presentation_li, inc_presenter_li, enabled, hidden, limit, offset, order_by_li, try_cache, log_lvl });
|
||||||
@@ -150,15 +200,22 @@ export async function load_ae_obj_li__event_session({
|
|||||||
async function _refresh_session_li_background({ api_cfg, for_obj_type, for_obj_id, inc_file_li, inc_all_file_li, inc_presentation_li, inc_presenter_li, enabled, hidden, limit, offset, order_by_li, try_cache, log_lvl }: any) {
|
async function _refresh_session_li_background({ api_cfg, for_obj_type, for_obj_id, inc_file_li, inc_all_file_li, inc_presentation_li, inc_presenter_li, enabled, hidden, limit, offset, order_by_li, try_cache, log_lvl }: any) {
|
||||||
if (typeof navigator !== 'undefined' && !navigator.onLine) return [];
|
if (typeof navigator !== 'undefined' && !navigator.onLine) return [];
|
||||||
try {
|
try {
|
||||||
|
if (log_lvl) console.log(`📡 [Trace] _refresh_session_li: API Fetching for=${for_obj_type}:${for_obj_id}`);
|
||||||
const result_li = await api.get_ae_obj_li_v3({ api_cfg, obj_type: 'event_session', for_obj_type, for_obj_id, enabled, hidden, limit, offset, order_by_li, log_lvl });
|
const result_li = await api.get_ae_obj_li_v3({ api_cfg, obj_type: 'event_session', for_obj_type, for_obj_id, enabled, hidden, limit, offset, order_by_li, log_lvl });
|
||||||
|
|
||||||
if (result_li) {
|
if (result_li) {
|
||||||
const processed = await process_ae_obj__event_session_props({ obj_li: result_li, log_lvl });
|
const processed = await process_ae_obj__event_session_props({ obj_li: result_li, log_lvl });
|
||||||
|
if (log_lvl) console.log(`📦 [Trace] _refresh_session_li: Received ${processed.length} items from API.`);
|
||||||
|
|
||||||
if (try_cache) {
|
if (try_cache) {
|
||||||
await db_save_ae_obj_li__ae_obj({ db_instance: db_events, table_name: 'session', obj_li: processed, properties_to_save, log_lvl });
|
await db_save_ae_obj_li__ae_obj({ db_instance: db_events, table_name: 'session', obj_li: processed, properties_to_save, log_lvl });
|
||||||
|
if (log_lvl) console.log(`💾 [Trace] _refresh_session_li: Saved to IDB cache.`);
|
||||||
}
|
}
|
||||||
return processed;
|
return processed;
|
||||||
}
|
}
|
||||||
} catch (e) {}
|
} catch (e) {
|
||||||
|
if (log_lvl) console.error(`❌ [Trace] _refresh_session_li: API error:`, e);
|
||||||
|
}
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
import {
|
import {
|
||||||
// Brain,
|
// Brain,
|
||||||
// House, Library,
|
// House, Library,
|
||||||
|
LoaderCircle,
|
||||||
// RefreshCw,
|
// RefreshCw,
|
||||||
Satellite
|
Satellite
|
||||||
} from '@lucide/svelte';
|
} from '@lucide/svelte';
|
||||||
@@ -130,15 +131,11 @@
|
|||||||
// Event
|
// Event
|
||||||
let lq__event_obj = $derived(
|
let lq__event_obj = $derived(
|
||||||
liveQuery(async () => {
|
liveQuery(async () => {
|
||||||
if (log_lvl) {
|
if (log_lvl > 1) {
|
||||||
console.log(`lq__event_obj: event_id = ${$events_slct?.event_id}`);
|
console.log(`lq__event_obj: event_id = ${$events_slct?.event_id}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
let results = await db_events.event.get($events_slct?.event_id ?? ''); // null or undefined does not reset things like '' does
|
let results = await db_events.event.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
|
// Check if results are different than the current session version stored under $events_slct
|
||||||
if ($events_slct.event_obj && results) {
|
if ($events_slct.event_obj && results) {
|
||||||
@@ -150,12 +147,6 @@
|
|||||||
$events_slct.event_obj
|
$events_slct.event_obj
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
if (log_lvl) {
|
|
||||||
console.log(
|
|
||||||
`Session slct stored version has not changed for ID = ${$events_slct.event_id}`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -166,32 +157,12 @@
|
|||||||
// Event Device
|
// Event Device
|
||||||
let lq__event_device_obj = $derived(
|
let lq__event_device_obj = $derived(
|
||||||
liveQuery(async () => {
|
liveQuery(async () => {
|
||||||
if (log_lvl) {
|
|
||||||
console.log(
|
|
||||||
`lq__event_device_obj: event_device_id = ${$events_slct?.event_device_id}`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
let results = await db_events.device.get($events_slct.event_device_id);
|
let results = await db_events.device.get($events_slct.event_device_id);
|
||||||
if (log_lvl) {
|
|
||||||
console.log(`lq__event_device_obj: results = `, results);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if results are different than the current session version stored under $events_slct
|
// Check if results are different than the current session version stored under $events_slct
|
||||||
if ($events_slct.event_device_obj && results) {
|
if ($events_slct.event_device_obj && results) {
|
||||||
if (JSON.stringify($events_slct.event_device_obj) !== JSON.stringify(results)) {
|
if (JSON.stringify($events_slct.event_device_obj) !== JSON.stringify(results)) {
|
||||||
$events_slct.event_device_obj = { ...results };
|
$events_slct.event_device_obj = { ...results };
|
||||||
if (log_lvl) {
|
|
||||||
console.log(
|
|
||||||
`Device slct stored version has changed for ID = ${$events_slct.event_device_id}`,
|
|
||||||
$events_slct.event_device_obj
|
|
||||||
);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (log_lvl > 1) {
|
|
||||||
console.log(
|
|
||||||
`Device slct stored version has not changed for ID = ${$events_slct.event_device_id}`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -247,56 +218,15 @@
|
|||||||
// Event Session
|
// Event Session
|
||||||
let lq__event_session_obj = $derived(
|
let lq__event_session_obj = $derived(
|
||||||
liveQuery(async () => {
|
liveQuery(async () => {
|
||||||
|
if (log_lvl) console.log(`🔍 [Trace] Launcher Layout LQ: Fetching session_id=${$events_slct.event_session_id}`);
|
||||||
let results = await db_events.session.get($events_slct.event_session_id);
|
let results = await db_events.session.get($events_slct.event_session_id);
|
||||||
|
if (log_lvl) console.log(`📦 [Trace] Launcher Layout LQ: Result=`, results?.name || 'NOT FOUND');
|
||||||
return results;
|
return results;
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
// let lq__event_session_obj_li = $derived(liveQuery(async () => {
|
|
||||||
// let results = await db_events.session
|
|
||||||
// // .bulkGet(event_session_id_li);
|
|
||||||
// .where('event_location_id')
|
|
||||||
// .equals($events_slct.event_location_id)
|
|
||||||
// .sortBy('name');
|
|
||||||
|
|
||||||
// return results;
|
|
||||||
// }));
|
|
||||||
|
|
||||||
// let lq__event_session_obj_li = $derived(liveQuery(async () => {
|
|
||||||
// let results = await db_events.session
|
|
||||||
// .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(
|
let lq__event_session_obj_li = $derived(
|
||||||
liveQuery(async () => {
|
liveQuery(async () => {
|
||||||
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) {
|
if ($events_sess.session_li_trigger && !$events_sess?.session_li) {
|
||||||
$events_sess.session_li = null;
|
$events_sess.session_li = null;
|
||||||
$events_sess.session_li_trigger = false;
|
$events_sess.session_li_trigger = false;
|
||||||
@@ -305,57 +235,18 @@
|
|||||||
let results;
|
let results;
|
||||||
|
|
||||||
if ($events_sess?.session_li && $events_sess?.session_li?.length) {
|
if ($events_sess?.session_li && $events_sess?.session_li?.length) {
|
||||||
// if (log_lvl) {
|
// Pre-filtered list in session storage
|
||||||
// console.log(`LQ - Using $events_sess.session_li to get event sessions.`);
|
|
||||||
// }
|
|
||||||
// // $events_sess.session_li_trigger = false;
|
|
||||||
// let event_session_id_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 = event_session_obj.event_session_id;
|
|
||||||
// event_session_id_li.push(event_session_id);
|
|
||||||
// }
|
|
||||||
// // let event_session_id_li = tmp_li;
|
|
||||||
// results = await db_events.session
|
|
||||||
// .bulkGet(event_session_id_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.session
|
|
||||||
// // .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.session
|
|
||||||
// .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 ($events_slct.event_location_id) {
|
} else if ($events_slct.event_location_id) {
|
||||||
if (log_lvl) {
|
if (log_lvl > 1) {
|
||||||
// console.log(`$lq__event_obj.cfg_json = `, $lq__event_obj?.cfg_json);
|
|
||||||
console.log(
|
console.log(
|
||||||
`LQ - Using default sort for Event Session list event_id: ${$events_slct?.event_id}`
|
`LQ - Using default sort for Event Session list location_id: ${$events_slct?.event_location_id}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
results = await db_events.session
|
results = await db_events.session
|
||||||
.where('event_location_id')
|
.where('event_location_id')
|
||||||
.equals($events_slct.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()
|
.reverse()
|
||||||
.sortBy('name');
|
.sortBy('name');
|
||||||
// .sortBy('tmp_sort_1');
|
|
||||||
// .sortBy('updated_on');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if results are different than the current session version stored under $events_slct
|
// Check if results are different than the current session version stored under $events_slct
|
||||||
@@ -364,18 +255,6 @@
|
|||||||
JSON.stringify($events_slct.event_session_obj_li) !== JSON.stringify(results)
|
JSON.stringify($events_slct.event_session_obj_li) !== JSON.stringify(results)
|
||||||
) {
|
) {
|
||||||
$events_slct.event_session_obj_li = [...(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;
|
return results;
|
||||||
@@ -401,7 +280,6 @@
|
|||||||
|
|
||||||
/* *** BEGIN *** Handle WebSocket events */
|
/* *** BEGIN *** Handle WebSocket events */
|
||||||
function handle_ws_conn(ws_conn_status: any) {
|
function handle_ws_conn(ws_conn_status: any) {
|
||||||
log_lvl = 1;
|
|
||||||
if (log_lvl) {
|
if (log_lvl) {
|
||||||
console.log('*** handle_ws_conn() ***', ws_conn_status);
|
console.log('*** handle_ws_conn() ***', ws_conn_status);
|
||||||
}
|
}
|
||||||
@@ -419,7 +297,6 @@
|
|||||||
// This client received a WebSocket message.
|
// This client received a WebSocket message.
|
||||||
// When this is called something seems to go wrong. It creates a loop when connected.
|
// When this is called something seems to go wrong. It creates a loop when connected.
|
||||||
function handle_ws_recv(ws_recv_status: any) {
|
function handle_ws_recv(ws_recv_status: any) {
|
||||||
log_lvl = 1;
|
|
||||||
if (log_lvl) {
|
if (log_lvl) {
|
||||||
console.log('*** handle_ws_recv() ***', ws_recv_status);
|
console.log('*** handle_ws_recv() ***', ws_recv_status);
|
||||||
}
|
}
|
||||||
@@ -447,46 +324,21 @@
|
|||||||
if (log_lvl) {
|
if (log_lvl) {
|
||||||
console.log(`ae_load: ${obj_type} ${obj_id}`);
|
console.log(`ae_load: ${obj_type} ${obj_id}`);
|
||||||
}
|
}
|
||||||
if (log_lvl > 1) {
|
|
||||||
console.log(cmd);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (obj_type == 'event_session') {
|
if (obj_type == 'event_session') {
|
||||||
$events_slct.event_session_id = obj_id;
|
$events_slct.event_session_id = obj_id;
|
||||||
// $slct_trigger = 'event_session';
|
|
||||||
// $events_sess.launcher.show_launcher_message = false;
|
|
||||||
|
|
||||||
// data.url.searchParams.set('session_id', $events_slct.event_session_id);
|
if (log_lvl) console.log(`[WS Trace] Current URL`, data.url);
|
||||||
|
|
||||||
// let new_url = data.url.toString();
|
|
||||||
// console.log(new_url);
|
|
||||||
// goto(new_url, {replaceState: false});
|
|
||||||
|
|
||||||
// ae_promises.slct_event_session_id = events_func.load_ae_obj_id__event_session({
|
|
||||||
// api_cfg: $ae_api,
|
|
||||||
// event_session_id: $events_slct.event_session_id,
|
|
||||||
// inc_file_li: true,
|
|
||||||
// inc_presentation_li: true,
|
|
||||||
// try_cache: true,
|
|
||||||
// log_lvl: log_lvl
|
|
||||||
// })
|
|
||||||
// .then(async (load_results) => {
|
|
||||||
|
|
||||||
// });
|
|
||||||
// tick();
|
|
||||||
console.log(`Current URL`, data.url);
|
|
||||||
let new_url = new URL(data.url);
|
let new_url = new URL(data.url);
|
||||||
new_url.pathname = `/events/${$lq__event_session_obj?.event_id}/launcher/${$lq__event_session_obj?.event_location_id}`;
|
new_url.pathname = `/events/${$lq__event_session_obj?.event_id}/launcher/${$lq__event_session_obj?.event_location_id}`;
|
||||||
new_url.searchParams.set('session_id', $events_slct.event_session_id);
|
new_url.searchParams.set('session_id', $events_slct.event_session_id);
|
||||||
console.log(`New URL: ${new_url}`);
|
if (log_lvl) console.log(`[WS Trace] New URL: ${new_url}`);
|
||||||
let new_url_str = new_url.toString();
|
let new_url_str = new_url.toString();
|
||||||
goto(new_url_str, { replaceState: false });
|
goto(new_url_str, { replaceState: false });
|
||||||
}
|
}
|
||||||
// AE Download (event file ID)
|
// AE Download (event file ID)
|
||||||
// This does not yet work with the native app caching.
|
// This does not yet work with the native app caching.
|
||||||
} else if (cmd.startsWith('ae_download:')) {
|
} else if (cmd.startsWith('ae_download:')) {
|
||||||
log_lvl = 1;
|
|
||||||
|
|
||||||
let cmd_parts = cmd.split(':');
|
let cmd_parts = cmd.split(':');
|
||||||
let obj_parts = cmd_parts[1].split('=');
|
let obj_parts = cmd_parts[1].split('=');
|
||||||
let obj_type = obj_parts[0];
|
let obj_type = obj_parts[0];
|
||||||
@@ -499,9 +351,6 @@
|
|||||||
`ae_download: ${obj_type} ${obj_id} ${obj_filename} ${obj_extension}`
|
`ae_download: ${obj_type} ${obj_id} ${obj_filename} ${obj_extension}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (log_lvl > 1) {
|
|
||||||
console.log(cmd);
|
|
||||||
}
|
|
||||||
|
|
||||||
ae_promises[obj_id] = api.download_hosted_file({
|
ae_promises[obj_id] = api.download_hosted_file({
|
||||||
api_cfg: $ae_api,
|
api_cfg: $ae_api,
|
||||||
@@ -522,9 +371,6 @@
|
|||||||
if (log_lvl) {
|
if (log_lvl) {
|
||||||
console.log(`ae_open: ${obj_type} ${obj_id}`);
|
console.log(`ae_open: ${obj_type} ${obj_id}`);
|
||||||
}
|
}
|
||||||
if (log_lvl > 1) {
|
|
||||||
console.log(cmd);
|
|
||||||
}
|
|
||||||
|
|
||||||
// NOTE: This is not finished yet.
|
// NOTE: This is not finished yet.
|
||||||
if (obj_type == 'event_file') {
|
if (obj_type == 'event_file') {
|
||||||
@@ -541,45 +387,18 @@
|
|||||||
$events_sess.launcher.modal__title = $events_sess.launcher.modal__title ?? '*';
|
$events_sess.launcher.modal__title = $events_sess.launcher.modal__title ?? '*';
|
||||||
|
|
||||||
$events_sess.launcher.modal__open_event_file_id = $events_slct.event_file_id;
|
$events_sess.launcher.modal__open_event_file_id = $events_slct.event_file_id;
|
||||||
// $events_sess.launcher.modal__event_file_obj = event_file_obj;
|
|
||||||
|
|
||||||
// $events_sess.launcher.modal__img_src = `/event/file/${event_file_obj.event_file_id}/download`;
|
|
||||||
|
|
||||||
// $events_slct.event_file_obj = event_file_obj;
|
|
||||||
|
|
||||||
// $slct_trigger = 'event_file';
|
|
||||||
// $events_sess.launcher.event_file_open.open_status = 'open';
|
|
||||||
|
|
||||||
// $events_sess.launcher.show_launcher_message = false;
|
|
||||||
// NOTE: This is not finished yet.
|
|
||||||
// This should now trigger the Svelte component for the event launcher file container. Currently this does nothing. Need to bind to something or use the "events_sess.launcher" object?
|
|
||||||
|
|
||||||
// let as_modal_result = open_event_file_as_modal({event_file_id: event_file_obj.event_file_id, method: 'modal', filename: event_file_obj.filename, extension: event_file_obj.extension, modal_title: poster_title});
|
|
||||||
// if (as_modal_result) {
|
|
||||||
// console.log($events_sess.launcher);
|
|
||||||
// console.log(event_file_obj);
|
|
||||||
// events_sess.launcher.set({...$events_sess.launcher, ...as_modal_result});
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
// NOTE: This is not finished yet.
|
// NOTE: This is not finished yet.
|
||||||
|
|
||||||
// AE Close (event file modal)
|
// AE Close (event file modal)
|
||||||
} else if (cmd.startsWith('ae_close:')) {
|
} else if (cmd.startsWith('ae_close:')) {
|
||||||
console.log();
|
|
||||||
let cmd_parts = cmd.split(':');
|
let cmd_parts = cmd.split(':');
|
||||||
let what = cmd_parts[1];
|
let what = cmd_parts[1];
|
||||||
// let obj_type = obj_parts[0];
|
|
||||||
// let obj_id = obj_parts[1];
|
|
||||||
|
|
||||||
if (what == 'event_file_modal') {
|
if (what == 'event_file_modal') {
|
||||||
$events_sess.launcher.modal__title = '';
|
$events_sess.launcher.modal__title = '';
|
||||||
$events_sess.launcher.modal__open_event_file_id = null;
|
$events_sess.launcher.modal__open_event_file_id = null;
|
||||||
$events_sess.launcher.modal__event_file_obj = null;
|
$events_sess.launcher.modal__event_file_obj = null;
|
||||||
|
|
||||||
// $events_sess.launcher.modal__img_src = null;
|
|
||||||
// $events_slct.event_file_id = null;
|
|
||||||
// $slct_trigger = 'event_file';
|
|
||||||
// $events_sess.launcher.event_file_open.open_status = 'close';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
clearInterval(idle_timer_interval);
|
clearInterval(idle_timer_interval);
|
||||||
@@ -588,64 +407,25 @@
|
|||||||
|
|
||||||
// WORKING! AE Refresh (now)
|
// WORKING! AE Refresh (now)
|
||||||
} else if (cmd.startsWith('ae_refresh:')) {
|
} else if (cmd.startsWith('ae_refresh:')) {
|
||||||
console.log();
|
|
||||||
let cmd_parts = cmd.split(':');
|
let cmd_parts = cmd.split(':');
|
||||||
let what = cmd_parts[1];
|
let what = cmd_parts[1];
|
||||||
// let obj_type = obj_parts[0];
|
|
||||||
// let obj_id = obj_parts[1];
|
|
||||||
|
|
||||||
if (what == 'now') {
|
if (what == 'now') {
|
||||||
// window.localStorage.clear();
|
|
||||||
location.reload();
|
location.reload();
|
||||||
} else {
|
|
||||||
console.log('OOPS? What went wrong?');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
if (log_lvl) {
|
|
||||||
console.log('Unrecognized WS event received. Probably just a message.');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// This client sent a WebSocket message.
|
// This client sent a WebSocket message.
|
||||||
function handle_ws_sent(ws_sent_status: any) {
|
function handle_ws_sent(ws_sent_status: any) {
|
||||||
console.log('*** handle_ws_sent() ***', ws_sent_status);
|
if (log_lvl) console.log('*** handle_ws_sent() ***', ws_sent_status);
|
||||||
let command = ws_sent_status.cmd;
|
|
||||||
console.log(`CMD: ${command}`);
|
|
||||||
|
|
||||||
$events_sess.launcher.controller_cmd = null;
|
$events_sess.launcher.controller_cmd = null;
|
||||||
$events_sess.launcher.controller_trigger_send = null;
|
$events_sess.launcher.controller_trigger_send = null;
|
||||||
}
|
}
|
||||||
/* *** END *** Handle WebSocket events */
|
/* *** END *** Handle WebSocket events */
|
||||||
|
|
||||||
$effect(() => {
|
|
||||||
if (
|
|
||||||
$slct_trigger == 'event_file' &&
|
|
||||||
$events_slct.event_file_id &&
|
|
||||||
$events_sess.launcher?.event_file_open.open_status == 'open'
|
|
||||||
) {
|
|
||||||
$slct_trigger = null;
|
|
||||||
// handle_event_file_open();
|
|
||||||
}
|
|
||||||
|
|
||||||
// if ($events_sess.launcher.trigger_open_file) {
|
|
||||||
// $events_sess.launcher.trigger_modal_open_file = false;
|
|
||||||
// handle_event_file_open();
|
|
||||||
// }
|
|
||||||
});
|
|
||||||
|
|
||||||
$effect(() => {
|
|
||||||
if (
|
|
||||||
$slct_trigger == 'event_file' &&
|
|
||||||
$events_sess.launcher?.event_file_open.open_status == 'close'
|
|
||||||
) {
|
|
||||||
$slct_trigger = null;
|
|
||||||
// Assuming just event file modal for now
|
|
||||||
// handle_event_file_close();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$effect(() => {
|
$effect(() => {
|
||||||
if (trigger_handle_ws_conn) {
|
if (trigger_handle_ws_conn) {
|
||||||
let ws_conn_status = trigger_handle_ws_conn; // This a string status
|
let ws_conn_status = trigger_handle_ws_conn; // This a string status
|
||||||
@@ -670,79 +450,33 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
async function handle_event_file_open() {
|
|
||||||
let event_file_obj;
|
|
||||||
if ($events_slct.event_file_obj && $events_slct.event_file_obj.event_file_id) {
|
|
||||||
console.log($events_slct.event_file_obj);
|
|
||||||
event_file_obj = $events_slct.event_file_obj;
|
|
||||||
} else {
|
|
||||||
console.log('Need to look up the event file details first.');
|
|
||||||
// let get_event_file_obj_result = await get_event_file_obj({event_file_id: $events_slct.event_file_id});
|
|
||||||
|
|
||||||
// event_file_obj = get_event_file_obj_result;
|
|
||||||
// console.log(event_file_obj);
|
|
||||||
}
|
|
||||||
|
|
||||||
// let as_modal_result = open_event_file_as_modal({
|
|
||||||
// event_file_id: event_file_obj.event_file_id,
|
|
||||||
// filename: event_file_obj.filename,
|
|
||||||
// extension: event_file_obj.extension,
|
|
||||||
// modal_title: ae_util.shorten_filename(event_file_obj.filename, 75)
|
|
||||||
// });
|
|
||||||
|
|
||||||
// if (as_modal_result) {
|
|
||||||
// console.log($events_sess.launcher);
|
|
||||||
|
|
||||||
// events_sess.launcher.set({...$events_sess.launcher, ...as_modal_result});
|
|
||||||
// // $events_sess.launcher.event_file_open = as_modal_result;
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
async function handle_event_file_close() {
|
|
||||||
// let as_modal_result = close_event_file_as_modal({});
|
|
||||||
|
|
||||||
// if (as_modal_result) {
|
|
||||||
// events_sess.update(n => {
|
|
||||||
// n.launcher = { ...n.launcher, ...as_modal_result };
|
|
||||||
// return n;
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$events_loc.launcher.idle_timer) {
|
if (!$events_loc.launcher.idle_timer) {
|
||||||
$events_loc.launcher.idle_timer = 5 * 60 * 1000;
|
$events_loc.launcher.idle_timer = 5 * 60 * 1000;
|
||||||
}
|
}
|
||||||
// $events_loc.launcher.idle_timer = .25 * 60 * 1000;
|
|
||||||
if (!$events_loc.launcher.idle_cycle) {
|
if (!$events_loc.launcher.idle_cycle) {
|
||||||
$events_loc.launcher.idle_cycle = 5 * 1000;
|
$events_loc.launcher.idle_cycle = 5 * 1000;
|
||||||
}
|
}
|
||||||
if (!$events_loc.launcher.idle_loop_period) {
|
if (!$events_loc.launcher.idle_loop_period) {
|
||||||
$events_loc.launcher.idle_loop_period = 3 * 60 * 1000;
|
$events_loc.launcher.idle_loop_period = 3 * 60 * 1000;
|
||||||
}
|
}
|
||||||
// Safer to run this once the component has mounted and initialized???
|
|
||||||
listen({
|
listen({
|
||||||
timer: $events_loc.launcher.idle_timer, // $events_loc.launcher.idle_timer ?? 30 * 60 * 1000,
|
timer: $events_loc.launcher.idle_timer,
|
||||||
cycle: $events_loc.launcher.idle_cycle ?? 5 * 1000 // How frequently the idle status is checked
|
cycle: $events_loc.launcher.idle_cycle ?? 5 * 1000
|
||||||
});
|
});
|
||||||
|
|
||||||
let idle_timer_interval: any = $state();
|
let idle_timer_interval: any = $state();
|
||||||
// clearInterval(idle_timer_interval);
|
|
||||||
|
|
||||||
let saver_looping: boolean = $state(false);
|
let saver_looping: boolean = $state(false);
|
||||||
|
|
||||||
function handle_idle_client() {
|
function handle_idle_client() {
|
||||||
// Start the digital poster screen saver after additional idle time.
|
// Start the digital poster screen saver after additional idle time.
|
||||||
|
|
||||||
if ($lq__event_session_obj && $lq__event_session_obj?.type_code == 'poster') {
|
if ($lq__event_session_obj && $lq__event_session_obj?.type_code == 'poster') {
|
||||||
if (log_lvl) {
|
if (log_lvl) {
|
||||||
console.log(
|
console.log(
|
||||||
`Turned idle! Open poster file for poster session in ${($events_loc.launcher.idle_loop_period / 60000).toPrecision(4)} minutes.`
|
`Turned idle! Open poster file for poster session in ${($events_loc.launcher.idle_loop_period / 60000).toPrecision(4)} minutes.`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (saver_looping) {
|
if (saver_looping) return false;
|
||||||
console.log('Screen saver already looping.');
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
saver_looping = true;
|
saver_looping = true;
|
||||||
|
|
||||||
@@ -754,20 +488,11 @@
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// console.log($events_loc.launcher.screen_saver_img_kv.length());
|
|
||||||
|
|
||||||
if ($events_loc.launcher.screen_saver_img_kv) {
|
if ($events_loc.launcher.screen_saver_img_kv) {
|
||||||
console.log($events_loc.launcher.screen_saver_img_kv);
|
|
||||||
|
|
||||||
let modal_title: string = '';
|
|
||||||
|
|
||||||
const rand_index = Math.floor(
|
const rand_index = Math.floor(
|
||||||
Math.random() *
|
Math.random() *
|
||||||
Object.keys($events_loc.launcher.screen_saver_img_kv).length
|
Object.keys($events_loc.launcher.screen_saver_img_kv).length
|
||||||
);
|
);
|
||||||
if (log_lvl) {
|
|
||||||
console.log(`Random index = ${rand_index}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
let event_file_obj =
|
let event_file_obj =
|
||||||
$events_loc.launcher.screen_saver_img_kv[
|
$events_loc.launcher.screen_saver_img_kv[
|
||||||
@@ -776,41 +501,26 @@
|
|||||||
|
|
||||||
$events_slct.event_file_id = event_file_obj.event_file_id;
|
$events_slct.event_file_id = event_file_obj.event_file_id;
|
||||||
$events_slct.event_file_obj = event_file_obj;
|
$events_slct.event_file_obj = event_file_obj;
|
||||||
// $slct_trigger = 'event_file';
|
|
||||||
// $events_loc.launcher.event_file_open.open_status = 'open';
|
|
||||||
|
|
||||||
$events_sess.launcher.modal__open_event_file_id = null;
|
$events_sess.launcher.modal__open_event_file_id = null;
|
||||||
// clearInterval(idle_timer_interval);
|
|
||||||
// if (!modal_title) {
|
|
||||||
// modal_title = event_file_obj.filename;
|
|
||||||
// }
|
|
||||||
$events_sess.launcher.modal__title = event_file_obj.filename ?? '*';
|
$events_sess.launcher.modal__title = event_file_obj.filename ?? '*';
|
||||||
$events_sess.launcher.modal__open_event_file_id =
|
$events_sess.launcher.modal__open_event_file_id =
|
||||||
$events_slct.event_file_id;
|
$events_slct.event_file_id;
|
||||||
$events_sess.launcher.modal__event_file_obj = event_file_obj;
|
$events_sess.launcher.modal__event_file_obj = event_file_obj;
|
||||||
// $events_sess.launcher.modal__img_src = `/event/file/${event_file_obj.event_file_id}/download`;
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
console.log('No screen saver images found.');
|
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
$events_loc.launcher.idle_loop_period ?? 2 * 60 * 1000
|
$events_loc.launcher.idle_loop_period ?? 2 * 60 * 1000
|
||||||
);
|
);
|
||||||
// console.log('User is no longer idle???');
|
|
||||||
} else {
|
} else {
|
||||||
console.log('Not a poster session so no screen saver.');
|
|
||||||
saver_looping = false;
|
saver_looping = false;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onIdle(() => {
|
onIdle(() => {
|
||||||
// This is called when the user has gone idle for the specified time.
|
|
||||||
|
|
||||||
// alert('USER IS IDLE');
|
|
||||||
|
|
||||||
log_lvl = 1;
|
|
||||||
if (log_lvl) {
|
if (log_lvl) {
|
||||||
console.log(
|
console.log(
|
||||||
`User has gone idle after ${($events_loc.launcher?.idle_timer / 60000).toPrecision(4)} minutes.`,
|
`User has gone idle after ${($events_loc.launcher?.idle_timer / 60000).toPrecision(4)} minutes.`,
|
||||||
@@ -818,23 +528,12 @@
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
clearInterval(idle_timer_interval);
|
clearInterval(idle_timer_interval);
|
||||||
|
|
||||||
handle_idle_client();
|
handle_idle_client();
|
||||||
});
|
});
|
||||||
|
|
||||||
$effect(() => {
|
$effect(() => {
|
||||||
if ($idle) {
|
if (!$idle) {
|
||||||
// log_lvl = 1;
|
if (log_lvl > 1) {
|
||||||
// if (log_lvl) {
|
|
||||||
// console.log(`User has gone idle after ${($events_loc.launcher?.idle_timer / 60000).toPrecision(4)} minutes.`, $idle);
|
|
||||||
// }
|
|
||||||
// // clearInterval(idle_timer_interval);
|
|
||||||
// if (!saver_looping) {
|
|
||||||
// handle_idle_client();
|
|
||||||
// }
|
|
||||||
} else {
|
|
||||||
log_lvl = 1;
|
|
||||||
if (log_lvl) {
|
|
||||||
console.log(
|
console.log(
|
||||||
`User is active again after being idle. End screen saver if active.`,
|
`User is active again after being idle. End screen saver if active.`,
|
||||||
$idle
|
$idle
|
||||||
@@ -847,7 +546,6 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<svelte:head>
|
<svelte:head>
|
||||||
<!-- {ae_util.shorten_string({ string: $lq__event_obj?.name ?? '', max_length: 20, begin_length: 10, end_length: 4 })} -->
|
|
||||||
<title>
|
<title>
|
||||||
Æ:
|
Æ:
|
||||||
{$lq__event_location_obj?.name ?? '-- not set --'}
|
{$lq__event_location_obj?.name ?? '-- not set --'}
|
||||||
@@ -856,7 +554,6 @@
|
|||||||
</title>
|
</title>
|
||||||
</svelte:head>
|
</svelte:head>
|
||||||
|
|
||||||
<!-- outline-2 outline-red-500 -->
|
|
||||||
<div
|
<div
|
||||||
class="
|
class="
|
||||||
static
|
static
|
||||||
@@ -897,7 +594,6 @@
|
|||||||
}}
|
}}
|
||||||
title="Toggle Launcher menu"
|
title="Toggle Launcher menu"
|
||||||
>
|
>
|
||||||
<!-- Be sure to explain what Æ (Aether) means in the title text or similar! -->
|
|
||||||
<Satellite class="text-base mx-1 inline-block text-gray-500" />
|
<Satellite class="text-base mx-1 inline-block text-gray-500" />
|
||||||
<abbr title="Aether - Events Module Launcher">
|
<abbr title="Aether - Events Module Launcher">
|
||||||
Æ Launcher
|
Æ Launcher
|
||||||
@@ -934,7 +630,6 @@
|
|||||||
{/if}
|
{/if}
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<!-- The menu should be to the left of the main session view. -->
|
|
||||||
<div
|
<div
|
||||||
class="
|
class="
|
||||||
h-full min-w-full w-full max-w-full
|
h-full min-w-full w-full max-w-full
|
||||||
@@ -961,13 +656,6 @@
|
|||||||
"
|
"
|
||||||
class:hidden={$events_loc.launcher.hide__launcher_menu}
|
class:hidden={$events_loc.launcher.hide__launcher_menu}
|
||||||
>
|
>
|
||||||
<!-- overflow-y-auto -->
|
|
||||||
|
|
||||||
<!-- {#await $events_slct.id_li__event_location}
|
|
||||||
Loading location list... a
|
|
||||||
{:then event_location_obj_li} -->
|
|
||||||
<!-- {#if $lq__event_obj && $lq__event_location_obj_li && $lq__event_session_obj_li && event_location_obj_li && event_location_obj_li.length > 0} -->
|
|
||||||
<!-- {#if $lq__event_obj && $lq__event_location_obj_li} -->
|
|
||||||
<Launcher_menu
|
<Launcher_menu
|
||||||
data_url={data.url}
|
data_url={data.url}
|
||||||
{lq__event_obj}
|
{lq__event_obj}
|
||||||
@@ -992,14 +680,6 @@
|
|||||||
$events_sess.launcher.trigger_reload__event_location_obj_li
|
$events_sess.launcher.trigger_reload__event_location_obj_li
|
||||||
}
|
}
|
||||||
></Launcher_menu>
|
></Launcher_menu>
|
||||||
<!-- {:else}
|
|
||||||
<div class="flex flex-row items-center justify-center">
|
|
||||||
<span class="fas fa-spinner fa-spin mx-1"></span>
|
|
||||||
<span>Loading location list...</span>
|
|
||||||
</div>
|
|
||||||
{/if} -->
|
|
||||||
<!-- {/await} -->
|
|
||||||
<!-- Root: slct Location ID: {$events_slct.event_location_id ?? '-- not set --'} -->
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section
|
<section
|
||||||
@@ -1016,34 +696,24 @@
|
|||||||
overflow-y-auto
|
overflow-y-auto
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<!-- {#if $events_trigger == 'load__event_session_obj' && $events_slct.event_session_id}
|
|
||||||
<Launcher_session_view
|
|
||||||
slct_event_session_id={$events_slct.event_session_id}
|
|
||||||
|
|
||||||
lq__event_location_obj={lq__event_location_obj}
|
|
||||||
lq__event_location_obj_li={lq__event_location_obj_li}
|
|
||||||
lq__event_session_obj={lq__event_session_obj}
|
|
||||||
lq__event_session_obj_li={lq__event_session_obj_li}
|
|
||||||
>
|
|
||||||
</Launcher_session_view>
|
|
||||||
{/if} -->
|
|
||||||
<!-- {$lq__event_session_obj?.name} -->
|
|
||||||
|
|
||||||
{#if !$events_slct.event_location_id}
|
{#if !$events_slct.event_location_id}
|
||||||
<div class="flex flex-row items-center justify-center">
|
<div class="flex flex-row items-center justify-center p-8 opacity-50">
|
||||||
<span class="fas fa-exclamation mx-1"></span>
|
<span class="fas fa-map-marker-alt mx-2 text-2xl"></span>
|
||||||
<span>You must select a location first</span>
|
<span>Please select a location from the menu</span>
|
||||||
<span class="fas fa-exclamation mx-1"></span>
|
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<!-- Using the loading__session_id_status is kind of a hacky way to determine if the session is still loading or not. -->
|
|
||||||
{#if $events_slct.event_session_id && $lq__event_session_obj}
|
{#if $events_slct.event_session_id && $lq__event_session_obj}
|
||||||
<Launcher_session_view
|
<Launcher_session_view
|
||||||
bind:slct__event_session_id={$events_slct.event_session_id}
|
bind:slct__event_session_id={$events_slct.event_session_id}
|
||||||
{lq__event_session_obj}
|
{lq__event_session_obj}
|
||||||
bind:type_code={$lq__event_session_obj.type_code}
|
bind:type_code={$lq__event_session_obj.type_code}
|
||||||
></Launcher_session_view>
|
></Launcher_session_view>
|
||||||
|
{:else if $events_slct.event_session_id}
|
||||||
|
<div class="flex flex-col items-center justify-center p-8 opacity-50">
|
||||||
|
<LoaderCircle class="animate-spin mb-2" />
|
||||||
|
<span>Loading session details...</span>
|
||||||
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
@@ -1051,8 +721,6 @@
|
|||||||
{@render children?.()}
|
{@render children?.()}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- hover:z-20 -->
|
|
||||||
<!-- hover:scale-105 -->
|
|
||||||
<footer
|
<footer
|
||||||
id="Main-Footer"
|
id="Main-Footer"
|
||||||
class:hidden={$events_loc.launcher.hide__launcher_footer}
|
class:hidden={$events_loc.launcher.hide__launcher_footer}
|
||||||
@@ -1075,10 +743,6 @@
|
|||||||
transition-all duration-1000
|
transition-all duration-1000
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<!-- <div>
|
|
||||||
[Help]
|
|
||||||
</div> -->
|
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="slct_location_name transition-all duration-1000"
|
class="slct_location_name transition-all duration-1000"
|
||||||
title="Location ID: {$lq__event_location_obj?.event_location_id} Name: {$lq__event_location_obj?.name} | Device ID: {$lq__event_device_obj?.event_device_id} Name: {$lq__event_device_obj?.name}"
|
title="Location ID: {$lq__event_location_obj?.event_location_id} Name: {$lq__event_location_obj?.name} | Device ID: {$lq__event_device_obj?.event_device_id} Name: {$lq__event_device_obj?.name}"
|
||||||
@@ -1115,49 +779,12 @@
|
|||||||
{/if}
|
{/if}
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<!-- Why does this not behave consistently???? Spent a few hours trying to make it work right. -->
|
|
||||||
<!-- {#if online.current}
|
|
||||||
online
|
|
||||||
{:else}
|
|
||||||
offline
|
|
||||||
{/if} -->
|
|
||||||
|
|
||||||
<!-- class:preset-tonal-warning={!online?.current} -->
|
|
||||||
<!-- class:preset-tonal-success={online?.current} -->
|
|
||||||
<span
|
<span
|
||||||
class="group px-1 rounded-md transition-all duration-1000"
|
class="group px-1 rounded-md transition-all duration-1000"
|
||||||
title="Online status = {online?.current}"
|
title="Online status = {online?.current}"
|
||||||
>
|
>
|
||||||
<!-- {@html online?.current ? '<span class="fas fa-wifi mx-1"></span> Online!' : '--'} -->
|
|
||||||
<span class="fas fa-wifi mx-1"></span>
|
<span class="fas fa-wifi mx-1"></span>
|
||||||
{online?.current ? '' : 'Offline!'}
|
{online?.current ? '' : 'Offline!'}
|
||||||
<!-- {@html online?.current ? '--' : 'No Connection'} -->
|
|
||||||
<!-- {@html online?.current ? '<span class="fas fa-wifi mx-1"></span> Online!' : '<span class="fas fa-times mx-1 text-red-700"></span> No Connection'} -->
|
|
||||||
|
|
||||||
<!-- current value data type = {online.current ? typeof(online.current) : 'null'} -->
|
|
||||||
<!-- {#if online?.current}
|
|
||||||
<span class="fas fa-wifi mx-1"></span>
|
|
||||||
<span class="hidden group-hover:inline">
|
|
||||||
Online
|
|
||||||
</span>
|
|
||||||
{:else}
|
|
||||||
<span class="fas fa-times mx-1 text-red-700"></span>
|
|
||||||
<span class="hidden group-hover:inline">
|
|
||||||
No Connection!
|
|
||||||
</span>
|
|
||||||
{/if} -->
|
|
||||||
|
|
||||||
<!-- {#if online.current === true}
|
|
||||||
<span class="fas fa-wifi mx-1"></span>
|
|
||||||
<span class="hidden group-hover:inline">
|
|
||||||
Online
|
|
||||||
</span>
|
|
||||||
{:else}
|
|
||||||
<span class="fas fa-times mx-1 text-red-700"></span>
|
|
||||||
<span class="hidden group-hover:inline">
|
|
||||||
No Connection!
|
|
||||||
</span>
|
|
||||||
{/if} -->
|
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span
|
<span
|
||||||
@@ -1178,24 +805,6 @@
|
|||||||
{/if}
|
{/if}
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span
|
|
||||||
class:hidden={$events_loc.launcher.app_mode != 'native'}
|
|
||||||
class="group px-1 rounded-md transition-all duration-1000"
|
|
||||||
class:preset-tonal-warning={!$events_sess.launcher?.av_recording_status}
|
|
||||||
class:preset-tonal-success={$events_sess.launcher?.av_recording_status}
|
|
||||||
title="Audio/Video recording is {$events_sess.launcher?.av_recording_status
|
|
||||||
? 'active'
|
|
||||||
: 'inactive'}"
|
|
||||||
>
|
|
||||||
{#if $events_sess.launcher?.av_recording_status}
|
|
||||||
<span class="fas fa-video mx-1"></span>
|
|
||||||
<span class="hidden group-hover:inline"> AV Recording Active </span>
|
|
||||||
{:else}
|
|
||||||
<span class="fas fa-video-slash mx-1"></span>
|
|
||||||
<span class="hidden group-hover:inline"> AV Recording Inactive </span>
|
|
||||||
{/if}
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<div class="current_datetime font-mono px-2 hover:font-bold hover:bg-white transition-all">
|
<div class="current_datetime font-mono px-2 hover:font-bold hover:bg-white transition-all">
|
||||||
<span class="hidden md:inline">
|
<span class="hidden md:inline">
|
||||||
<span class="fas fa-calendar-alt"></span>
|
<span class="fas fa-calendar-alt"></span>
|
||||||
@@ -1209,8 +818,6 @@
|
|||||||
{:else}
|
{:else}
|
||||||
{ae_util.iso_datetime_formatter($time, 'time_long')}
|
{ae_util.iso_datetime_formatter($time, 'time_long')}
|
||||||
{/if}
|
{/if}
|
||||||
<!-- <span class="fas fa-hourglass fa-spin"></span> -->
|
|
||||||
<!-- <span class="fas fa-hourglass"></span> -->
|
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
@@ -1269,12 +876,6 @@
|
|||||||
View Selected Session
|
View Selected Session
|
||||||
</a>
|
</a>
|
||||||
{/if}
|
{/if}
|
||||||
<!-- <button
|
|
||||||
class="btn btn-sm variant-ghost-tertiary hover:variant-filled-tertiary"
|
|
||||||
>Test 1</button> -->
|
|
||||||
<!-- <button
|
|
||||||
class="btn btn-sm variant-ghost-tertiary hover:variant-filled-tertiary"
|
|
||||||
>Test 2</button> -->
|
|
||||||
</div>
|
</div>
|
||||||
</Drawer>
|
</Drawer>
|
||||||
|
|
||||||
@@ -1305,7 +906,6 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<!-- Show the launcher configuration in JSON format -->
|
|
||||||
<pre class="text-xs">
|
<pre class="text-xs">
|
||||||
{JSON.stringify($events_loc.launcher, null, 2)}
|
{JSON.stringify($events_loc.launcher, null, 2)}
|
||||||
</pre>
|
</pre>
|
||||||
@@ -1316,9 +916,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</Drawer>
|
</Drawer>
|
||||||
|
|
||||||
<!-- Main modal -->
|
|
||||||
<!-- **NOTE:** The modal size is intentionally set to "". This makes it undefined and allows the modal to be as large as the content. **NOTE** -->
|
|
||||||
<!-- title={$events_sess.launcher?.modal__title} -->
|
|
||||||
<Modal
|
<Modal
|
||||||
open={$events_sess.launcher?.modal__open_event_file_id}
|
open={$events_sess.launcher?.modal__open_event_file_id}
|
||||||
autoclose={false}
|
autoclose={false}
|
||||||
@@ -1335,27 +932,8 @@
|
|||||||
bodyClass="p-0 space-y-0 overflow-y-auto flex flex-col gap-1 items-center justify-center"
|
bodyClass="p-0 space-y-0 overflow-y-auto flex flex-col gap-1 items-center justify-center"
|
||||||
headerClass={`fixed top-0 right-0 left-0 p-1 md:p-2 flex flex-row items-center ${$events_loc.launcher.controller == 'remote' ? 'hidden' : ''} bg-white dark:bg-gray-800 opacity-50 ${$events_loc.launcher.hide__modal_header_title ? 'justify-center' : 'justify-between'}`}
|
headerClass={`fixed top-0 right-0 left-0 p-1 md:p-2 flex flex-row items-center ${$events_loc.launcher.controller == 'remote' ? 'hidden' : ''} bg-white dark:bg-gray-800 opacity-50 ${$events_loc.launcher.hide__modal_header_title ? 'justify-center' : 'justify-between'}`}
|
||||||
footerClass="text-center hidden"
|
footerClass="text-center hidden"
|
||||||
on:close={async () => {
|
|
||||||
$events_sess.launcher.modal__open_event_file_id = null;
|
|
||||||
if (
|
|
||||||
$events_loc.launcher.controller == 'local_push' &&
|
|
||||||
$events_sess.launcher.ws_connect_status == 'connected'
|
|
||||||
) {
|
|
||||||
// // This should work....????
|
|
||||||
// console.log(`TEST - FAIL??? Local Push Controller Command: ae_close:event_file_modal`);
|
|
||||||
// console.log(`Before: ${$events_sess.launcher.controller_trigger_send}`);
|
|
||||||
// // $events_sess.launcher.controller_cmd = `ae_close:event_file_modal`;
|
|
||||||
// // $events_sess.launcher.controller_trigger_send = true;
|
|
||||||
// // $events_sess = $events_sess;
|
|
||||||
// // events_sess.set($events_sess);
|
|
||||||
// // tick();
|
|
||||||
// // events_sess.set($events_sess);
|
|
||||||
// console.log(`After: ${$events_sess.launcher.controller_trigger_send}`);
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
>
|
>
|
||||||
{#snippet header()}
|
{#snippet header()}
|
||||||
<!-- <div class="flex flex-row items-center justify-between"> -->
|
|
||||||
<h3
|
<h3
|
||||||
class:hidden={$events_loc.launcher.hide__modal_header_title}
|
class:hidden={$events_loc.launcher.hide__modal_header_title}
|
||||||
class="text-lg font-semibold opacity-20 hover:opacity-100 transition-all"
|
class="text-lg font-semibold opacity-20 hover:opacity-100 transition-all"
|
||||||
@@ -1367,36 +945,18 @@
|
|||||||
class="btn flex-row-reverse group transition-all justify-self-end"
|
class="btn flex-row-reverse group transition-all justify-self-end"
|
||||||
onclick={() => {
|
onclick={() => {
|
||||||
$events_sess.launcher.modal__open_event_file_id = null;
|
$events_sess.launcher.modal__open_event_file_id = null;
|
||||||
if (
|
|
||||||
$events_loc.launcher.controller == 'local_push' &&
|
|
||||||
$events_sess.launcher.ws_connect_status == 'connected'
|
|
||||||
) {
|
|
||||||
}
|
|
||||||
}}
|
}}
|
||||||
title="Close Modal"
|
title="Close Modal"
|
||||||
>
|
>
|
||||||
<span class="fas fa-times my-1.5"></span>
|
<span class="fas fa-times my-1.5"></span>
|
||||||
<span class="hidden group-hover:inline"> Close</span>
|
<span class="hidden group-hover:inline"> Close</span>
|
||||||
</button>
|
</button>
|
||||||
<!-- </div> -->
|
|
||||||
{/snippet}
|
{/snippet}
|
||||||
|
|
||||||
<!-- <svelte:fragment slot="header">
|
|
||||||
<div class="flex flex-row items-center justify-between">
|
|
||||||
<h3 class="text-lg font-semibold">
|
|
||||||
{$events_sess.launcher?.modal__title}
|
|
||||||
</h3>
|
|
||||||
</div>
|
|
||||||
</svelte:fragment> -->
|
|
||||||
<button
|
<button
|
||||||
onclick={() => {
|
onclick={() => {
|
||||||
console.log(
|
|
||||||
`TEST - THIS WORKS... Local Push Controller Command: ae_close:event_file_modal`
|
|
||||||
);
|
|
||||||
// This is not terrible if we set autoclose to true.
|
|
||||||
$events_sess.launcher.controller_cmd = `ae_close:event_file_modal`;
|
$events_sess.launcher.controller_cmd = `ae_close:event_file_modal`;
|
||||||
$events_sess.launcher.controller_trigger_send = true;
|
$events_sess.launcher.controller_trigger_send = true;
|
||||||
// $events_sess.launcher.modal__open = false;
|
|
||||||
}}
|
}}
|
||||||
class="
|
class="
|
||||||
absolute top-0 right-12
|
absolute top-0 right-12
|
||||||
@@ -1414,17 +974,13 @@
|
|||||||
<span class="fas fa-tv"></span>
|
<span class="fas fa-tv"></span>
|
||||||
Close Remote Poster Display Only
|
Close Remote Poster Display Only
|
||||||
</button>
|
</button>
|
||||||
<!-- Open: {$ae_api.base_url} {$events_sess.launcher.modal__open_event_file_id} -->
|
|
||||||
<!-- /event/file/{$events_slct.event_file_obj.event_file_id}/download?filename={$events_slct.event_file_obj.filename}&x_no_account_id_token=direct-download -->
|
|
||||||
<!-- <span class="aspect-9/16 max-h-96"> -->
|
|
||||||
{#if $events_sess.launcher.modal__open_event_file_id}
|
{#if $events_sess.launcher.modal__open_event_file_id}
|
||||||
<img
|
<img
|
||||||
src="{$ae_api.base_url}/event/file/{$events_sess.launcher
|
src="{$ae_api.base_url}/event/file/{$events_sess.launcher
|
||||||
.modal__open_event_file_id}/download?filename={$events_slct.event_file_obj
|
.modal__open_event_file_id}/download?filename={$events_slct.event_file_obj
|
||||||
.filename}&x_no_account_id_token=direct-download"
|
.filename}&x_no_account_id_token=direct-download"
|
||||||
alt="Placeholder: /event/file/{$events_sess.launcher
|
alt="Poster"
|
||||||
.modal__open_event_file_id}/download?filename={$events_slct.event_file_obj
|
|
||||||
.filename}&x_no_account_id_token=direct-download"
|
|
||||||
class="min-h-28 min-w-md max-h-full max-w-full"
|
class="min-h-28 min-w-md max-h-full max-w-full"
|
||||||
/>
|
/>
|
||||||
{:else}
|
{:else}
|
||||||
@@ -1434,17 +990,10 @@
|
|||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<!-- </span> -->
|
|
||||||
|
|
||||||
<button
|
<button
|
||||||
onclick={() => {
|
onclick={() => {
|
||||||
console.log(
|
|
||||||
`TEST - THIS WORKS... Local Push Controller Command: ae_close:event_file_modal`
|
|
||||||
);
|
|
||||||
// This is not terrible if we set autoclose to true.
|
|
||||||
$events_sess.launcher.controller_cmd = `ae_close:event_file_modal`;
|
$events_sess.launcher.controller_cmd = `ae_close:event_file_modal`;
|
||||||
$events_sess.launcher.controller_trigger_send = true;
|
$events_sess.launcher.controller_trigger_send = true;
|
||||||
// $events_sess.launcher.modal__open = false;
|
|
||||||
}}
|
}}
|
||||||
class="
|
class="
|
||||||
absolute bottom-0 left-12
|
absolute bottom-0 left-12
|
||||||
@@ -1463,11 +1012,8 @@
|
|||||||
Close Remote Poster Display Only
|
Close Remote Poster Display Only
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<!-- Need to add a re-open button... -->
|
|
||||||
|
|
||||||
<button
|
<button
|
||||||
onclick={() => {
|
onclick={() => {
|
||||||
// $events_sess.launcher.modal__open = false;
|
|
||||||
$events_sess.launcher.modal__title = '';
|
$events_sess.launcher.modal__title = '';
|
||||||
$events_sess.launcher.modal__open_event_file_id = null;
|
$events_sess.launcher.modal__open_event_file_id = null;
|
||||||
$events_sess.launcher.modal__event_file_obj = null;
|
$events_sess.launcher.modal__event_file_obj = null;
|
||||||
@@ -1487,37 +1033,11 @@
|
|||||||
>
|
>
|
||||||
<span class="fas fa-times m-1"></span>
|
<span class="fas fa-times m-1"></span>
|
||||||
<span class="fas fa-list"></span>
|
<span class="fas fa-list"></span>
|
||||||
Close
|
Close Poster on This Device
|
||||||
<!-- Controller -->
|
|
||||||
<!-- Local -->
|
|
||||||
Poster
|
|
||||||
<!-- Here -->
|
|
||||||
on This Device
|
|
||||||
<!-- Only -->
|
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<!-- <svelte:fragment slot="footer">
|
|
||||||
<div class="text-center w-full">
|
|
||||||
|
|
||||||
<button
|
|
||||||
on:click={() => {
|
|
||||||
$events_sess.launcher.modal__open = false;
|
|
||||||
}}
|
|
||||||
class="btn btn-sm variant-soft-warning hover:variant-ghost-warning"
|
|
||||||
>
|
|
||||||
<span class="fas fa-times m-1"></span>
|
|
||||||
Close
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</svelte:fragment> -->
|
|
||||||
</Modal>
|
</Modal>
|
||||||
|
|
||||||
<!-- {:else}
|
|
||||||
{$events_sess.launcher.modal__open_event_file_id}
|
|
||||||
{/if} -->
|
|
||||||
|
|
||||||
{#if $events_loc.launcher.controller_group_code && $events_loc.launcher.ws_connect}
|
{#if $events_loc.launcher.controller_group_code && $events_loc.launcher.ws_connect}
|
||||||
<!-- {$ae_api.base_url} -->
|
|
||||||
<Element_websocket_v2
|
<Element_websocket_v2
|
||||||
{log_lvl}
|
{log_lvl}
|
||||||
bind:ws_connect={$events_loc.launcher.ws_connect}
|
bind:ws_connect={$events_loc.launcher.ws_connect}
|
||||||
@@ -1538,5 +1058,4 @@
|
|||||||
bind:ws_recv_status={trigger_handle_ws_recv}
|
bind:ws_recv_status={trigger_handle_ws_recv}
|
||||||
bind:ws_sent_status={trigger_handle_ws_sent}
|
bind:ws_sent_status={trigger_handle_ws_sent}
|
||||||
/>
|
/>
|
||||||
<!-- on:ws_recv={handle_ws_recv} -->
|
|
||||||
{/if}
|
{/if}
|
||||||
@@ -67,20 +67,19 @@
|
|||||||
if (trigger_reload__event_session_obj_id) {
|
if (trigger_reload__event_session_obj_id) {
|
||||||
if (log_lvl) {
|
if (log_lvl) {
|
||||||
console.log(
|
console.log(
|
||||||
`trigger_reload__event_session_obj_id changed: ${trigger_reload__event_session_obj_id}`
|
`[UI Trace] trigger_reload__event_session_obj_id changed: ${trigger_reload__event_session_obj_id}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
let event_session_id = trigger_reload__event_session_obj_id;
|
let event_session_id = String(trigger_reload__event_session_obj_id);
|
||||||
trigger_reload__event_session_obj_id = false;
|
trigger_reload__event_session_obj_id = false;
|
||||||
slct__event_session_id = event_session_id;
|
slct__event_session_id = event_session_id;
|
||||||
console.log(`slct__event_session_id = `, slct__event_session_id);
|
|
||||||
|
if (log_lvl) console.log(`[UI Trace] UI setting slct__event_session_id = ${slct__event_session_id}`);
|
||||||
|
|
||||||
handle_load_ae_obj_id__event_session(event_session_id);
|
handle_load_ae_obj_id__event_session(event_session_id);
|
||||||
|
|
||||||
if ($events_loc.launcher.controller == 'local_push') {
|
if ($events_loc.launcher.controller == 'local_push') {
|
||||||
console.log(
|
if (log_lvl) console.log(`[UI Trace] Local Push Controller Command: ae_load:event_session=${event_session_id}`);
|
||||||
`Local Push Controller Command: ae_load:event_session=${event_session_id}`
|
|
||||||
);
|
|
||||||
$events_sess.launcher.controller_cmd = `ae_load:event_session=${event_session_id}`;
|
$events_sess.launcher.controller_cmd = `ae_load:event_session=${event_session_id}`;
|
||||||
$events_sess.launcher.controller_trigger_send = true;
|
$events_sess.launcher.controller_trigger_send = true;
|
||||||
}
|
}
|
||||||
@@ -88,37 +87,20 @@
|
|||||||
data_url.searchParams.set('session_id', event_session_id);
|
data_url.searchParams.set('session_id', event_session_id);
|
||||||
|
|
||||||
let new_url = data_url.toString();
|
let new_url = data_url.toString();
|
||||||
console.log(new_url);
|
if (log_lvl) console.log(`[UI Trace] Updating URL to: ${new_url}`);
|
||||||
// goto(new_url, {replaceState: true}); // Updates the URL without adding a new entry to the history
|
goto(new_url, { replaceState: false });
|
||||||
goto(new_url, { replaceState: false }); // Updates the URL history without reloading the page
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
function handle_load_ae_obj_id__event_session(event_session_id: any) {
|
function handle_load_ae_obj_id__event_session(event_session_id: any) {
|
||||||
if (log_lvl) {
|
if (log_lvl) {
|
||||||
console.log(
|
console.log(
|
||||||
`handle_load_ae_obj_id__event_session: event_session_id = `,
|
`[UI Trace] handle_load_ae_obj_id__event_session: Calling library for id=${event_session_id}`
|
||||||
event_session_id
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
loading__session_id_status = true;
|
|
||||||
|
|
||||||
// slct__event_session_id = null;
|
|
||||||
|
|
||||||
// slct__event_session_id = event_session_id;
|
|
||||||
// $events_slct.event_session_id = event_session_id;
|
|
||||||
// data_url.searchParams.set('session_id', event_session_id);
|
|
||||||
|
|
||||||
// let new_url = data_url.toString();
|
|
||||||
// console.log(new_url);
|
|
||||||
// loading__session_id_status = false;
|
|
||||||
// goto(new_url, {replaceState: true}); // Updates the URL without reloading the page
|
|
||||||
// goto(new_url, {replaceState: false}); // Updates the URL history without reloading the page
|
|
||||||
loading__session_id_status = 'loading';
|
loading__session_id_status = 'loading';
|
||||||
|
|
||||||
// $events_slct.event_session_obj = event_session_obj;
|
|
||||||
|
|
||||||
ae_promises.slct__event_session_id = events_func
|
ae_promises.slct__event_session_id = events_func
|
||||||
.load_ae_obj_id__event_session({
|
.load_ae_obj_id__event_session({
|
||||||
api_cfg: $ae_api,
|
api_cfg: $ae_api,
|
||||||
@@ -129,20 +111,13 @@
|
|||||||
log_lvl: log_lvl
|
log_lvl: log_lvl
|
||||||
})
|
})
|
||||||
.then(async (load_results) => {
|
.then(async (load_results) => {
|
||||||
console.log(`load_results = `, load_results);
|
if (log_lvl) console.log(`[UI Trace] handle_load_ae_obj_id: Library returned results.`, load_results);
|
||||||
|
|
||||||
if (load_results) {
|
if (load_results) {
|
||||||
$events_slct.event_session_obj = load_results;
|
$events_slct.event_session_obj = load_results;
|
||||||
$events_slct.event_file_obj_li = load_results.event_file_li ?? [];
|
$events_slct.event_file_obj_li = load_results.event_file_li ?? [];
|
||||||
$events_slct.event_presentation_obj_li = load_results.event_presentation_li ?? [];
|
$events_slct.event_presentation_obj_li = load_results.event_presentation_li ?? [];
|
||||||
// $events_slct.event_presenter_obj_li = load_results.event_presenter_obj_li;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// let new_url = data_url.toString();
|
|
||||||
// console.log(new_url);
|
|
||||||
// loading__session_id_status = false;
|
|
||||||
// // goto(new_url, {replaceState: true}); // Updates the URL without reloading the page
|
|
||||||
// goto(new_url, {replaceState: false}); // Updates the URL history without reloading the page
|
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
loading__session_id_status = false;
|
loading__session_id_status = false;
|
||||||
@@ -202,42 +177,6 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
trigger_reload__event_session_obj_id = event_session_obj?.id;
|
trigger_reload__event_session_obj_id = event_session_obj?.id;
|
||||||
// handle_load_ae_obj_id__event_session(event_session_obj?.id);
|
|
||||||
|
|
||||||
// loading__session_id_status = true;
|
|
||||||
|
|
||||||
// slct__event_session_id = null;
|
|
||||||
|
|
||||||
// slct__event_session_id = event_session_obj?.id;
|
|
||||||
// // $events_slct.event_session_id = event_session_obj?.id;
|
|
||||||
// data_url.searchParams.set('session_id', event_session_obj?.id);
|
|
||||||
|
|
||||||
// let new_url = data_url.toString();
|
|
||||||
// console.log(new_url);
|
|
||||||
// loading__session_id_status = false;
|
|
||||||
// // goto(new_url, {replaceState: true}); // Updates the URL without reloading the page
|
|
||||||
// // goto(new_url, {replaceState: false}); // Updates the URL history without reloading the page
|
|
||||||
// loading__session_id_status = 'loading';
|
|
||||||
|
|
||||||
// $events_slct.event_session_obj = event_session_obj;
|
|
||||||
|
|
||||||
// ae_promises.slct__event_session_id = events_func.load_ae_obj_id__event_session({
|
|
||||||
// api_cfg: $ae_api,
|
|
||||||
// event_session_id: event_session_obj?.id,
|
|
||||||
// inc_file_li: true,
|
|
||||||
// inc_presentation_li: true,
|
|
||||||
// inc_presenter_li: true,
|
|
||||||
// log_lvl: log_lvl
|
|
||||||
// })
|
|
||||||
// .then(async (load_results) => {
|
|
||||||
// console.log(`load_results = `, load_results);
|
|
||||||
|
|
||||||
// // let new_url = data_url.toString();
|
|
||||||
// // console.log(new_url);
|
|
||||||
// loading__session_id_status = false;
|
|
||||||
// // // goto(new_url, {replaceState: true}); // Updates the URL without reloading the page
|
|
||||||
// // goto(new_url, {replaceState: false}); // Updates the URL history without reloading the page
|
|
||||||
// });
|
|
||||||
}, hover_timer_wait);
|
}, hover_timer_wait);
|
||||||
}}
|
}}
|
||||||
onmouseleave={() => {
|
onmouseleave={() => {
|
||||||
@@ -248,50 +187,6 @@
|
|||||||
|
|
||||||
$events_slct.event_file_id = null;
|
$events_slct.event_file_id = null;
|
||||||
$events_slct.event_file_obj = null;
|
$events_slct.event_file_obj = null;
|
||||||
|
|
||||||
// handle_load_ae_obj_id__event_session(event_session_obj?.id);
|
|
||||||
|
|
||||||
// loading__session_id_status = true;
|
|
||||||
|
|
||||||
// slct__event_session_id = null;
|
|
||||||
// // await tick();
|
|
||||||
|
|
||||||
// slct__event_session_id = event_session_obj?.id;
|
|
||||||
// // $events_slct.event_session_id = event_session_obj?.id;
|
|
||||||
// data_url.searchParams.set('session_id', event_session_obj?.id);
|
|
||||||
|
|
||||||
// let new_url = data_url.toString();
|
|
||||||
// console.log(new_url);
|
|
||||||
// // goto(new_url, {replaceState: true}); // Updates the URL without reloading the page
|
|
||||||
// // goto(new_url, {replaceState: false}); // Updates the URL history without reloading the page
|
|
||||||
// loading__session_id_status = 'loading';
|
|
||||||
|
|
||||||
// // $events_slct.event_session_id = event_session_obj?.id;
|
|
||||||
// $events_slct.event_session_obj = event_session_obj;
|
|
||||||
|
|
||||||
// ae_promises.slct__event_session_id = events_func.load_ae_obj_id__event_session({
|
|
||||||
// api_cfg: $ae_api,
|
|
||||||
// event_session_id: event_session_obj?.id,
|
|
||||||
// inc_file_li: true,
|
|
||||||
// inc_presentation_li: true,
|
|
||||||
// inc_presenter_li: true,
|
|
||||||
// log_lvl: log_lvl
|
|
||||||
// })
|
|
||||||
// .then(async (load_results) => {
|
|
||||||
// console.log(`load_results = `, load_results);
|
|
||||||
|
|
||||||
// // let new_url = data_url.toString();
|
|
||||||
// // console.log(new_url);
|
|
||||||
// loading__session_id_status = false;
|
|
||||||
// // // goto(new_url, {replaceState: true}); // Updates the URL history without reloading the page
|
|
||||||
// // goto(new_url, {replaceState: false});
|
|
||||||
// });
|
|
||||||
|
|
||||||
// if ($events_loc.launcher.controller == 'local_push') {
|
|
||||||
// console.log(`Local Push Controller Command: ae_load:event_session=${event_session_obj?.id}`);
|
|
||||||
// $events_sess.launcher.controller_cmd = `ae_load:event_session=${event_session_obj?.id}`;
|
|
||||||
// $events_sess.launcher.controller_trigger_send = true;
|
|
||||||
// }
|
|
||||||
}}
|
}}
|
||||||
class="
|
class="
|
||||||
btn btn-sm hover:preset-filled-primary-500
|
btn btn-sm hover:preset-filled-primary-500
|
||||||
|
|||||||
Reference in New Issue
Block a user