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_presentation_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'},
params = {},
try_cache = true,
@@ -508,6 +512,10 @@ export async function search__event_presenter(
like_search_qry_str?: null|string,
like_presentation_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,
params?: any,
try_cache?: boolean,
@@ -518,10 +526,10 @@ export async function search__event_presenter(
console.log(`*** search__event_presenter() *** event_id=${event_id}`);
}
let enabled: string = (params.qry__enabled ?? 'enabled'); // all, disabled, enabled
let hidden: string = (params.qry__hidden ?? 'not_hidden'); // all, hidden, not_hidden
let limit: number = (params.qry__limit ?? 25); // 99
let offset: number = (params.qry__offset ?? 0); // 0
// let enabled: string = (params.qry__enabled ?? 'enabled'); // all, disabled, enabled
// let hidden: string = (params.qry__hidden ?? 'not_hidden'); // all, hidden, not_hidden
// let limit: number = (params.qry__limit ?? 25); // 99
// let offset: number = (params.qry__offset ?? 0); // 0
let params_json: key_val = {};

View File

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

View File

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

View File

@@ -7,7 +7,7 @@ import { db_events } from "$lib/ae_events/db_events";
// Exports
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 link_to_type: string;
export let link_to_id: string;
@@ -52,10 +52,6 @@ $: lq__event_session_obj_li = liveQuery(async () => {
<Comp_event_session_obj_tbl
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}
show_location_fields={show_location_fields}
log_lvl={log_lvl}