Wrapping up for the day. Trying to get LQ to work with searching and bulkGet.

This commit is contained in:
Scott Idem
2024-07-01 20:33:57 -04:00
parent 861107c2fd
commit acc39ecb50
4 changed files with 245 additions and 41 deletions

View File

@@ -13,6 +13,8 @@ import { ae_util } from '$lib/ae_utils';
import { api } from '$lib/api';
import Element_ae_crud from '$lib/element_ae_crud.svelte';
import Element_data_store from '$lib/element_data_store.svelte';
import Comp_event_presenter_obj_li from '../../ae_comp__event_presenter_obj_li.svelte';
import Element_manage_event_file_li from '$lib/element_manage_event_file_li.svelte';
import { liveQuery } from "dexie";
import { core_func } from '$lib/ae_core_functions';
@@ -52,6 +54,58 @@ let event_obj = liveQuery(
let event_obj_v2 = db_events.events.get($events_slct.event_id);
// let lq__event_session_obj_li = liveQuery(
// () => db_events.sessions
// .where('event_id')
// .equals($events_slct.event_id)
// .toArray()
// );
let event_session_id_random_li: string[] = ['VSBH-19-41-50'];
// let event_session_id_random_li: string[] = ['VSBH-19-41-51'];
// let event_session_id_random_li: string[] = [];
// event_session_id_random_li = [];
// let lq_kv__event_session_obj_li = liveQuery(
// () => db_events.sessions
// // .bulkGet(event_session_id_random_li)
// .where('event_session_id_random')
// .anyOf(event_session_id_random_li)
// // .toArray() ?? ['No sessions found.']
// .sortBy('start_datetime')
// );
let lq_kv__event_session_obj_li = liveQuery(
() => db_events.sessions
.bulkGet(event_session_id_random_li)
.then(results => {
console.log(`LQ Results:`, results);
// If the results are an array
if (results.length == 1) {
// If the first item is undefined we need to do something.
if (results[0] == undefined) {
console.log('Something went wrong! No sessions found?');
return [];
// return [{ id: '' }];
// return 'NOTHING???';
}
return results;
}else if (results.length > 1) {
return results;
} else {
return ['No sessions found.'];
}
// return results;
})
.catch(error => {
console.error(`LQ Error: ${error}`);
return ['No sessions found.'];
})
.finally(() => {
console.log(`LQ Finally:`, $lq_kv__event_session_obj_li);
})
);
let load_obj_li_results: Promise<any>|key_val;
let search_submit_results: Promise<any>|key_val;
@@ -134,6 +188,9 @@ function handle_search__event_session(search_str: string) {
ft_search_str_new = `${search_str}`;
// ft_search_str_new = `"${search_str}"`;
} else if (search_method == 'lk') {
if (search_str == null) {
search_str = '';
}
// Add a wildcard to the search string to make it a like match.
lk_search_str_new = search_str.trim().replace(',', ' ').replace(';', ' ').replaceAll(' ', '%').replaceAll(' ', '%');
lk_search_str_new = `%${lk_search_str_new}%`;
@@ -186,6 +243,10 @@ function handle_search__event_session(search_str: string) {
$events_slct.event_session_obj_li = search_results;
console.log(search_results);
$events_sess.status_qry__search = 'done';
})
.finally(() => {
console.log('Search done.');
console.log(`test1: ${$lq_kv__event_session_obj_li}`);
});
}, 250);
} else {
@@ -211,9 +272,26 @@ function handle_search__event_session(search_str: string) {
$events_slct.event_session_obj_li = search_results;
console.log(search_results);
$events_sess.status_qry__search = 'done';
})
.finally(() => {
console.log('Search done.');
console.log(`test2: ${$lq_kv__event_session_obj_li}`);
event_session_id_random_li = [];
// We need to loop through the array of objects and get the event_session_id_random from each object a new list
// of event_session_id_randoms. Then we can use this list to get the full objects from the database.
for (let i = 0; i < $events_slct.event_session_obj_li.length; i++) {
event_session_id_random_li.push($events_slct.event_session_obj_li[i].event_session_id_random);
}
// event_session_id_random_li = $events_slct.event_session_obj_li.map(session_obj => session_obj.event_session_id_random);
console.log(`event_session_id_random_li:`, event_session_id_random_li);
console.log(`test3: ${$lq_kv__event_session_obj_li}`);
});
}
// } // end if search string is valid
}
@@ -221,6 +299,37 @@ function handle_search__event_session(search_str: string) {
</script>
{#if event_session_id_random_li}
ID count:{event_session_id_random_li.length}
<!-- This needs to be in here so it works correctly with the liveQuery. -->
{#if $lq_kv__event_session_obj_li?.length}
Sess li: {$lq_kv__event_session_obj_li?.length}
<!-- {$lq_kv__event_session_obj_li?.map(session_obj => session_obj?.event_session_id_random)} -->
{:else}
<!-- No sess -->
x: {$lq_kv__event_session_obj_li}
{/if}
{:else}
No IDs found
{/if}
<!-- {#await $lq_kv__event_session_obj_li}
{:then result}
{#if result}
Sess li: {result.length}
{:else}
No sess
{/if}
{/await} -->
{#if $lq_kv__event_session_obj_li?.length}
Sess li: {$lq_kv__event_session_obj_li?.length}
<!-- {$lq_kv__event_session_obj_li?.map(session_obj => session_obj?.event_session_id_random)} -->
{:else}
<!-- No sess -->
x: {$lq_kv__event_session_obj_li}
{/if}
<section
class="ae_events_pres_mgmt_event md:container h-full mx-auto flex flex-col items-center space-y-2 pt-0 pb-8"
>
@@ -375,7 +484,7 @@ function handle_search__event_session(search_str: string) {
</span>
{#if $events_slct.event_session_obj_li.length}
<span class="text-3xl font-bold bg-success-100 px-4 border rounded-lg border-success-500"
<span class="text-3xl font-bold bg-success-100 px-4 border rounded-lg border-success-200"
title="Count {$events_slct.event_session_obj_li.length ?? 'None'}"
>
<span class="fas fa-list-ol mx-4"></span>
@@ -416,6 +525,28 @@ function handle_search__event_session(search_str: string) {
<!-- Nothing -->
{/if}
</a>
{#if $ae_loc.administrator_access}
<Comp_event_presenter_obj_li
link_to_type={'event_session'}
link_to_id={session_obj.event_session_id_random}
display_mode={'minimal'}
>
</Comp_event_presenter_obj_li>
{/if}
{#if $ae_loc.administrator_access}
<Element_manage_event_file_li
link_to_type={'event_session'}
link_to_id={session_obj.event_session_id_random}
allow_basic={$events_loc.auth__kv.session[$events_slct.event_session_id] || $events_loc.auth__kv.presenter[$events_slct.event_presenter_id]}
allow_moderator={$events_loc.auth__kv.session[$events_slct.event_session_id]}
container_class_li={''}
display_mode={'minimal'}
/>
{/if}
</td>
<td>
<span style="break-inside: avoid;">