Work on Event reports.

This commit is contained in:
Scott Idem
2025-09-04 12:30:32 -04:00
parent 4fcf28f303
commit 390bcf05a4
4 changed files with 204 additions and 178 deletions

View File

@@ -494,6 +494,10 @@ export async function search__event_presenter(
like_search_qry_str = null, like_search_qry_str = null,
like_presentation_search_qry_str = null, like_presentation_search_qry_str = null,
like_presenter_search_qry_str = null, like_presenter_search_qry_str = null,
enabled = 'enabled',
hidden = 'not_hidden',
limit = 49,
offset = 0,
order_by_li = {'priority': 'DESC', 'sort': 'DESC', 'given_name': 'ASC', 'family_name': 'ASC', 'email': 'ASC', 'updated_on': 'DESC', 'created_on': 'DESC'}, order_by_li = {'priority': 'DESC', 'sort': 'DESC', 'given_name': 'ASC', 'family_name': 'ASC', 'email': 'ASC', 'updated_on': 'DESC', 'created_on': 'DESC'},
params = {}, params = {},
try_cache = true, try_cache = true,
@@ -508,6 +512,10 @@ export async function search__event_presenter(
like_search_qry_str?: null|string, like_search_qry_str?: null|string,
like_presentation_search_qry_str?: null|string, like_presentation_search_qry_str?: null|string,
like_presenter_search_qry_str?: null|string, like_presenter_search_qry_str?: null|string,
enabled?: string,
hidden?: string,
limit?: number,
offset?: number,
order_by_li?: key_val, order_by_li?: key_val,
params?: any, params?: any,
try_cache?: boolean, try_cache?: boolean,
@@ -518,10 +526,10 @@ export async function search__event_presenter(
console.log(`*** search__event_presenter() *** event_id=${event_id}`); console.log(`*** search__event_presenter() *** event_id=${event_id}`);
} }
let enabled: string = (params.qry__enabled ?? 'enabled'); // all, disabled, enabled // let enabled: string = (params.qry__enabled ?? 'enabled'); // all, disabled, enabled
let hidden: string = (params.qry__hidden ?? 'not_hidden'); // all, hidden, not_hidden // let hidden: string = (params.qry__hidden ?? 'not_hidden'); // all, hidden, not_hidden
let limit: number = (params.qry__limit ?? 25); // 99 // let limit: number = (params.qry__limit ?? 25); // 99
let offset: number = (params.qry__offset ?? 0); // 0 // let offset: number = (params.qry__offset ?? 0); // 0
let params_json: key_val = {}; let params_json: key_val = {};

View File

@@ -2,10 +2,10 @@
interface Props { interface Props {
// Exports // Exports
container_class_li?: string|Array<string>; container_class_li?: string|Array<string>;
display_mode?: string; // 'default', 'compact', 'minimal', 'launcher' // display_mode?: string; // 'default', 'compact', 'minimal', 'launcher'
event_presenter_id_random_li: Array<string>; event_presenter_id_random_li?: Array<string>;
link_to_type: string; link_to_type?: string;
link_to_id: string; link_to_id?: string;
// export let lq__event_presentation_obj // export let lq__event_presentation_obj
log_lvl?: number; log_lvl?: number;
show_presentation_fields?: boolean; show_presentation_fields?: boolean;
@@ -14,8 +14,8 @@ interface Props {
let { let {
container_class_li = [], container_class_li = [],
display_mode = 'default', // display_mode = 'default',
event_presenter_id_random_li = [], event_presenter_id_random_li = $bindable([]),
link_to_type, link_to_type,
link_to_id, link_to_id,
log_lvl = 0, log_lvl = 0,
@@ -41,19 +41,24 @@ if (log_lvl) {
let dq__where_type_id_val: string = `${link_to_type}_id_random`; let dq__where_type_id_val: string = `${link_to_type}_id_random`;
let dq__where_eq_id_val: string = link_to_id; let dq__where_eq_id_val: string = link_to_id;
// *** Functions and Logic // *** Functions and Logic
let lq__event_presenter_obj_li = $derived(liveQuery(async () => { let lq__event_presenter_obj_li = $derived(liveQuery(async () => {
if (link_to_type && link_to_id) { let results;
let results = await db_events.presenters
if (event_presenter_id_random_li.length) {
results = await db_events.presenters
.bulkGet(event_presenter_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}`);
results = await db_events.presenters
.where(dq__where_type_id_val) .where(dq__where_type_id_val)
.equals(dq__where_eq_id_val) .equals(dq__where_eq_id_val)
.sortBy('name') .sortBy('name')
return results;
} else if (event_presenter_id_random_li.length > 0) {
let results = await db_events.presenters
.bulkGet(event_presenter_id_random_li);
return results; return results;
} else { } else {
return null; return null;

View File

@@ -319,12 +319,15 @@ async function handle_search__event_presenter(
biography = null, biography = null,
ft_search_str = '', ft_search_str = '',
lk_search_str = '', lk_search_str = '',
enabled = $events_loc.pres_mgmt.qry_enabled ?? 'enabled',
hidden = $events_loc.pres_mgmt.qry_hidden ?? 'not_hidden',
limit = $events_loc.pres_mgmt.qry_limit__presenters ?? 150,
order_by_li = {'updated_on': 'DESC', 'priority': 'DESC', 'sort': 'DESC', 'given_name': 'ASC', 'family_name': 'ASC', 'email': 'ASC', 'created_on': 'DESC'}, order_by_li = {'updated_on': 'DESC', 'priority': 'DESC', 'sort': 'DESC', 'given_name': 'ASC', 'family_name': 'ASC', 'email': 'ASC', 'created_on': 'DESC'},
params = { // params = {
'qry__enabled': $events_loc.pres_mgmt.qry_enabled ?? 'enabled', // 'qry__enabled': $events_loc.pres_mgmt.qry_enabled ?? 'enabled',
'qry__hidden': $events_loc.pres_mgmt.qry_hidden ?? 'not_hidden', // 'qry__hidden': $events_loc.pres_mgmt.qry_hidden ?? 'not_hidden',
'qry__limit': $events_loc.pres_mgmt.qry_limit__presenters ?? 199, // 'qry__limit': $events_loc.pres_mgmt.qry_limit__presenters ?? 199,
}, // },
// try_cache = true, // try_cache = true,
log_lvl = 0, log_lvl = 0,
}: { }: {
@@ -332,14 +335,18 @@ async function handle_search__event_presenter(
biography?: null|boolean, biography?: null|boolean,
ft_search_str?: string, ft_search_str?: string,
lk_search_str?: string, lk_search_str?: string,
order_by_li?: key_val, // Order by fields and directions.
// search_delay?: number, // In milliseconds // search_delay?: number, // In milliseconds
// max_tries?: number, // max_tries?: number,
params?: key_val, enabled?: string,
hidden?: string,
limit?: number,
order_by_li?: key_val, // Order by fields and directions.
// params?: key_val,
// try_cache?: boolean, // try_cache?: boolean,
log_lvl?: number, log_lvl?: number,
} }
) { ) {
log_lvl = 2;
if (log_lvl) { if (log_lvl) {
console.log('handle_search__event_presenter()'); console.log('handle_search__event_presenter()');
} }
@@ -360,8 +367,10 @@ async function handle_search__event_presenter(
like_presentation_search_qry_str: lk_search_str, like_presentation_search_qry_str: lk_search_str,
like_presenter_search_qry_str: lk_search_str, like_presenter_search_qry_str: lk_search_str,
// external_event_id: $events_loc.pres_mgmt.default__external_registration_id, // external_event_id: $events_loc.pres_mgmt.default__external_registration_id,
enabled: enabled,
hidden: hidden,
limit: limit,
order_by_li: order_by_li, order_by_li: order_by_li,
params: params,
// try_cache: try_cache, // try_cache: try_cache,
log_lvl: log_lvl, log_lvl: log_lvl,
}) })
@@ -433,7 +442,9 @@ async function handle_qry__event_session(
log_lvl?: number, log_lvl?: number,
} }
) { ) {
console.log('handle_qry__event_session()'); if (log_lvl) {
console.log('handle_qry__event_session()');
}
$events_sess.pres_mgmt.status_qry__search = 'loading'; $events_sess.pres_mgmt.status_qry__search = 'loading';
$events_sess.pres_mgmt.status_rpt[$events_loc.pres_mgmt.show_report] = 'loading'; $events_sess.pres_mgmt.status_rpt[$events_loc.pres_mgmt.show_report] = 'loading';
@@ -847,168 +858,174 @@ async function handle_qry__event_session(
<!-- Show presenters that have agreed --> <!-- Show presenters that have agreed -->
{#if $events_loc.pres_mgmt.show_report == 'presenters_agree' && event_presenter_id_random_li} {#if $events_loc.pres_mgmt.show_report == 'presenters_agree' && event_presenter_id_random_li}
<!-- <div class="overflow-x-auto"> --> <!-- <div class="overflow-x-auto"> -->
<h3 class="h4 text-center"> <h3 class="h4 text-center">
Presenters {#if $events_loc.pres_mgmt.rpt__presenter_agree}Agreed{:else}Not Agreed{/if} Presenters {#if $events_loc.pres_mgmt.rpt__presenter_agree}Agreed{:else}Not Agreed{/if}
<button <button
type="button" type="button"
onclick={() => { onclick={() => {
$events_loc.pres_mgmt.rpt__presenter_agree = !$events_loc.pres_mgmt.rpt__presenter_agree; $events_loc.pres_mgmt.rpt__presenter_agree = !$events_loc.pres_mgmt.rpt__presenter_agree;
$events_loc.pres_mgmt.show_report = '';
ae_promises.handle_search__event_presenter = handle_search__event_presenter({ ae_promises.handle_search__event_presenter = handle_search__event_presenter({
agree: $events_loc.pres_mgmt.rpt__presenter_agree ?? false, agree: $events_loc.pres_mgmt.rpt__presenter_agree ?? false,
ft_search_str: '', ft_search_str: '',
lk_search_str: '', lk_search_str: '',
log_lvl: log_lvl, log_lvl: log_lvl,
}); });
}} $events_loc.pres_mgmt.show_report = 'presenters_agree';
class="ae_btn_info btn btn-sm m-1" }}
> class="ae_btn_info btn btn-sm m-1"
{#if $events_loc.pres_mgmt.rpt__presenter_agree} >
<!-- <span class="fas fa-check m-1"></span> --> {#if $events_loc.pres_mgmt.rpt__presenter_agree}
<span class="fas fa-toggle-on m-1"></span> <!-- <span class="fas fa-check m-1"></span> -->
Agreed <span class="fas fa-toggle-on m-1"></span>
{:else} Agreed
<!-- <span class="fas fa-times m-1"></span> --> {:else}
<span class="fas fa-toggle-off m-1"></span> <!-- <span class="fas fa-times m-1"></span> -->
Not Agreed <span class="fas fa-toggle-off m-1"></span>
{/if} Not Agreed
</button> {/if}
</h3> </button>
<!-- {#if !$events_loc.pres_mgmt.rpt__presenter_agree} </h3>
<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 !$events_loc.pres_mgmt.rpt__presenter_agree}
{/if} --> <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_presenter_obj_tbl <!-- {#if event_presenter_id_random_li && event_presenter_id_random_li?.length } -->
bind:event_presenter_id_random_li={event_presenter_id_random_li} <Comp_event_presenter_obj_tbl
show_presentation_fields={true} bind:event_presenter_id_random_li={event_presenter_id_random_li}
show_session_fields={true} show_presentation_fields={true}
log_lvl={log_lvl} show_session_fields={true}
> log_lvl={log_lvl}
</Comp_event_presenter_obj_tbl> >
</Comp_event_presenter_obj_tbl>
<!-- {:else}
<p class="text-center text-red-500 font-bold">No presenters found for this report.</p>
{/if} -->
{/if} {/if}
<!-- Show presenters with bios --> <!-- Show presenters with bios -->
{#if $events_loc.pres_mgmt.show_report == 'presenters_biography' && event_presenter_id_random_li} {#if $events_loc.pres_mgmt.show_report == 'presenters_biography' && event_presenter_id_random_li}
<h3 class="h4 text-center">Presenters with Bios</h3> <h3 class="h4 text-center">Presenters with Bios</h3>
<Comp_event_presenter_obj_tbl <Comp_event_presenter_obj_tbl
bind:event_presenter_id_random_li={event_presenter_id_random_li} bind:event_presenter_id_random_li={event_presenter_id_random_li}
show_presentation_fields={true} show_presentation_fields={true}
show_session_fields={true} show_session_fields={true}
log_lvl={log_lvl} log_lvl={log_lvl}
> >
</Comp_event_presenter_obj_tbl> </Comp_event_presenter_obj_tbl>
{/if} {/if}
<!-- Show overview of presenters (status checklist) --> <!-- Show overview of presenters (status checklist) -->
{#if $events_loc.pres_mgmt.show_report == 'presenters_overview' && event_presenter_id_random_li} {#if $events_loc.pres_mgmt.show_report == 'presenters_overview' && event_presenter_id_random_li}
<h3 class="h4 text-center"> <h3 class="h4 text-center">
Presenters Overview Presenters Overview
<!-- Sorting options (presenter name, start_datetime, updated_on) --> <!-- Sorting options (presenter name, start_datetime, updated_on) -->
<label class="label text-sm"> <label class="label text-sm">
<span class="fas fa-sort m-1"></span> <span class="fas fa-sort m-1"></span>
Sort by: Sort by:
<select <select
class="inline-block select text-sm w-36 m-1 ae_btn_info" class="inline-block select text-sm w-36 m-1 ae_btn_info"
bind:value={$events_loc.pres_mgmt.qry__presenter_sort} bind:value={$events_loc.pres_mgmt.qry__presenter_sort}
onchange={(event) => { onchange={(event) => {
if (event.target.value) { if (event.target.value) {
$events_loc.pres_mgmt.qry__presenter_sort = event.target.value; $events_loc.pres_mgmt.qry__presenter_sort = event.target.value;
} else { } else {
$events_loc.pres_mgmt.qry__presenter_sort = 'updated_on'; $events_loc.pres_mgmt.qry__presenter_sort = 'updated_on';
} }
if ($events_loc.pres_mgmt.qry__presenter_sort == 'updated_on') { if ($events_loc.pres_mgmt.qry__presenter_sort == 'updated_on') {
$events_loc.pres_mgmt.qry__presenter_order_by_li = { $events_loc.pres_mgmt.qry__presenter_order_by_li = {
'updated_on': 'DESC', 'updated_on': 'DESC',
'priority': 'DESC', 'priority': 'DESC',
'sort': 'DESC', 'sort': 'DESC',
'given_name': 'ASC', 'given_name': 'ASC',
'family_name': 'ASC', 'family_name': 'ASC',
'email': 'ASC', 'email': 'ASC',
'created_on': 'DESC', 'created_on': 'DESC',
}; };
} else if ($events_loc.pres_mgmt.qry__presenter_sort == 'given_name') { } else if ($events_loc.pres_mgmt.qry__presenter_sort == 'given_name') {
$events_loc.pres_mgmt.qry__presenter_order_by_li = { $events_loc.pres_mgmt.qry__presenter_order_by_li = {
'given_name': 'ASC', 'given_name': 'ASC',
'family_name': 'ASC', 'family_name': 'ASC',
'updated_on': 'DESC', 'updated_on': 'DESC',
'priority': 'DESC', 'priority': 'DESC',
'sort': 'DESC', 'sort': 'DESC',
'email': 'ASC', 'email': 'ASC',
'created_on': 'DESC', 'created_on': 'DESC',
}; };
} else if ($events_loc.pres_mgmt.qry__presenter_sort == 'family_name') { } else if ($events_loc.pres_mgmt.qry__presenter_sort == 'family_name') {
$events_loc.pres_mgmt.qry__presenter_order_by_li = { $events_loc.pres_mgmt.qry__presenter_order_by_li = {
'family_name': 'ASC', 'family_name': 'ASC',
'given_name': 'ASC', 'given_name': 'ASC',
'updated_on': 'DESC', 'updated_on': 'DESC',
'priority': 'DESC', 'priority': 'DESC',
'sort': 'DESC', 'sort': 'DESC',
'email': 'ASC', 'email': 'ASC',
'created_on': 'DESC', 'created_on': 'DESC',
}; };
} else if ($events_loc.pres_mgmt.qry__presenter_sort == 'email') { } else if ($events_loc.pres_mgmt.qry__presenter_sort == 'email') {
$events_loc.pres_mgmt.qry__presenter_order_by_li = { $events_loc.pres_mgmt.qry__presenter_order_by_li = {
'email': 'ASC', 'email': 'ASC',
'given_name': 'ASC', 'given_name': 'ASC',
'family_name': 'ASC', 'family_name': 'ASC',
'updated_on': 'DESC', 'updated_on': 'DESC',
'priority': 'DESC', 'priority': 'DESC',
'sort': 'DESC', 'sort': 'DESC',
'created_on': 'DESC', 'created_on': 'DESC',
}; };
} else if ($events_loc.pres_mgmt.qry__presenter_sort == 'start_datetime') { } else if ($events_loc.pres_mgmt.qry__presenter_sort == 'start_datetime') {
$events_loc.pres_mgmt.qry__presenter_order_by_li = { $events_loc.pres_mgmt.qry__presenter_order_by_li = {
'event_presentation_start_datetime': 'ASC', 'event_presentation_start_datetime': 'ASC',
'priority': 'DESC', 'priority': 'DESC',
'sort': 'DESC', 'sort': 'DESC',
'given_name': 'ASC', 'given_name': 'ASC',
'family_name': 'ASC', 'family_name': 'ASC',
'email': 'ASC', 'email': 'ASC',
'updated_on': 'DESC', 'updated_on': 'DESC',
'created_on': 'DESC', 'created_on': 'DESC',
}; };
} else { } else {
$events_loc.pres_mgmt.qry__presenter_order_by_li = { $events_loc.pres_mgmt.qry__presenter_order_by_li = {
'updated_on': 'DESC', 'updated_on': 'DESC',
'priority': 'DESC', 'priority': 'DESC',
'sort': 'DESC', 'sort': 'DESC',
'given_name': 'ASC', 'given_name': 'ASC',
'family_name': 'ASC', 'family_name': 'ASC',
'email': 'ASC', 'email': 'ASC',
'created_on': 'DESC', 'created_on': 'DESC',
}; };
} }
handle_search__event_presenter({ handle_search__event_presenter({
order_by_li: $events_loc.pres_mgmt.qry__presenter_order_by_li, order_by_li: $events_loc.pres_mgmt.qry__presenter_order_by_li,
log_lvl: log_lvl, log_lvl: log_lvl,
}); });
$events_loc.pres_mgmt.show_report = 'presenters_overview'; $events_loc.pres_mgmt.show_report = 'presenters_overview';
}} }}
>
<option value="updated_on">Updated On</option>
<option value="given_name">Given Name</option>
<option value="family_name">Family Name</option>
<option value="email">Email</option>
<option value="start_datetime">Start Date Time</option>
<!-- <option value="created_on">Created On</option> -->
<!-- <option value="sort">Sort</option> -->
<!-- <option value="priority">Priority</option> -->
</select>
</label>
</h3>
<Comp_event_presenter_obj_tbl
bind:event_presenter_id_random_li={event_presenter_id_random_li}
show_presentation_fields={true}
show_session_fields={true}
log_lvl={log_lvl}
> >
<option value="updated_on">Updated On</option> </Comp_event_presenter_obj_tbl>
<option value="given_name">Given Name</option>
<option value="family_name">Family Name</option>
<option value="email">Email</option>
<option value="start_datetime">Start Date Time</option>
<!-- <option value="created_on">Created On</option> -->
<!-- <option value="sort">Sort</option> -->
<!-- <option value="priority">Priority</option> -->
</select>
</label>
</h3>
<Comp_event_presenter_obj_tbl
bind:event_presenter_id_random_li={event_presenter_id_random_li}
show_presentation_fields={true}
show_session_fields={true}
log_lvl={log_lvl}
>
</Comp_event_presenter_obj_tbl>
{/if} {/if}
<!-- Show recently uploaded files --> <!-- Show recently uploaded files -->

View File

@@ -7,7 +7,7 @@ import { db_events } from "$lib/ae_events/db_events";
// Exports // Exports
export let container_class_li: string|Array<string> = []; export let container_class_li: string|Array<string> = [];
export let display_mode: string = 'default'; // 'default', 'compact', 'minimal', 'launcher' // export let display_mode: string = 'default'; // 'default', 'compact', 'minimal', 'launcher'
export let event_session_id_random_li: Array<string>; export let event_session_id_random_li: Array<string>;
export let link_to_type: string; export let link_to_type: string;
export let link_to_id: string; export let link_to_id: string;
@@ -52,10 +52,6 @@ $: lq__event_session_obj_li = liveQuery(async () => {
<Comp_event_session_obj_tbl <Comp_event_session_obj_tbl
container_class_li={container_class_li} container_class_li={container_class_li}
display_mode={display_mode}
link_to_type={link_to_type}
link_to_id={link_to_id}
event_session_id_random_li={event_session_id_random_li}
lq__event_session_obj_li={lq__event_session_obj_li} lq__event_session_obj_li={lq__event_session_obj_li}
show_location_fields={show_location_fields} show_location_fields={show_location_fields}
log_lvl={log_lvl} log_lvl={log_lvl}