Work on reports and prep for LCI

This commit is contained in:
Scott Idem
2025-06-11 12:19:32 -04:00
parent e0f0b774ef
commit 88d856ab2c
2 changed files with 184 additions and 19 deletions

View File

@@ -102,17 +102,21 @@ if (log_lvl) {
href="/events/{event_presenter_obj?.event_id_random}/presenter/{event_presenter_obj?.event_presenter_id_random}"
class="text-blue-500 underline hover:text-blue-800"
>
{event_presenter_obj?.full_name}
{event_presenter_obj?.full_name ?? '-- not set --'}
</a>
</td>
<td class="px-4 py-2">
<span class="fas fa-envelope"></span>
<a
href="mailto:{event_presenter_obj?.email}"
class="text-blue-500 underline hover:text-blue-800"
>
{event_presenter_obj?.email}
</a>
{#if event_presenter_obj?.email}
<a
href="mailto:{event_presenter_obj?.email}"
class="text-blue-500 underline hover:text-blue-800"
>
{event_presenter_obj?.email}
</a>
{:else}
<span class="dim">-- not set --</span>
{/if}
</td>
<td class="px-4 py-2">{event_presenter_obj?.agree ? 'Yes' : 'No'}</td>
<td class="px-4 py-2">{event_presenter_obj?.file_count ?? '0'}</td>
@@ -124,18 +128,40 @@ if (log_lvl) {
href="/events/{event_presenter_obj?.event_id}/session/{event_presenter_obj?.event_session_id}"
class="text-blue-500 underline hover:text-blue-800"
>
{event_presenter_obj?.event_session_name}
{#if event_presenter_obj?.event_session_name}
{event_presenter_obj?.event_session_name}
{:else}
<span class="dim">-- not set --</span>
{/if}
</a>
</td>
<td class="px-4 py-2 text-sm">{ae_util.iso_datetime_formatter(event_presenter_obj?.event_session_start_datetime, 'datetime_iso_12_no_seconds')}</td>
<td class="px-4 py-2 text-sm">
{#if event_presenter_obj?.event_session_start_datetime}
{ae_util.iso_datetime_formatter(event_presenter_obj?.event_session_start_datetime, 'datetime_iso_12_no_seconds')}
{:else}
<span class="dim">-- not set --</span>
{/if}
</td>
{/if}
{#if show_presentation_fields}
<td class="px-4 py-2 lg:text-xs">{event_presenter_obj?.event_presentation_name}</td>
<td class="px-4 py-2 lg:text-xs">{ae_util.iso_datetime_formatter(event_presenter_obj?.event_presentation_start_datetime, 'time_12_short')}</td>
<td class="px-4 py-2 lg:text-xs">
{#if event_presenter_obj?.event_presentation_start_datetime}
{ae_util.iso_datetime_formatter(event_presenter_obj?.event_presentation_start_datetime, 'time_12_short')}
{:else}
<span class="dim">-- not set --</span>
{/if}
</td>
{/if}
<td class="px-4 py-2 text-sm">{ae_util.iso_datetime_formatter(event_presenter_obj?.updated_on, 'datetime_iso_12_no_seconds')}</td>
<td class="px-4 py-2 text-sm">
{#if event_presenter_obj?.updated_on}
{ae_util.iso_datetime_formatter(event_presenter_obj?.updated_on, 'datetime_iso_12_no_seconds')}
{:else}
<span class="dim">-- not set --</span>
{/if}
</td>
</tr>
{/each}

View File

@@ -304,6 +304,7 @@ async function handle_search__event_presenter(
biography = null,
ft_search_str = '',
lk_search_str = '',
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',
@@ -316,8 +317,9 @@ async function handle_search__event_presenter(
biography?: null|boolean,
ft_search_str?: string,
lk_search_str?: string,
search_delay?: number, // In milliseconds
max_tries?: number,
order_by_li?: key_val, // Order by fields and directions.
// search_delay?: number, // In milliseconds
// max_tries?: number,
params?: key_val,
try_cache?: boolean,
log_lvl?: number,
@@ -330,7 +332,7 @@ async function handle_search__event_presenter(
$events_sess.pres_mgmt.status_qry__search = 'loading';
$events_sess.pres_mgmt.status_rpt[$events_loc.pres_mgmt.show_report] = 'loading';
let order_by_li = {'updated_on': 'DESC', 'priority': 'DESC', 'sort': 'DESC', 'given_name': 'ASC', 'family_name': 'ASC', 'email': 'ASC', 'created_on': 'DESC'};
// let order_by_li = {'updated_on': 'DESC', 'priority': 'DESC', 'sort': 'DESC', 'given_name': 'ASC', 'family_name': 'ASC', 'email': 'ASC', 'created_on': 'DESC'};
ae_promises.search__event_presenter = events_func.search__event_presenter({
api_cfg: $ae_api,
@@ -680,7 +682,7 @@ async function handle_qry__event_session(
}}
class:hidden={$lq__event_obj?.mod_pres_mgmt_json?.hide__report_kv.presenter_no_bio}
class="btn btn-sm variant-ghost-success hover:variant-filled-success transition-all m-1"
title="NOT READY YET: Show presenters with bios."
title="Show presenters with bios."
>
{#if $events_sess.pres_mgmt?.show_report == 'presenters_biography' && $events_sess.pres_mgmt.status_rpt[$events_sess.pres_mgmt?.show_report] == 'loading'}
<span class="fas fa-spinner fa-spin"></span>
@@ -689,6 +691,29 @@ async function handle_qry__event_session(
Presenter Bios
</button>
<button
type="button"
disabled={!$ae_loc.trusted_access}
on:click={() => {
handle_search__event_presenter({
biography: true,
ft_search_str: '',
lk_search_str: '',
log_lvl: log_lvl,
});
$events_loc.pres_mgmt.show_report = 'presenters_overview';
}}
class:hidden={$lq__event_obj?.mod_pres_mgmt_json?.hide__report_kv.presenter_overview}
class="btn btn-sm variant-ghost-success hover:variant-filled-success transition-all m-1"
title="NOT READY YET: Show overview of presenters' statuses."
>
{#if $events_sess.pres_mgmt?.show_report == 'presenters_overview' && $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-tasks m-1"></span>
Overview of Presenters
</button>
</span>
<span class="border border-gray-200 rounded-md p-1">
@@ -766,9 +791,9 @@ async function handle_qry__event_session(
{/if}
</button>
</h3>
{#if !$events_loc.pres_mgmt.rpt__session_poc_agree}
<!-- {#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}
{/if} -->
<Comp_event_session_obj_tbl
link_to_type="event"
@@ -828,9 +853,9 @@ async function handle_qry__event_session(
{/if}
</button>
</h3>
{#if !$events_loc.pres_mgmt.rpt__presenter_agree}
<!-- {#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}
{/if} -->
<Comp_event_presenter_obj_tbl
bind:event_presenter_id_random_li={event_presenter_id_random_li}
@@ -854,6 +879,117 @@ async function handle_qry__event_session(
</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:
<select
class="select text-sm w-36 variant-glass-warning hover:variant-ghost-warning transition-all m-1"
bind:value={$events_loc.pres_mgmt.qry__presenter_sort}
on:change={
(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',
};
} 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}
>
</Comp_event_presenter_obj_tbl>
{/if}
<!-- Show recently uploaded files -->
{#if $events_loc.pres_mgmt.show_report == 'recent_files' && event_file_id_random_li}
@@ -888,13 +1024,16 @@ async function handle_qry__event_session(
>
<option value="">-- not set --</option>
<option value="600">10 minutes</option>
<option value="1800">30 minutes</option>
<option value="3600">1 hour</option>
<option value="10800">2 hours</option>
<option value="21600">6 hours</option>
<option value="43200">12 hours</option>
<option value="86400">24 hours</option>
<option value="129600">36 hours</option>
<option value="172800">48 hours</option>
<option value="259200">72 hours</option>
<option value="604800">1 week</option>
</select>
</h3>