Things are finally working better again with the liveQuery. I hope.

This commit is contained in:
Scott Idem
2024-08-08 16:55:50 -04:00
parent 4141524d83
commit 4ddc775aaa
3 changed files with 93 additions and 69 deletions

View File

@@ -127,24 +127,26 @@ let bi_trig__event_location: any = null;
let bi_id_li__event_location: string[] = [];
// $: if ($events_trigger == 'event_location_li' && $events_slct.event_location_obj_li && $events_slct.event_location_obj_li.length > 0) {
// $: if (bi_trig__event_location == 'event_location_li' && $events_slct.event_location_obj_li && $events_slct.event_location_obj_li.length > 0) {
$: if (ae_acct.trig.event_location_obj_li) {
console.log(`$events_slct.event_location_obj_li:`, $events_slct.event_location_obj_li);
// $events_trigger = null;
bi_trig__event_location = null;
// $: if ($events_slct.event_location_obj_li) {
// console.log(`$events_slct.event_location_obj_li:`, $events_slct.event_location_obj_li);
// // $events_trigger = null;
// bi_trig__event_location = null;
bi_id_li__event_location = [];
// bi_id_li__event_location = [];
let tmp_li = []; // This is to prevent the array from constantly updating and triggering the liveQuery.
// let tmp_li = []; // This is to prevent the array from constantly updating and triggering the liveQuery.
for (let i = 0; i < $events_slct.event_location_obj_li.length; i++) {
let event_location_obj = $events_slct.event_location_obj_li[i];
let event_location_id_random = event_location_obj.event_location_id_random;
tmp_li.push(event_location_id_random);
}
bi_id_li__event_location = tmp_li;
console.log(`bi_id_li__event_location:`, bi_id_li__event_location);
$events_slct.id_li__event_location = bi_id_li__event_location;
}
// for (let i = 0; i < $events_slct.event_location_obj_li.length; i++) {
// let event_location_obj = $events_slct.event_location_obj_li[i];
// let event_location_id_random = event_location_obj.event_location_id_random;
// tmp_li.push(event_location_id_random);
// }
// bi_id_li__event_location = tmp_li;
// console.log(`bi_id_li__event_location:`, bi_id_li__event_location);
// $events_slct.id_li__event_location = bi_id_li__event_location;
// $events_slct.event_location_obj_li = ae_acct.slct.event_location_obj_li;
// }
let bi_trig__event_session: any = null;
let bi_id_li__event_session: string[] = [];
@@ -215,7 +217,7 @@ let lq__event_session_obj_li = liveQuery(
let lq_get__event_session_obj_li = liveQuery(
() => db_events.sessions
.bulkGet($events_slct.id_li__event_session ?? [''])
.bulkGet($events_slct.id_li__event_session)
);
@@ -286,25 +288,17 @@ onMount(() => {
Loading location list... a
{:then event_location_obj_li}
<!-- {#if $lq__event_obj && $lq_get__event_location_obj_li && $lq_get__event_session_obj_li && event_location_obj_li && event_location_obj_li.length > 0} -->
{#if $lq__event_obj && bi_id_li__event_location && bi_id_li__event_location.length > 0}
{#if $lq__event_obj && $events_slct.event_location_obj_li}
<Event_launcher_menu
slct_event_location_id={$events_loc.launcher.slct.event_location_id}
data_url={data.url}
slct_event_session_id={$events_loc.launcher.slct.event_session_id}
bind:bi_trig__event_location={bi_trig__event_location}
bind:bi_id_li__event_location={bi_id_li__event_location}
event_location_obj_li={event_location_obj_li}
dq__event_obj={$lq__event_obj}
dq__where_type_id_val={'event_id'}
bind:dq__where_eq_id_val={$events_slct.event_id}
lq__event_obj={lq__event_obj}
lq__event_location_obj={lq__event_location_obj}
lq__event_location_obj_li={lq__event_location_obj_li}
lq_get__event_location_obj_li={lq_get__event_location_obj_li}
lq__event_session_obj={lq__event_session_obj}
lq__event_session_obj_li={lq__event_session_obj_li}
lq_get__event_session_obj_li={lq_get__event_session_obj_li}
>
</Event_launcher_menu>

View File

@@ -1,5 +1,6 @@
<script lang="ts">
import { tick } from 'svelte';
import { goto } from '$app/navigation';
import type { key_val } from '$lib/ae_stores';
import { ae_util } from '$lib/ae_utils';
@@ -17,21 +18,22 @@ import { events_func } from '$lib/ae_events_functions';
import Menu_session_list_menu from './menu_session_list.svelte';
export let data_url: any;
// export let slct_event_id: string;
export let slct_event_location_id: string;
let slct_event_location_id: string;
export let slct_event_session_id: null|string;
export let bi_trig__event_location: any;
export let bi_id_li__event_location: string[] = [];
export let event_session_id_li: string[] = [];
// export let bi_trig__event_location: any;
// export let bi_id_li__event_location: string[] = [];
// export let event_session_id_li: string[] = [];
export let event_location_obj_li: any[] = [];
// export let event_location_obj_li: any[] = [];
export let dq__event_obj: any
export let dq__where_type_id_val: string = 'event_id';
export let dq__where_eq_id_val: string;
// export let dq__event_obj: any
// export let dq__where_type_id_val: string = 'event_id';
// export let dq__where_eq_id_val: string;
console.log(`bi_id_li__event_location:`, bi_id_li__event_location);
// console.log(`bi_id_li__event_location:`, bi_id_li__event_location);
$events_trigger = null;
@@ -45,11 +47,12 @@ $events_trigger = null;
// bi_id_li__event_location = tmp_li;
// console.log(`bi_id_li__event_location:`, bi_id_li__event_location);
export let lq__event_obj: any;
export let lq__event_location_obj: any;
export let lq__event_location_obj_li: any;
// export let lq__event_location_obj_li: any;
export let lq_get__event_location_obj_li: any;
export let lq__event_session_obj: any;
export let lq__event_session_obj_li: any;
// export let lq__event_session_obj_li: any;
export let lq_get__event_session_obj_li: any;
// let lq__event_location_obj_li = liveQuery(
@@ -96,6 +99,8 @@ if ($ae_loc.administrator_access) {
qry__hidden = 'not_hidden';
}
let ae_promises: key_val = {};
let load_obj_li__event_session: any = {};
// $: if (event_location_id) {
// console.log(`event_location_id:`, event_location_id);
@@ -173,24 +178,40 @@ let load_obj_li__event_session: any = {};
</script>
<h2 class="">{dq__event_obj?.cfg_json.short_name ?? 'loading...'}</h2>
<section>
<h2 class="">{$lq__event_obj?.cfg_json.short_name ?? 'loading...'}</h2>
{#if $lq_get__event_location_obj_li && $lq_get__event_location_obj_li.length > 0}
<strong class="text-sm">
Locations:
{#if $ae_loc.administrator_access}
({$lq_get__event_location_obj_li?.length})
{/if}
{#await ae_promises[slct_event_location_id]}
<span class="fas fa-spinner fa-spin text-blue-500"></span>
{:then result}
<span class="fas fa-check text-green-500"></span>
{/await}
</strong>
<select
class="select text-sm"
class="select text-xs p-1"
bind:value={slct_event_location_id}
on:change={async () => {
// console.log(`slct_event_location_id:`, slct_event_location_id);
console.log('Remove the passcode from the URL.');
data_url.searchParams.delete('location_id');
data_url.searchParams.delete('presentation_id');
data_url.searchParams.delete('presenter_id');
data_url.searchParams.delete('session_id');
// let url_location_id = slct_event_location_id;
// data_url.searchParams.set('location_id', url_location_id);
if (slct_event_location_id) {
$events_loc.launcher.slct.event_location_id = slct_event_location_id;
console.log(`$events_loc.launcher.slct.event_location_id:`, $events_loc.launcher.slct.event_location_id);
data_url.searchParams.set('location_id', slct_event_location_id);
// await tick();
// $events_slct.event_location_id = slct_event_location_id;
@@ -209,8 +230,8 @@ let load_obj_li__event_session: any = {};
// $events_trigger = 'event_location_li';
$events_slct.id_li__event_session = [];
await tick();
load_obj_li__event_session = events_func.handle_load_ae_obj_li__event_session({
// await tick();
ae_promises[slct_event_location_id] = events_func.handle_load_ae_obj_li__event_session({
api_cfg: $ae_api,
for_obj_type: 'event_location',
for_obj_id: $events_loc.launcher.slct.event_location_id,
@@ -221,7 +242,7 @@ let load_obj_li__event_session: any = {};
.then(async function (load_results) {
console.log(`load_results = `, load_results);
event_session_id_li = [];
let event_session_id_li = [];
let tmp_li = []; // This is to prevent the array from constantly updating and triggering the liveQuery.
@@ -233,7 +254,8 @@ let load_obj_li__event_session: any = {};
event_session_id_li = tmp_li;
console.log(`event_session_id_li:`, event_session_id_li);
$events_slct.id_li__event_session = event_session_id_li;
await tick();
$events_slct = {...$events_slct};
// await tick();
return load_results;
});
@@ -241,10 +263,14 @@ let load_obj_li__event_session: any = {};
} else {
// This will hide the selected session if the location is changed to false.
// WARNING: This may need to be commented out later.
slct_event_session_id = null;
// slct_event_session_id = null;
$events_loc.launcher.slct.event_session_id = null;
// WARNING: This may need to be commented out later.
}
let new_url = data_url.toString()
console.log(new_url);
goto(new_url, {replaceState: false});
}}
>
<option value="">Select a location</option>
@@ -259,24 +285,20 @@ let load_obj_li__event_session: any = {};
{:else}
<p class="text-sm">
No locations found.
Event ID: {dq__event_obj.id}
Event ID: {$lq__event_obj?.id}
</p>
{/if}
<!-- {slct_event_location_id} -->
</section>
<!-- {#await lq_get__event_session_obj_li}
<p>Loading sessions...</p>
{:then lq_get__event_session_obj_li} -->
Sessions:
<section>
{#if lq_get__event_session_obj_li}
<Menu_session_list_menu
data_url={data_url}
bind:slct_event_session_id={slct_event_session_id}
lq_get__event_session_obj_li={lq_get__event_session_obj_li}
/>
{/if}
</section>
<!-- {/await} -->
<!-- {$events_slct.event_session_id} -->

View File

@@ -1,13 +1,15 @@
<script lang="ts">
import { tick } from 'svelte';
import { liveQuery } from "dexie";
import { db_events } from "$lib/db_events";
import { goto } from '$app/navigation';
// import { liveQuery } from "dexie";
// import { db_events } from "$lib/db_events";
import { ae_snip, ae_loc, ae_sess, ae_api, ae_trig, slct, slct_trigger } from '$lib/ae_stores';
import { events_loc, events_sess, events_slct, events_trigger } from '$lib/ae_events_stores';
import { events_func } from '$lib/ae_events_functions';
export let data_url: any;
export let slct_event_session_id: any;
export let event_session_id_li: Array<string> = [''];
// export let event_session_id_li: Array<string> = [''];
export let lq_get__event_session_obj_li: any;
@@ -38,36 +40,42 @@ export let lq_get__event_session_obj_li: any;
{/if}
</strong>
<ul
class="space-y-1 px-0"
class="space-y-1"
>
{#each $lq_get__event_session_obj_li as event_session_obj}
<li>
<button
class="btn btn-sm variant-ghost-primary hover:variant-filled-primary overflow-hidden text-xs w-full max-w-full text-left transition-all"
class="btn btn-sm variant-ghost-primary hover:variant-filled-primary overflow-hidden text-xs w-full max-w-full text-left transition-all rounded-md"
on:click={async () => {
$events_loc.launcher.slct.event_session_id = null;
await tick();
// $events_loc.launcher.slct.event_session_id = null;
// await tick();
$events_loc.launcher.slct.event_session_id = event_session_obj?.id;
data_url.searchParams.set('session_id', event_session_obj?.id);
// $events_loc = $events_loc;
$events_trigger = null;
slct_event_session_id = null;
$events_slct.event_session_id = null;
// $events_trigger = null;
// slct_event_session_id = null;
// $events_slct.event_session_id = null;
// dq__where_type_id_val = 'event_session_id';
// dq__where_eq_id_val = event_session_obj.id;
// $events_slct = {...$events_slct};
$events_slct.event_session_id = event_session_obj?.id;
$events_slct.event_session_obj = event_session_obj;
slct_event_session_id = event_session_obj?.id;
$events_trigger = 'load__event_session_obj';
// slct_event_session_id = event_session_obj?.id;
// $events_trigger = 'load__event_session_obj';
let load_event_session_obj = events_func.handle_load_ae_obj_id__event_session({
api_cfg: $ae_api,
event_session_id: slct_event_session_id,
try_cache: true
});
}}
let new_url = data_url.toString()
console.log(new_url);
goto(new_url, {replaceState: false});
}}
>
{event_session_obj?.name}
</button>