Saving work on reports. Trying separate out the session specific reports.
This commit is contained in:
@@ -485,6 +485,12 @@ let events_session_data_struct: key_val = {
|
||||
presenters_biography: null,
|
||||
},
|
||||
|
||||
rpt__session_no_files: true,
|
||||
rpt__session_poc_agree: false, // Default to false for new events.
|
||||
rpt__session_no_bio: true,
|
||||
|
||||
rpt__presenter_agree: true,
|
||||
|
||||
tmp_val__filename_no_ext: null, // For file rename
|
||||
},
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ let {
|
||||
hide_session_code = false,
|
||||
}: Props = $props();
|
||||
|
||||
|
||||
// Imports
|
||||
import { ae_util } from '$lib/ae_utils/ae_utils';
|
||||
import { ae_snip, ae_loc, ae_sess, ae_api, ae_trig, slct, slct_trigger } from '$lib/ae_stores';
|
||||
@@ -104,15 +105,38 @@ function generate_presenter_export_csv(ae_obj_li) {
|
||||
return csv_data;
|
||||
}
|
||||
|
||||
let horiz_scroll_warning: boolean = $state(false);
|
||||
let horiz_check_element: HTMLElement|null = $state(null);
|
||||
|
||||
// Check if element is scrolling horizontally
|
||||
$effect(() => {
|
||||
if (horiz_check_element && horiz_check_element.scrollWidth > horiz_check_element.offsetWidth) {
|
||||
horiz_scroll_warning = true;
|
||||
// console.log('Element is too wide for the container. Horizontal scrolling detected.');
|
||||
} else {
|
||||
horiz_scroll_warning = false;
|
||||
// console.log('Element fits within the container. No horizontal scrolling.', horiz_check_element);
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<section class="ae_comp event_presenter_obj_tbl container {container_class_li}">
|
||||
<section
|
||||
|
||||
class="ae_comp event_presenter_obj_tbl container {container_class_li}"
|
||||
>
|
||||
|
||||
{#if $lq__event_presenter_obj_li && $lq__event_presenter_obj_li?.length}
|
||||
|
||||
<div class="overflow-auto space-y-2">
|
||||
<div
|
||||
bind:this={horiz_check_element}
|
||||
id="tbl_container"
|
||||
class="overflow-auto space-y-2"
|
||||
class:border-r-2={horiz_scroll_warning}
|
||||
class:border-dashed={horiz_scroll_warning}
|
||||
class:border-warning-900-100={horiz_scroll_warning}
|
||||
>
|
||||
<header
|
||||
class="flex flex-row gap-1 items-center justify-between"
|
||||
>
|
||||
|
||||
@@ -27,6 +27,7 @@ let {
|
||||
hide_session_code = false,
|
||||
}: Props = $props();
|
||||
|
||||
|
||||
// Imports
|
||||
import Comp_event_presenter_obj_tbl from './ae_comp__event_presenter_obj_tbl.svelte';
|
||||
|
||||
@@ -38,6 +39,7 @@ if (log_lvl) {
|
||||
console.log(`link_to_type: ${link_to_type}; link_to_id: ${link_to_id}`);
|
||||
}
|
||||
|
||||
|
||||
// Variables
|
||||
// let ae_promises: key_val = {};
|
||||
// let ae_tmp: key_val = {};
|
||||
@@ -49,7 +51,6 @@ let dq__where_type_id_val: string = `${link_to_type}_id_random`;
|
||||
let dq__where_eq_id_val: string = link_to_id;
|
||||
|
||||
|
||||
|
||||
// *** Functions and Logic
|
||||
let lq__event_presenter_obj_li = $derived(liveQuery(async () => {
|
||||
let results: any;
|
||||
@@ -122,7 +123,7 @@ let lq__event_presenter_obj_li = $derived(liveQuery(async () => {
|
||||
>
|
||||
</Comp_event_presenter_obj_tbl>
|
||||
{:else}
|
||||
<section class="main_content grow px-1 md:px-2 pb-28 flex flex-col gap-1 items-center">
|
||||
<section class="grow px-1 md:px-2 pb-28 flex flex-col gap-1 items-center">
|
||||
<p>No presenters available to show in table.</p>
|
||||
</section>
|
||||
{/if}
|
||||
@@ -26,6 +26,7 @@ import { events_loc, events_sess, events_slct, events_trigger } from '$lib/ae_ev
|
||||
import { events_func } from '$lib/ae_events_functions';
|
||||
|
||||
import Event_reports_page_menu from './event_reports_page_menu.svelte';
|
||||
import Reports_sessions from './reports_sessions.svelte';
|
||||
import Reports_presenters from './reports_presenters.svelte';
|
||||
|
||||
|
||||
@@ -58,19 +59,19 @@ let ae_promises: key_val = $state({});
|
||||
let ae_tmp: key_val = {};
|
||||
let ae_triggers: key_val = {};
|
||||
|
||||
if ($events_loc.pres_mgmt.show_report == 'sessions_poc_agree') {
|
||||
handle_qry__event_session({
|
||||
qry_poc_agree: $events_loc.pres_mgmt.rpt__session_poc_agree ?? false,
|
||||
});
|
||||
} else if ($events_loc.pres_mgmt.show_report == 'session_no_bio') {
|
||||
handle_qry__event_session({
|
||||
qry_poc_kv_json: true,
|
||||
qry_poc_bios: true,
|
||||
});
|
||||
} else if ($events_loc.pres_mgmt.show_report == 'session_no_files') {
|
||||
handle_qry__event_session({
|
||||
qry_files: false,
|
||||
});
|
||||
// if ($events_loc.pres_mgmt.show_report == 'sessions_poc_agree') {
|
||||
// handle_qry__event_session({
|
||||
// qry_poc_agree: $events_loc.pres_mgmt.rpt__session_poc_agree ?? false,
|
||||
// });
|
||||
// } else if ($events_loc.pres_mgmt.show_report == 'session_no_bio') {
|
||||
// handle_qry__event_session({
|
||||
// qry_poc_kv_json: true,
|
||||
// qry_poc_bios: true,
|
||||
// });
|
||||
// } else if ($events_loc.pres_mgmt.show_report == 'session_no_files') {
|
||||
// handle_qry__event_session({
|
||||
// qry_files: false,
|
||||
// });
|
||||
// } else if ($events_loc.pres_mgmt.show_report == 'presenters_agree') {
|
||||
// handle_search__event_presenter({
|
||||
// agree: $events_loc.pres_mgmt.rpt__presenter_agree ?? false,
|
||||
@@ -92,7 +93,7 @@ if ($events_loc.pres_mgmt.show_report == 'sessions_poc_agree') {
|
||||
// lk_search_str: '',
|
||||
// log_lvl: log_lvl,
|
||||
// });
|
||||
} else if ($events_loc.pres_mgmt.show_report == 'recent_files') {
|
||||
if ($events_loc.pres_mgmt.show_report == 'recent_files') {
|
||||
handle_qry__event_file({
|
||||
created_on_offset: $events_loc.pres_mgmt.qry__files_offset_seconds ?? 0,
|
||||
file_purpose: $events_loc.pres_mgmt.qry__files_purpose ?? null,
|
||||
@@ -597,6 +598,36 @@ async function handle_qry__event_session(
|
||||
|
||||
<span class="border border-gray-200 rounded-md p-1">
|
||||
|
||||
<!-- Sessions without files uploaded -->
|
||||
<button
|
||||
type="button"
|
||||
disabled={!$ae_loc.trusted_access}
|
||||
onclick={() => {
|
||||
// $events_loc.pres_mgmt.rpt__session_no_files = !$events_loc.pres_mgmt.rpt__session_no_files;
|
||||
// ae_promises.handle_qry__event_session =
|
||||
// handle_qry__event_session({
|
||||
// qry_files: false,
|
||||
// });
|
||||
ae_triggers.rpt__event_sessions = true;
|
||||
$events_loc.pres_mgmt.show_report = 'session_no_files';
|
||||
}}
|
||||
class="btn btn-sm preset-tonal-success border border-success-500 hover:preset-filled-success-500 transition-all m-1"
|
||||
title="Toggle to show sessions with and without files uploaded."
|
||||
>
|
||||
{#if $events_sess.pres_mgmt?.show_report == 'session_no_files' && $events_sess.pres_mgmt.status_rpt[$events_sess.pres_mgmt?.show_report] == 'loading'}
|
||||
<span class="fas fa-spinner fa-spin"></span>
|
||||
{/if}
|
||||
|
||||
<span class="fas fa-clipboard-list m-1"></span>
|
||||
Sessions
|
||||
{#if $events_loc.pres_mgmt?.rpt__session_no_files}
|
||||
With
|
||||
{:else}
|
||||
Without
|
||||
{/if}
|
||||
Files
|
||||
</button>
|
||||
|
||||
<button
|
||||
type="button"
|
||||
disabled={!$ae_loc.trusted_access}
|
||||
@@ -607,21 +638,22 @@ async function handle_qry__event_session(
|
||||
// lk_search_str: '',
|
||||
// log_lvl: log_lvl,
|
||||
// });
|
||||
ae_promises.handle_qry__event_session = handle_qry__event_session({
|
||||
qry_poc_agree: $events_loc.pres_mgmt.rpt__session_poc_agree ?? false,
|
||||
})
|
||||
// $events_loc.pres_mgmt.rpt__session_poc_agree = !$events_loc.pres_mgmt.rpt__session_poc_agree;
|
||||
// ae_promises.handle_qry__event_session = handle_qry__event_session({
|
||||
// qry_poc_agree: $events_loc.pres_mgmt.rpt__session_poc_agree ?? false,
|
||||
// })
|
||||
ae_triggers.rpt__event_sessions = true;
|
||||
$events_loc.pres_mgmt.show_report = 'sessions_poc_agree';
|
||||
}}
|
||||
class:hidden={!$events_loc.pres_mgmt?.require__session_agree}
|
||||
class="btn btn-sm preset-tonal-success border border-success-500 hover:preset-filled-success-500 transition-all m-1"
|
||||
title="Show POCs who have agreed to session terms and conditions."
|
||||
title="Toggle to show POCs who have agreed to session terms and conditions."
|
||||
>
|
||||
{#if $events_sess.pres_mgmt?.show_report == 'sessions_poc_agree' && $events_sess.pres_mgmt.status_rpt[$events_sess.pres_mgmt?.show_report] == 'loading'}
|
||||
<span class="fas fa-spinner fa-spin"></span>
|
||||
{/if}
|
||||
|
||||
|
||||
{#if $events_loc.pres_mgmt.rpt__session_poc_agree}
|
||||
{#if $events_loc.pres_mgmt?.rpt__session_poc_agree}
|
||||
<span class="fas fa-check m-1"></span>
|
||||
Session {$events_loc.pres_mgmt?.label__session_poc_name}s
|
||||
Agreed
|
||||
@@ -637,10 +669,11 @@ async function handle_qry__event_session(
|
||||
type="button"
|
||||
disabled={!$ae_loc.trusted_access}
|
||||
onclick={() => {
|
||||
handle_qry__event_session({
|
||||
qry_poc_kv_json: true,
|
||||
qry_poc_bios: true,
|
||||
});
|
||||
// handle_qry__event_session({
|
||||
// qry_poc_kv_json: true,
|
||||
// qry_poc_bios: true,
|
||||
// });
|
||||
ae_triggers.rpt__event_sessions = true;
|
||||
$events_loc.pres_mgmt.show_report = 'session_no_bio';
|
||||
}}
|
||||
class:hidden={$lq__event_obj?.mod_pres_mgmt_json?.hide__report_kv.session_no_bio}
|
||||
@@ -654,26 +687,6 @@ async function handle_qry__event_session(
|
||||
Session {$events_loc.pres_mgmt?.label__session_poc_name} Bios
|
||||
</button>
|
||||
|
||||
<!-- Sessions without files uploaded -->
|
||||
<button
|
||||
type="button"
|
||||
disabled={!$ae_loc.trusted_access}
|
||||
onclick={() => {
|
||||
handle_qry__event_session({
|
||||
qry_files: false,
|
||||
});
|
||||
$events_loc.pres_mgmt.show_report = 'session_no_files';
|
||||
}}
|
||||
class="btn btn-sm preset-tonal-success border border-success-500 hover:preset-filled-success-500 transition-all m-1"
|
||||
title="Show sessions without files uploaded."
|
||||
>
|
||||
{#if $events_sess.pres_mgmt?.show_report == 'session_no_files' && $events_sess.pres_mgmt.status_rpt[$events_sess.pres_mgmt?.show_report] == 'loading'}
|
||||
<span class="fas fa-spinner fa-spin"></span>
|
||||
{/if}
|
||||
<span class="fas fa-clipboard-list m-1"></span>
|
||||
Sessions without Files
|
||||
</button>
|
||||
|
||||
</span>
|
||||
|
||||
<span class="border border-gray-200 rounded-md p-1">
|
||||
@@ -812,10 +825,37 @@ async function handle_qry__event_session(
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- All Event Session related reports -->
|
||||
{#if $events_loc.pres_mgmt.show_report == 'session_no_files' || $events_loc.pres_mgmt.show_report == 'session_no_bio' || $events_loc.pres_mgmt.show_report == 'sessions_poc_agree'}
|
||||
<Reports_sessions
|
||||
lq__event_obj={lq__event_obj}
|
||||
event_session_obj_li={$events_sess.event_session_obj_li}
|
||||
|
||||
rpt__name={$events_loc.pres_mgmt.show_report}
|
||||
rpt__sort={$events_loc.pres_mgmt.qry__session_sort}
|
||||
rpt__enabled={$events_loc.pres_mgmt.qry_enabled}
|
||||
rpt__hidden={$events_loc.pres_mgmt.qry_hidden}
|
||||
rpt__limit={$events_loc.pres_mgmt.qry_limit__sessions}
|
||||
|
||||
bind:qry__status={$events_sess.pres_mgmt.status_qry__search}
|
||||
qry__count={$events_sess.event_session_obj_li?.length ?? 0}
|
||||
|
||||
qry__trigger={ae_triggers.rpt__event_sessions}
|
||||
|
||||
hide_session_code={$events_loc.pres_mgmt?.hide__session_code}
|
||||
|
||||
log_lvl={log_lvl}
|
||||
/>
|
||||
{/if}
|
||||
|
||||
|
||||
<!-- Show session POC that have agreed -->
|
||||
{#if $events_loc.pres_mgmt.show_report == 'sessions_poc_agree' && event_session_id_random_li}
|
||||
<!-- {#if $events_loc.pres_mgmt.show_report == 'sessions_poc_agree' && event_session_id_random_li}
|
||||
<h3 class="h4 text-center">
|
||||
Sessions POC {#if $events_loc.pres_mgmt.rpt__session_poc_agree}Agreed{:else}Not Agreed{/if}
|
||||
Sessions POC
|
||||
{#if $events_loc.pres_mgmt.rpt__session_poc_agree}Agreed{:else}Not Agreed{/if}
|
||||
|
||||
<button
|
||||
type="button"
|
||||
onclick={() => {
|
||||
@@ -837,9 +877,6 @@ async function handle_qry__event_session(
|
||||
{/if}
|
||||
</button>
|
||||
</h3>
|
||||
<!-- {#if !$events_loc.pres_mgmt.rpt__session_poc_agree}
|
||||
<p class="text-center text-red-500 font-bold">This report is not complete! Some records will be missing from these results. This report is being worked on.</p>
|
||||
{/if} -->
|
||||
|
||||
<Comp_event_session_obj_tbl
|
||||
link_to_type="event"
|
||||
@@ -848,9 +885,9 @@ async function handle_qry__event_session(
|
||||
log_lvl={1}
|
||||
>
|
||||
</Comp_event_session_obj_tbl>
|
||||
{/if}
|
||||
{/if} -->
|
||||
|
||||
{#if $events_loc.pres_mgmt.show_report == 'session_no_bio' && event_session_id_random_li}
|
||||
<!-- {#if $events_loc.pres_mgmt.show_report == 'session_no_bio' && event_session_id_random_li}
|
||||
<h3 class="h4 text-center">Sessions POC Bios</h3>
|
||||
|
||||
<Comp_event_session_obj_tbl
|
||||
@@ -860,11 +897,42 @@ async function handle_qry__event_session(
|
||||
log_lvl={1}
|
||||
>
|
||||
</Comp_event_session_obj_tbl>
|
||||
{/if}
|
||||
{/if} -->
|
||||
|
||||
<!-- Show sessions without files -->
|
||||
{#if $events_loc.pres_mgmt.show_report == 'session_no_files' && event_session_id_random_li}
|
||||
<h3 class="h4 text-center">Sessions without Files</h3>
|
||||
<!-- {#if $events_loc.pres_mgmt.show_report == 'session_no_files' && event_session_id_random_li}
|
||||
<h3 class="h4 text-center">
|
||||
Sessions
|
||||
{#if $events_loc.pres_mgmt?.rpt__session_no_files}
|
||||
With
|
||||
{:else}
|
||||
Without
|
||||
{/if}
|
||||
Files
|
||||
|
||||
<button
|
||||
type="button"
|
||||
onclick={() => {
|
||||
$events_loc.pres_mgmt.rpt__session_no_files = !$events_loc.pres_mgmt.rpt__session_no_files;
|
||||
ae_promises.handle_qry__event_session =
|
||||
handle_qry__event_session({
|
||||
qry_files: !$events_loc.pres_mgmt.rpt__session_no_files ?? false,
|
||||
});
|
||||
|
||||
$events_loc.pres_mgmt.show_report = 'session_no_files';
|
||||
qry__trigger = true;
|
||||
}}
|
||||
class="ae_btn_info btn-sm m-1"
|
||||
>
|
||||
{#if $events_loc.pres_mgmt?.rpt__session_no_files}
|
||||
<span class="fas fa-toggle-on m-1"></span>
|
||||
With
|
||||
{:else}
|
||||
<span class="fas fa-toggle-off m-1"></span>
|
||||
Without
|
||||
{/if}
|
||||
</button>
|
||||
</h3>
|
||||
|
||||
<Comp_event_session_obj_tbl
|
||||
link_to_type="event"
|
||||
@@ -873,7 +941,7 @@ async function handle_qry__event_session(
|
||||
log_lvl={1}
|
||||
>
|
||||
</Comp_event_session_obj_tbl>
|
||||
{/if}
|
||||
{/if} -->
|
||||
|
||||
|
||||
<!-- All Event Presenter related reports -->
|
||||
@@ -1198,6 +1266,7 @@ async function handle_qry__event_session(
|
||||
show_presenter_fields={true}
|
||||
show_presentation_fields={true}
|
||||
show_session_fields={true}
|
||||
hide_session_code={$events_loc.pres_mgmt?.hide__session_code}
|
||||
>
|
||||
</Comp_event_file_obj_tbl>
|
||||
{/if}
|
||||
@@ -1283,6 +1352,7 @@ async function handle_qry__event_session(
|
||||
show_presenter_fields={true}
|
||||
show_presentation_fields={true}
|
||||
show_session_fields={true}
|
||||
hide_session_code={$events_loc.pres_mgmt?.hide__session_code}
|
||||
>
|
||||
</Comp_event_file_obj_tbl>
|
||||
{/if}
|
||||
|
||||
@@ -234,7 +234,9 @@ async function handle_search__event_presenter(
|
||||
$events_sess.event_presenter_obj_li = search_results;
|
||||
// $events_slct.event_presenter_obj_li = search_results;
|
||||
event_presenter_obj_li = search_results;
|
||||
console.log(event_presenter_obj_li);
|
||||
if (log_lvl) {
|
||||
console.log(event_presenter_obj_li);
|
||||
}
|
||||
// $events_sess.pres_mgmt.status_qry__search = 'done';
|
||||
})
|
||||
.finally(() => {
|
||||
@@ -289,7 +291,6 @@ async function handle_search__event_presenter(
|
||||
<!-- {event_presenter_obj_li.length ?? 0} -->
|
||||
</h3>
|
||||
|
||||
|
||||
<div class="flex flex-row items-center justify-center">
|
||||
<button
|
||||
type="button"
|
||||
@@ -394,14 +395,6 @@ async function handle_search__event_presenter(
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
<!-- <Comp_event_presenter_obj_tbl
|
||||
bind:event_presenter_obj_li={event_presenter_obj_li}
|
||||
show_presentation_fields={true}
|
||||
show_session_fields={true}
|
||||
log_lvl={log_lvl}
|
||||
>
|
||||
</Comp_event_presenter_obj_tbl> -->
|
||||
{/if}
|
||||
|
||||
|
||||
|
||||
430
src/routes/events/[event_id]/reports/reports_sessions.svelte
Normal file
430
src/routes/events/[event_id]/reports/reports_sessions.svelte
Normal file
@@ -0,0 +1,430 @@
|
||||
<script lang="ts">
|
||||
interface Props {
|
||||
log_lvl?: number;
|
||||
lq__event_obj: any;
|
||||
|
||||
event_session_obj_li?: any[];
|
||||
|
||||
rpt__name?: string;
|
||||
rpt__sort?: string;
|
||||
rpt__order_by_li?: any;
|
||||
rpt__enabled?: string;
|
||||
rpt__hidden?: string;
|
||||
rpt__limit?: number;
|
||||
|
||||
qry__status?: string;
|
||||
qry__count?: number;
|
||||
|
||||
qry__trigger?: boolean;
|
||||
|
||||
// show_presentation_fields?: boolean;
|
||||
// show_session_fields?: boolean;
|
||||
hide_session_code?: boolean;
|
||||
}
|
||||
|
||||
let {
|
||||
log_lvl = $bindable(0),
|
||||
lq__event_obj, // This is the live query so it updates automatically anyways?
|
||||
|
||||
event_session_obj_li = $bindable([]),
|
||||
|
||||
rpt__name = $bindable('session_no_files'), // presenters_agree, presenters_biography, presenters_overview
|
||||
rpt__sort = $bindable('updated_on'), // updated_on, given_name, family_name, email, start_datetime
|
||||
rpt__order_by_li = $bindable({'updated_on': 'DESC', 'priority': 'DESC', 'sort': 'DESC', 'given_name': 'ASC', 'family_name': 'ASC', 'email': 'ASC', 'created_on': 'DESC'}),
|
||||
rpt__enabled = $bindable('enabled'), // enabled, disabled, all
|
||||
rpt__hidden = $bindable('not_hidden'), // hidden, not_hidden, all
|
||||
rpt__limit = $bindable(150),
|
||||
|
||||
qry__status = $bindable(''), // loading, processing, done
|
||||
qry__count = $bindable(0),
|
||||
|
||||
qry__trigger = $bindable(true),
|
||||
|
||||
// show_presentation_fields = false,
|
||||
// show_session_fields = false,
|
||||
hide_session_code = false,
|
||||
}: Props = $props();
|
||||
|
||||
// *** Import Svelte specific
|
||||
|
||||
// *** Import other supporting libraries
|
||||
|
||||
// *** Import Aether specific variables and functions
|
||||
import type { key_val } from '$lib/ae_stores';
|
||||
// import { ae_util } from '$lib/ae_utils/ae_utils';
|
||||
import { ae_snip, ae_loc, ae_sess, ae_api, ae_trig, slct, slct_trigger } from '$lib/ae_stores';
|
||||
// import { db_events } from "$lib/ae_events/db_events";
|
||||
import { events_loc, events_sess, events_slct, events_trigger } from '$lib/ae_events_stores';
|
||||
import { events_func } from '$lib/ae_events_functions';
|
||||
import Comp_event_session_obj_tbl from '../../ae_comp__event_session_obj_tbl_wrapper.svelte';
|
||||
|
||||
let ae_promises: key_val = $state({});
|
||||
|
||||
let sort_option_kv: key_val = {
|
||||
'updated_on': {
|
||||
name: 'Updated On',
|
||||
field_kv: {
|
||||
'event_presentation_start_datetime': 'ASC',
|
||||
'priority': 'DESC',
|
||||
'sort': 'DESC',
|
||||
'given_name': 'ASC',
|
||||
'family_name': 'ASC',
|
||||
'email': 'ASC',
|
||||
'updated_on': 'DESC',
|
||||
'created_on': 'DESC',
|
||||
}
|
||||
},
|
||||
'given_name': {
|
||||
name: 'Given Name',
|
||||
field_kv: {
|
||||
'given_name': 'ASC',
|
||||
'family_name': 'ASC',
|
||||
'updated_on': 'DESC',
|
||||
'priority': 'DESC',
|
||||
'sort': 'DESC',
|
||||
'email': 'ASC',
|
||||
'created_on': 'DESC',
|
||||
}
|
||||
},
|
||||
'family_name': {
|
||||
name: 'Family Name',
|
||||
field_kv: {
|
||||
'family_name': 'ASC',
|
||||
'given_name': 'ASC',
|
||||
'updated_on': 'DESC',
|
||||
'priority': 'DESC',
|
||||
'sort': 'DESC',
|
||||
'email': 'ASC',
|
||||
'created_on': 'DESC',
|
||||
}
|
||||
},
|
||||
'email': {
|
||||
name: 'Email',
|
||||
field_kv: {
|
||||
'email': 'ASC',
|
||||
'given_name': 'ASC',
|
||||
'family_name': 'ASC',
|
||||
'updated_on': 'DESC',
|
||||
'priority': 'DESC',
|
||||
'sort': 'DESC',
|
||||
'created_on': 'DESC',
|
||||
|
||||
}
|
||||
},
|
||||
'start_datetime': {
|
||||
name: 'Start Date Time',
|
||||
field_kv: {
|
||||
'event_presentation_start_datetime': 'ASC',
|
||||
'priority': 'DESC',
|
||||
'sort': 'DESC',
|
||||
'given_name': 'ASC',
|
||||
'family_name': 'ASC',
|
||||
'email': 'ASC',
|
||||
'updated_on': 'DESC',
|
||||
'created_on': 'DESC',
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
$effect(() => {
|
||||
if (qry__trigger) {
|
||||
qry__trigger = false;
|
||||
if (rpt__name == 'session_no_files') {
|
||||
handle_qry__event_session({
|
||||
qry_files: $events_loc.pres_mgmt.rpt__session_no_files ?? false,
|
||||
order_by_li: rpt__order_by_li,
|
||||
log_lvl: log_lvl,
|
||||
});
|
||||
} else if (rpt__name == 'sessions_poc_agree') {
|
||||
handle_qry__event_session({
|
||||
// qry_poc_kv_json: false,
|
||||
qry_poc_agree: $events_loc.pres_mgmt.rpt__session_poc_agree ?? false,
|
||||
order_by_li: rpt__order_by_li,
|
||||
log_lvl: 1,
|
||||
});
|
||||
} else if (rpt__name == 'session_no_bio') {
|
||||
handle_qry__event_session({
|
||||
qry_poc_kv_json: true,
|
||||
qry_poc_bios: $events_loc.pres_mgmt.rpt__session_no_bio ?? false,
|
||||
order_by_li: rpt__order_by_li,
|
||||
log_lvl: log_lvl,
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Updated 2024-10-15
|
||||
async function handle_qry__event_session(
|
||||
{
|
||||
qry_files = null,
|
||||
// file_count = false,
|
||||
// file_count_all = null,
|
||||
// ft_search_str = '',
|
||||
// lk_search_str = '',
|
||||
qry_poc_agree = null,
|
||||
qry_poc_kv_json = null,
|
||||
qry_poc_bios = null,
|
||||
enabled = $events_loc.pres_mgmt.qry_enabled ?? 'enabled',
|
||||
hidden = $events_loc.pres_mgmt.qry_hidden ?? 'not_hidden',
|
||||
limit = $events_loc.pres_mgmt.qry_limit__sessions ?? 150,
|
||||
order_by_li = rpt__order_by_li,
|
||||
log_lvl = 0,
|
||||
}: {
|
||||
qry_files?: null|boolean,
|
||||
// file_count?: boolean,
|
||||
// file_count_all?: null|number,
|
||||
// ft_search_str?: string,
|
||||
// lk_search_str?: string,
|
||||
qry_poc_agree?: null|boolean,
|
||||
qry_poc_kv_json?: null|boolean,
|
||||
qry_poc_bios?: null|boolean,
|
||||
enabled?: string,
|
||||
hidden?: string,
|
||||
limit?: number,
|
||||
order_by_li?: key_val,
|
||||
log_lvl?: number,
|
||||
}
|
||||
) {
|
||||
if (log_lvl) {
|
||||
console.log('handle_qry__event_session()');
|
||||
}
|
||||
|
||||
$events_sess.pres_mgmt.status_qry__search = 'loading';
|
||||
$events_sess.pres_mgmt.status_rpt[rpt__name] = 'loading';
|
||||
qry__status = 'loading';
|
||||
qry__count = 0;
|
||||
|
||||
$events_sess.event_session_obj_li = [];
|
||||
$events_slct.event_session_obj_li = []; // Clear out any previous results.
|
||||
event_session_obj_li = [];
|
||||
|
||||
ae_promises.handle_qry__event_session = events_func.qry__event_session({
|
||||
api_cfg: $ae_api,
|
||||
event_id: $events_slct.event_id,
|
||||
// file_count_all: file_count_all,
|
||||
// fulltext_search_qry_str: ft_search_str,
|
||||
// like_search_qry_str: lk_search_str,
|
||||
// external_event_id: $events_loc.pres_mgmt.default__external_registration_id,
|
||||
qry_files: qry_files,
|
||||
qry_start_datetime: null,
|
||||
qry_poc_agree: qry_poc_agree,
|
||||
qry_poc_kv_json: qry_poc_kv_json,
|
||||
enabled: enabled,
|
||||
hidden: hidden,
|
||||
limit: limit,
|
||||
// order_by_li: order_by_li,
|
||||
log_lvl: log_lvl,
|
||||
})
|
||||
.then(function (search_results) {
|
||||
// Processing the results from the search.
|
||||
$events_sess.pres_mgmt.status_qry__search = 'processing';
|
||||
$events_sess.pres_mgmt.status_rpt[rpt__name] = 'processing';
|
||||
qry__status = 'processing';
|
||||
qry__count = search_results?.length ?? 0;
|
||||
|
||||
$events_sess.event_session_obj_li = search_results;
|
||||
event_session_obj_li = search_results;
|
||||
if (log_lvl) {
|
||||
console.log(`Search results:`, search_results);
|
||||
}
|
||||
// $events_sess.pres_mgmt.status_qry__search = 'done';
|
||||
})
|
||||
.finally(() => {
|
||||
if (log_lvl) {
|
||||
console.log('API query done. Pulling out the event_session_id_random values.');
|
||||
}
|
||||
// console.log(`TEST search: ${$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.
|
||||
let tmp_li = []; // This is to prevent the array from constantly updating and triggering the liveQuery.
|
||||
if ($events_slct.event_session_obj_li) {
|
||||
for (let i = 0; i < $events_slct.event_session_obj_li.length; i++) {
|
||||
if (qry_poc_bios && $events_slct.event_session_obj_li[i].poc_kv_json) {
|
||||
if ($events_slct.event_session_obj_li[i].poc_kv_json['champion']?.biography.length > 1) {
|
||||
console.log(`Biography for session:`, $events_slct.event_session_obj_li[i]);
|
||||
tmp_li.push($events_slct.event_session_obj_li[i].event_session_id_random);
|
||||
} else {
|
||||
console.log(`No biography for session:`, $events_slct.event_session_obj_li[i]);
|
||||
}
|
||||
} else {
|
||||
// console.log(`Pushing session to array (no biography):`, $events_slct.event_session_obj_li[i]);
|
||||
tmp_li.push($events_slct.event_session_obj_li[i].event_session_id_random);
|
||||
}
|
||||
}
|
||||
}
|
||||
// event_session_id_random_li = tmp_li;
|
||||
|
||||
// event_session_id_random_li = $events_slct.event_session_obj_li.map(session_obj => session_obj.event_session_id_random);
|
||||
|
||||
// Finally done with the search.
|
||||
$events_sess.pres_mgmt.status_qry__search = 'done';
|
||||
$events_sess.pres_mgmt.status_rpt[rpt__name] = 'done';
|
||||
|
||||
qry__status = 'done';
|
||||
|
||||
// if (log_lvl > 1) {
|
||||
// console.log(`TEST SEARCH - event_session_id_random_li:`, event_session_id_random_li);
|
||||
// // console.log(`TEST SEARCH - search live query: ${$lq_kv__event_session_obj_li}`);
|
||||
// }
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<!-- Show sessions that have files -->
|
||||
{#if rpt__name == 'session_no_files'}
|
||||
<header class="w-full flex flex-row flex-wrap items-center justify-center gap-1">
|
||||
<h3 class="h4 text-center">
|
||||
{#if qry__status == 'loading'}
|
||||
<span class="fas fa-spinner fa-spin m-1"></span>
|
||||
<!-- <span>Loading...</span> -->
|
||||
{:else if $events_loc.pres_mgmt.rpt__session_no_files}
|
||||
<span class="fas fa-check m-1"></span>
|
||||
{:else}
|
||||
<span class="fas fa-times m-1"></span>
|
||||
{/if}
|
||||
Sessions
|
||||
{#if $events_loc.pres_mgmt?.rpt__session_no_files}
|
||||
With
|
||||
{:else}
|
||||
Without
|
||||
{/if}
|
||||
Files
|
||||
|
||||
<div class="flex flex-row items-center justify-center">
|
||||
<button
|
||||
type="button"
|
||||
onclick={() => {
|
||||
$events_loc.pres_mgmt.rpt__session_no_files = !$events_loc.pres_mgmt.rpt__session_no_files;
|
||||
// ae_promises.handle_qry__event_session =
|
||||
// handle_qry__event_session({
|
||||
// qry_files: !$events_loc.pres_mgmt.rpt__session_no_files,
|
||||
// });
|
||||
|
||||
rpt__name = 'session_no_files';
|
||||
qry__trigger = true;
|
||||
}}
|
||||
class="ae_btn_info btn-sm m-1"
|
||||
>
|
||||
{#if $events_loc.pres_mgmt?.rpt__session_no_files}
|
||||
<span class="fas fa-toggle-on m-1"></span>
|
||||
With
|
||||
{:else}
|
||||
<span class="fas fa-toggle-off m-1"></span>
|
||||
Without
|
||||
{/if}
|
||||
</button>
|
||||
</div>
|
||||
</h3>
|
||||
</header>
|
||||
{/if}
|
||||
|
||||
<!-- Show sessions that have POC biographies -->
|
||||
{#if rpt__name == 'sessions_no_bio'}
|
||||
<header class="w-full flex flex-row flex-wrap items-center justify-center gap-1">
|
||||
<h3 class="h4 text-center">
|
||||
{#if qry__status == 'loading'}
|
||||
<span class="fas fa-spinner fa-spin m-1"></span>
|
||||
<!-- <span>Loading...</span> -->
|
||||
{:else}
|
||||
<span class="fas fa-list m-1"></span>
|
||||
{/if}
|
||||
Sessions
|
||||
{#if $events_loc.pres_mgmt?.rpt__session_no_bio}
|
||||
With
|
||||
{:else}
|
||||
Without
|
||||
{/if}
|
||||
POC Biography
|
||||
</h3>
|
||||
|
||||
<div class="flex flex-row items-center justify-center">
|
||||
<button
|
||||
type="button"
|
||||
onclick={() => {
|
||||
$events_loc.pres_mgmt.rpt__session_no_bio = !$events_loc.pres_mgmt.rpt__session_no_bio;
|
||||
// ae_promises.handle_qry__event_session =
|
||||
// handle_qry__event_session({
|
||||
// qry_poc_bios: $events_loc.pres_mgmt.rpt__session_no_bio ?? false,
|
||||
// });
|
||||
|
||||
rpt__name = 'session_no_bio';
|
||||
qry__trigger = true;
|
||||
}}
|
||||
class="ae_btn_info btn-sm m-1"
|
||||
>
|
||||
{#if $events_loc.pres_mgmt?.rpt__session_no_bio}
|
||||
<span class="fas fa-toggle-on m-1"></span>
|
||||
With
|
||||
{:else}
|
||||
<span class="fas fa-toggle-off m-1"></span>
|
||||
Without
|
||||
{/if}
|
||||
</button>
|
||||
</div>
|
||||
</header>
|
||||
{/if}
|
||||
|
||||
<!-- Show sessions that have POC agreed to terms -->
|
||||
{#if rpt__name == 'sessions_poc_agree'}
|
||||
<header class="w-full flex flex-row flex-wrap items-center justify-center gap-1">
|
||||
<h3 class="h4 text-center">
|
||||
{#if qry__status == 'loading'}
|
||||
<span class="fas fa-spinner fa-spin m-1"></span>
|
||||
<!-- <span>Loading...</span> -->
|
||||
{:else}
|
||||
<span class="fas fa-list m-1"></span>
|
||||
{/if}
|
||||
Sessions POC
|
||||
{#if $events_loc.pres_mgmt?.rpt__session_poc_agree}
|
||||
Agreed
|
||||
{:else}
|
||||
Not Agreed
|
||||
{/if}
|
||||
to Terms
|
||||
</h3>
|
||||
|
||||
<div class="flex flex-row items-center justify-center">
|
||||
<button
|
||||
type="button"
|
||||
onclick={() => {
|
||||
$events_loc.pres_mgmt.rpt__session_poc_agree = !$events_loc.pres_mgmt.rpt__session_poc_agree;
|
||||
// ae_promises.handle_qry__event_session =
|
||||
// handle_qry__event_session({
|
||||
// qry_poc_agree: $events_loc.pres_mgmt.rpt__session_poc_agree ?? false,
|
||||
// });
|
||||
|
||||
rpt__name = 'sessions_poc_agree';
|
||||
qry__trigger = true;
|
||||
}}
|
||||
class="ae_btn_info btn-sm m-1"
|
||||
>
|
||||
{#if $events_loc.pres_mgmt?.rpt__session_poc_agree}
|
||||
<span class="fas fa-toggle-on m-1"></span>
|
||||
With
|
||||
{:else}
|
||||
<span class="fas fa-toggle-off m-1"></span>
|
||||
Without
|
||||
{/if}
|
||||
</button>
|
||||
</div>
|
||||
</header>
|
||||
{/if}
|
||||
|
||||
|
||||
{#if event_session_obj_li}
|
||||
<Comp_event_session_obj_tbl
|
||||
link_to_type="event"
|
||||
link_to_id={$events_slct.event_id}
|
||||
bind:event_session_obj_li={event_session_obj_li}
|
||||
hide_session_code={hide_session_code}
|
||||
log_lvl={log_lvl}
|
||||
>
|
||||
</Comp_event_session_obj_tbl>
|
||||
{/if}
|
||||
@@ -1,4 +1,31 @@
|
||||
<script lang="ts">
|
||||
interface Props {
|
||||
// Exports
|
||||
container_class_li?: string|Array<string>;
|
||||
event_file_id_random_li?: Array<string>;
|
||||
allow_basic?: boolean;
|
||||
allow_moderator?: boolean;
|
||||
// export let max_records: number = 100;
|
||||
show_direct_download?: boolean;
|
||||
show_location_fields?: boolean;
|
||||
show_presentation_fields?: boolean;
|
||||
// export let show_presenter_fields: boolean = false;
|
||||
show_session_fields?: boolean;
|
||||
hide_session_code?: boolean;
|
||||
}
|
||||
|
||||
let {
|
||||
container_class_li = [],
|
||||
event_file_id_random_li = [],
|
||||
allow_basic = false,
|
||||
allow_moderator = false,
|
||||
show_direct_download = false,
|
||||
show_location_fields = false,
|
||||
show_presentation_fields = false,
|
||||
show_session_fields = false,
|
||||
hide_session_code = false
|
||||
}: Props = $props();
|
||||
|
||||
// Imports
|
||||
import { liveQuery } from "dexie";
|
||||
|
||||
@@ -12,35 +39,41 @@ import { ae_snip, ae_loc, ae_sess, ae_api, ae_trig, slct, slct_trigger } from '$
|
||||
// import { events_func } from '$lib/ae_events_functions';
|
||||
import MyClipboard from '$lib/e_app_clipboard.svelte';
|
||||
|
||||
// Exports
|
||||
export let container_class_li: string|Array<string> = [];
|
||||
export let event_file_id_random_li: Array<string> = [];
|
||||
export let allow_basic: boolean = false;
|
||||
export let allow_moderator: boolean = false;
|
||||
// export let max_records: number = 100;
|
||||
export let show_direct_download: boolean = false;
|
||||
export let show_location_fields: boolean = false;
|
||||
export let show_presentation_fields: boolean = false;
|
||||
// export let show_presenter_fields: boolean = false;
|
||||
export let show_session_fields: boolean = false;
|
||||
|
||||
// export let display_mode: string = 'default'; // 'default', 'compact', 'minimal', 'launcher'
|
||||
|
||||
// Variables
|
||||
let ae_promises: key_val = {};
|
||||
let ae_promises: key_val = $state({});
|
||||
|
||||
// *** Functions and Logic
|
||||
// let lq__event_file_obj = liveQuery(
|
||||
// () => db_events.files.get($events_slct.event_file_id)
|
||||
// );
|
||||
|
||||
let lq_kv__event_file_obj_li = liveQuery(
|
||||
() => db_events.files
|
||||
.bulkGet(event_file_id_random_li)
|
||||
);
|
||||
let lq_kv__event_file_obj_li = $derived(liveQuery(async () => {
|
||||
// let lq_kv__event_file_obj_li = liveQuery(
|
||||
let results = await db_events.files
|
||||
.bulkGet(event_file_id_random_li);
|
||||
|
||||
return results;
|
||||
}));
|
||||
|
||||
// Define the list of unacceptable characters if not using the default.
|
||||
// const unacceptable_chars = /[ <>:"/\\|?*]/g;
|
||||
|
||||
let horiz_scroll_warning: boolean = $state(false);
|
||||
let horiz_check_element: HTMLElement|null = $state(null);
|
||||
|
||||
// Check if element is scrolling horizontally
|
||||
$effect(() => {
|
||||
if (horiz_check_element && horiz_check_element.scrollWidth > horiz_check_element.offsetWidth) {
|
||||
horiz_scroll_warning = true;
|
||||
// console.log('Element is too wide for the container. Horizontal scrolling detected.');
|
||||
} else {
|
||||
horiz_scroll_warning = false;
|
||||
// console.log('Element fits within the container. No horizontal scrolling.', horiz_check_element);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
@@ -49,7 +82,14 @@ let lq_kv__event_file_obj_li = liveQuery(
|
||||
|
||||
{#if event_file_id_random_li && $lq_kv__event_file_obj_li && $lq_kv__event_file_obj_li?.length > 0 && $lq_kv__event_file_obj_li?.length == event_file_id_random_li?.length}
|
||||
|
||||
<div class="overflow-auto space-y-2">
|
||||
<div
|
||||
bind:this={horiz_check_element}
|
||||
id="tbl_container"
|
||||
class="overflow-auto space-y-2"
|
||||
class:border-r-2={horiz_scroll_warning}
|
||||
class:border-dashed={horiz_scroll_warning}
|
||||
class:border-warning-900-100={horiz_scroll_warning}
|
||||
>
|
||||
<h2 class="h3">
|
||||
<span class="text-base">
|
||||
Results:
|
||||
@@ -67,6 +107,7 @@ let lq_kv__event_file_obj_li = liveQuery(
|
||||
</h2>
|
||||
|
||||
<table
|
||||
|
||||
class="table table-auto table-striped w-full text-xs lg:text-sm"
|
||||
>
|
||||
<thead
|
||||
@@ -89,6 +130,9 @@ let lq_kv__event_file_obj_li = liveQuery(
|
||||
<th class="px-4 py-2">Location</th>
|
||||
{/if}
|
||||
{#if show_session_fields}
|
||||
<th class="px-4 py-2" class:hidden={hide_session_code}>
|
||||
Code
|
||||
</th>
|
||||
<th class="px-4 py-2">
|
||||
Session
|
||||
</th>
|
||||
@@ -115,7 +159,7 @@ let lq_kv__event_file_obj_li = liveQuery(
|
||||
|
||||
<button
|
||||
disabled={!allow_basic && !allow_moderator && !$ae_loc.trusted_access}
|
||||
on:click={() => {
|
||||
onclick={() => {
|
||||
// ae_promises[event_file_obj?.event_file_id_random]
|
||||
ae_promises[event_file_obj?.event_file_id_random] = api.download_hosted_file({
|
||||
api_cfg: $ae_api,
|
||||
|
||||
@@ -5,13 +5,15 @@ interface Props {
|
||||
lq__event_session_obj_li: any;
|
||||
log_lvl?: number;
|
||||
show_location_fields?: boolean;
|
||||
hide_session_code?: boolean;
|
||||
}
|
||||
|
||||
let {
|
||||
container_class_li = [],
|
||||
lq__event_session_obj_li,
|
||||
log_lvl = $bindable(0),
|
||||
show_location_fields = true
|
||||
show_location_fields = true,
|
||||
hide_session_code = false
|
||||
}: Props = $props();
|
||||
|
||||
// Imports
|
||||
@@ -33,6 +35,20 @@ if (log_lvl) {
|
||||
console.log(`container_class_li: ${container_class_li}; show_location_fields: ${show_location_fields}`);
|
||||
// console.log(`link_to_type: ${link_to_type}; link_to_id: ${link_to_id}`);
|
||||
}
|
||||
|
||||
let horiz_scroll_warning: boolean = $state(false);
|
||||
let horiz_check_element: HTMLElement|null = $state(null);
|
||||
|
||||
// Check if element is scrolling horizontally
|
||||
$effect(() => {
|
||||
if (horiz_check_element && horiz_check_element.scrollWidth > horiz_check_element.offsetWidth) {
|
||||
horiz_scroll_warning = true;
|
||||
// console.log('Element is too wide for the container. Horizontal scrolling detected.');
|
||||
} else {
|
||||
horiz_scroll_warning = false;
|
||||
// console.log('Element fits within the container. No horizontal scrolling.', horiz_check_element);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
@@ -40,7 +56,14 @@ if (log_lvl) {
|
||||
|
||||
{#if $lq__event_session_obj_li && $lq__event_session_obj_li?.length}
|
||||
|
||||
<div class="overflow-auto space-y-2">
|
||||
<div
|
||||
bind:this={horiz_check_element}
|
||||
id="tbl_container"
|
||||
class="overflow-auto space-y-2"
|
||||
class:border-r-2={horiz_scroll_warning}
|
||||
class:border-dashed={horiz_scroll_warning}
|
||||
class:border-warning-900-100={horiz_scroll_warning}
|
||||
>
|
||||
<h2 class="h3">
|
||||
<span class="text-base">
|
||||
Results:
|
||||
@@ -58,7 +81,7 @@ if (log_lvl) {
|
||||
</h2>
|
||||
|
||||
<table
|
||||
class="table table-auto table-striped w-full text-xs lg:text-sm"
|
||||
class="table table-auto table-striped w-full text-xs lg:text-sm"
|
||||
>
|
||||
<thead
|
||||
class=""
|
||||
|
||||
@@ -3,21 +3,25 @@ interface Props {
|
||||
// Exports
|
||||
container_class_li?: string|Array<string>;
|
||||
// export let display_mode: string = 'default'; // 'default', 'compact', 'minimal', 'launcher'
|
||||
event_session_id_random_li: Array<string>;
|
||||
// event_session_id_random_li: Array<string>;
|
||||
event_session_obj_li?: Array<any>;
|
||||
link_to_type: string;
|
||||
link_to_id: string;
|
||||
// export let lq__event_presentation_obj
|
||||
log_lvl?: number;
|
||||
show_location_fields?: boolean;
|
||||
hide_session_code?: boolean;
|
||||
}
|
||||
|
||||
let {
|
||||
container_class_li = [],
|
||||
event_session_id_random_li,
|
||||
// event_session_id_random_li,
|
||||
event_session_obj_li = $bindable(),
|
||||
link_to_type,
|
||||
link_to_id,
|
||||
log_lvl = $bindable(0),
|
||||
show_location_fields = true
|
||||
show_location_fields = true,
|
||||
hide_session_code = false,
|
||||
}: Props = $props();
|
||||
|
||||
|
||||
@@ -25,46 +29,103 @@ let {
|
||||
import Comp_event_session_obj_tbl from './ae_comp__event_session_obj_tbl.svelte';
|
||||
|
||||
import { liveQuery } from "dexie";
|
||||
import { events_loc, events_sess, events_slct, events_trigger } from '$lib/ae_events_stores';
|
||||
import { db_events } from "$lib/ae_events/db_events";
|
||||
|
||||
if (log_lvl) {
|
||||
console.log(`link_to_type: ${link_to_type}; link_to_id: ${link_to_id}`);
|
||||
}
|
||||
|
||||
|
||||
// Variables
|
||||
// let ae_promises: key_val = {};
|
||||
// let ae_tmp: key_val = {};
|
||||
// let ae_triggers: key_val = {};
|
||||
|
||||
let event_session_id_random_li: Array<string> = $state([]);
|
||||
|
||||
let dq__where_type_id_val: string = `${link_to_type}_id_random`;
|
||||
let dq__where_eq_id_val: string = link_to_id;
|
||||
|
||||
|
||||
// *** Functions and Logic
|
||||
let lq__event_session_obj_li = $derived(liveQuery(async () => {
|
||||
if (event_session_id_random_li.length) {
|
||||
let results = await db_events.sessions
|
||||
.bulkGet(event_session_id_random_li);
|
||||
let results: any;
|
||||
|
||||
return results;
|
||||
if (event_session_obj_li?.length) {
|
||||
if (log_lvl) {
|
||||
console.log(`LQ - Using event_session_obj_li to get event sessions.`);
|
||||
}
|
||||
|
||||
event_session_id_random_li = []; // This is to prevent the array from constantly updating and triggering the liveQuery.
|
||||
|
||||
for (let i = 0; i < event_session_obj_li.length; i++) {
|
||||
let event_session_obj = event_session_obj_li[i];
|
||||
let event_session_id_random = event_session_obj.event_session_id_random;
|
||||
event_session_id_random_li.push(event_session_id_random);
|
||||
}
|
||||
|
||||
// if (event_session_id_random_li.length) {
|
||||
results = await db_events.sessions
|
||||
.bulkGet(event_session_id_random_li);
|
||||
// }
|
||||
} else if (link_to_type && link_to_id) {
|
||||
console.log(`Trying where: ${dq__where_type_id_val}; equals: ${dq__where_eq_id_val}`);
|
||||
let results = await db_events.sessions
|
||||
event_session_id_random_li = [];
|
||||
results = await db_events.sessions
|
||||
.where(dq__where_type_id_val)
|
||||
.equals(dq__where_eq_id_val)
|
||||
.sortBy('name')
|
||||
|
||||
return results;
|
||||
.sortBy('name');
|
||||
} else {
|
||||
return null;
|
||||
event_session_id_random_li = [];
|
||||
results = [];
|
||||
}
|
||||
|
||||
// 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.journal_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.journal_id}`);
|
||||
}
|
||||
}
|
||||
|
||||
return results;
|
||||
|
||||
// if (event_session_id_random_li.length) {
|
||||
// let results = await db_events.sessions
|
||||
// .bulkGet(event_session_id_random_li);
|
||||
|
||||
// return results;
|
||||
// } else if (link_to_type && link_to_id) {
|
||||
// console.log(`Trying where: ${dq__where_type_id_val}; equals: ${dq__where_eq_id_val}`);
|
||||
// let results = await db_events.sessions
|
||||
// .where(dq__where_type_id_val)
|
||||
// .equals(dq__where_eq_id_val)
|
||||
// .sortBy('name')
|
||||
|
||||
// return results;
|
||||
// } else {
|
||||
// return null;
|
||||
// }
|
||||
}));
|
||||
</script>
|
||||
|
||||
|
||||
<Comp_event_session_obj_tbl
|
||||
container_class_li={container_class_li}
|
||||
lq__event_session_obj_li={lq__event_session_obj_li}
|
||||
show_location_fields={show_location_fields}
|
||||
log_lvl={log_lvl}
|
||||
>
|
||||
</Comp_event_session_obj_tbl>
|
||||
{#if event_session_obj_li && event_session_obj_li?.length}
|
||||
<Comp_event_session_obj_tbl
|
||||
container_class_li={container_class_li}
|
||||
lq__event_session_obj_li={lq__event_session_obj_li}
|
||||
show_location_fields={show_location_fields}
|
||||
hide_session_code={hide_session_code}
|
||||
log_lvl={log_lvl}
|
||||
>
|
||||
</Comp_event_session_obj_tbl>
|
||||
{:else}
|
||||
<section class="grow px-1 md:px-2 pb-28 flex flex-col gap-1 items-center">
|
||||
<p>No sessions available to show in table.</p>
|
||||
</section>
|
||||
{/if}
|
||||
Reference in New Issue
Block a user