Now with all reports broken out by type and things generally cleaned up.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "osit-aether-app-svelte",
|
||||
"version": "3.3.4",
|
||||
"version": "3.4.1",
|
||||
"description": "One Sky IT's Aether App created with Svelte, SvelteKit, Tailwind CSS, Lucide, Font Awesome, and Skeleton UI. -Scott Idem",
|
||||
"homepage": "https://oneskyit.com/",
|
||||
"private": true,
|
||||
|
||||
@@ -53,7 +53,11 @@ let event_session_id_random_li: Array<string> = $state();
|
||||
|
||||
let ae_promises: key_val = $state({});
|
||||
let ae_tmp: key_val = {};
|
||||
let ae_triggers: key_val = {};
|
||||
let ae_triggers: key_val = $state({
|
||||
rpt__event_files: true,
|
||||
rpt__event_sessions: true,
|
||||
rpt__event_presenters: true,
|
||||
});
|
||||
|
||||
// if ($events_loc.pres_mgmt.show_report == 'sessions_poc_agree') {
|
||||
// handle_qry__event_session({
|
||||
@@ -536,23 +540,6 @@ async function handle_qry__event_session(
|
||||
</svelte:head>
|
||||
|
||||
|
||||
<!-- <section
|
||||
class="
|
||||
ae_events_pres_mgmt_event
|
||||
flex flex-col gap-1
|
||||
items-center
|
||||
justify-start
|
||||
mx-auto
|
||||
min-h-full
|
||||
h-full
|
||||
min-w-full
|
||||
max-w-max
|
||||
"
|
||||
> -->
|
||||
<!-- lg:bg-green-100
|
||||
xl:bg-green-200 -->
|
||||
|
||||
|
||||
<Event_reports_page_menu
|
||||
data={data}
|
||||
lq__event_obj={lq__event_obj}
|
||||
@@ -594,8 +581,6 @@ async function handle_qry__event_session(
|
||||
{/if}
|
||||
</h2>
|
||||
|
||||
<!-- </span> -->
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
@@ -608,11 +593,6 @@ async function handle_qry__event_session(
|
||||
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';
|
||||
}}
|
||||
@@ -637,16 +617,6 @@ async function handle_qry__event_session(
|
||||
type="button"
|
||||
disabled={!$ae_loc.trusted_access}
|
||||
onclick={() => {
|
||||
// ae_promises.handle_search__event_session = handle_search__event_session({
|
||||
// poc_agree: true,
|
||||
// ft_search_str: '',
|
||||
// lk_search_str: '',
|
||||
// log_lvl: log_lvl,
|
||||
// });
|
||||
// $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';
|
||||
}}
|
||||
@@ -675,10 +645,6 @@ 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,
|
||||
// });
|
||||
ae_triggers.rpt__event_sessions = true;
|
||||
$events_loc.pres_mgmt.show_report = 'session_no_bio';
|
||||
}}
|
||||
@@ -703,21 +669,13 @@ async function handle_qry__event_session(
|
||||
type="button"
|
||||
disabled={!$ae_loc.trusted_access}
|
||||
onclick={() => {
|
||||
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,
|
||||
});
|
||||
ae_triggers.rpt__event_presenters = true;
|
||||
$events_loc.pres_mgmt.show_report = 'presenters_agree';
|
||||
}}
|
||||
class:hidden={!$events_loc.pres_mgmt?.require__presenter_agree}
|
||||
class="btn btn-sm preset-tonal-success border border-success-500 hover:preset-filled-success-500 transition-all m-1"
|
||||
title="Show presenters who have agreed to present."
|
||||
>
|
||||
<!-- {#await ae_promises.handle_search__event_presenter}
|
||||
<span class="fas fa-spinner fa-spin"></span>
|
||||
{/await} -->
|
||||
{#if $events_loc.pres_mgmt?.show_report == 'presenters_agree' && $events_sess.pres_mgmt?.status_qry__search == 'loading'}
|
||||
<span class="fas fa-spinner fa-spin"></span>
|
||||
{:else if $events_loc.pres_mgmt.rpt__presenter_agree}
|
||||
@@ -737,12 +695,7 @@ async function handle_qry__event_session(
|
||||
type="button"
|
||||
disabled={!$ae_loc.trusted_access}
|
||||
onclick={() => {
|
||||
handle_search__event_presenter({
|
||||
biography: true,
|
||||
ft_search_str: '',
|
||||
lk_search_str: '',
|
||||
log_lvl: log_lvl,
|
||||
});
|
||||
ae_triggers.rpt__event_presenters = true;
|
||||
$events_loc.pres_mgmt.show_report = 'presenters_biography';
|
||||
}}
|
||||
class:hidden={$lq__event_obj?.mod_pres_mgmt_json?.hide__report_kv.presenter_no_bio && !$ae_loc.edit_mode}
|
||||
@@ -762,11 +715,7 @@ async function handle_qry__event_session(
|
||||
type="button"
|
||||
disabled={!$ae_loc.trusted_access}
|
||||
onclick={() => {
|
||||
handle_search__event_presenter({
|
||||
ft_search_str: '',
|
||||
lk_search_str: '',
|
||||
log_lvl: log_lvl,
|
||||
});
|
||||
ae_triggers.rpt__event_presenters = true;
|
||||
$events_loc.pres_mgmt.show_report = 'presenters_overview';
|
||||
}}
|
||||
class:hidden={$lq__event_obj?.mod_pres_mgmt_json?.hide__report_kv.presenter_overview}
|
||||
@@ -789,10 +738,7 @@ async function handle_qry__event_session(
|
||||
type="button"
|
||||
disabled={!$ae_loc.trusted_access}
|
||||
onclick={() => {
|
||||
handle_qry__event_file({
|
||||
created_on_offset: $events_loc.pres_mgmt.qry__files_offset_seconds ?? 0,
|
||||
log_lvl: log_lvl,
|
||||
});
|
||||
ae_triggers.rpt__event_files = true;
|
||||
$events_loc.pres_mgmt.show_report = 'recent_files';
|
||||
}}
|
||||
class:hidden={$lq__event_obj?.mod_pres_mgmt_json?.hide__report_kv.recent_files}
|
||||
@@ -811,10 +757,7 @@ async function handle_qry__event_session(
|
||||
type="button"
|
||||
disabled={!$ae_loc.trusted_access}
|
||||
onclick={() => {
|
||||
handle_qry__event_file({
|
||||
min_file_size: $events_loc.pres_mgmt.qry__files_min_size ?? 100000000, // in bytes
|
||||
log_lvl: log_lvl,
|
||||
});
|
||||
ae_triggers.rpt__event_files = true;
|
||||
$events_loc.pres_mgmt.show_report = 'large_files';
|
||||
}}
|
||||
class:hidden={$lq__event_obj?.mod_pres_mgmt_json?.hide__report_kv.large_files}
|
||||
@@ -831,11 +774,9 @@ async function handle_qry__event_session(
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
</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
|
||||
@@ -851,7 +792,7 @@ async function handle_qry__event_session(
|
||||
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}
|
||||
bind:qry__trigger={ae_triggers.rpt__event_sessions}
|
||||
|
||||
hide_session_code={$events_loc.pres_mgmt?.hide__session_code}
|
||||
|
||||
@@ -860,100 +801,6 @@ async function handle_qry__event_session(
|
||||
{/if}
|
||||
|
||||
|
||||
<!-- Show session POC that have agreed -->
|
||||
<!-- {#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}
|
||||
|
||||
<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,
|
||||
})
|
||||
$events_loc.pres_mgmt.show_report = 'sessions_poc_agree';
|
||||
}}
|
||||
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>
|
||||
Agreed
|
||||
{:else}
|
||||
<span class="fas fa-toggle-off m-1"></span>
|
||||
Not Agreed
|
||||
{/if}
|
||||
</button>
|
||||
</h3>
|
||||
|
||||
<Comp_event_session_obj_tbl
|
||||
link_to_type="event"
|
||||
link_to_id={$events_slct.event_id}
|
||||
bind:event_session_id_random_li={event_session_id_random_li}
|
||||
log_lvl={1}
|
||||
>
|
||||
</Comp_event_session_obj_tbl>
|
||||
{/if} -->
|
||||
|
||||
<!-- {#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
|
||||
link_to_type="event"
|
||||
link_to_id={$events_slct.event_id}
|
||||
bind:event_session_id_random_li={event_session_id_random_li}
|
||||
log_lvl={1}
|
||||
>
|
||||
</Comp_event_session_obj_tbl>
|
||||
{/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
|
||||
{#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"
|
||||
link_to_id={$events_slct.event_id}
|
||||
bind:event_session_id_random_li={event_session_id_random_li}
|
||||
log_lvl={1}
|
||||
>
|
||||
</Comp_event_session_obj_tbl>
|
||||
{/if} -->
|
||||
|
||||
|
||||
<!-- All Event Presenter related reports -->
|
||||
{#if $events_loc.pres_mgmt.show_report == 'presenters_agree' || $events_loc.pres_mgmt.show_report == 'presenters_biography' || $events_loc.pres_mgmt.show_report == 'presenters_overview'}
|
||||
<Reports_presenters
|
||||
@@ -969,184 +816,14 @@ async function handle_qry__event_session(
|
||||
bind:qry__status={$events_sess.pres_mgmt.status_qry__search}
|
||||
qry__count={$events_sess.event_presenter_obj_li?.length ?? 0}
|
||||
|
||||
bind:qry__trigger={ae_triggers.rpt__event_presenters}
|
||||
|
||||
hide_session_code={$events_loc.pres_mgmt?.hide__session_code}
|
||||
|
||||
log_lvl={log_lvl}
|
||||
/>
|
||||
{/if}
|
||||
|
||||
<!-- Show presenters that have agreed -->
|
||||
<!-- {#if 1==3 && $events_loc.pres_mgmt.show_report == 'presenters_agree' && $events_sess.event_presenter_obj_li}
|
||||
<h3 class="h4 text-center">
|
||||
Presenters {#if $events_loc.pres_mgmt.rpt__presenter_agree}Agreed{:else}Not Agreed{/if}
|
||||
{$events_slct.event_presenter_obj_li.length ?? 0} found
|
||||
<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,
|
||||
});
|
||||
$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-toggle-on m-1"></span>
|
||||
Agreed
|
||||
{:else}
|
||||
<span class="fas fa-toggle-off m-1"></span>
|
||||
Not Agreed
|
||||
{/if}
|
||||
</button>
|
||||
</h3>
|
||||
|
||||
<Comp_event_presenter_obj_tbl
|
||||
bind:event_presenter_obj_li={$events_sess.event_presenter_obj_li}
|
||||
show_presentation_fields={true}
|
||||
show_session_fields={true}
|
||||
log_lvl={2}
|
||||
>
|
||||
</Comp_event_presenter_obj_tbl>
|
||||
{/if} -->
|
||||
|
||||
<!-- Show presenters with bios -->
|
||||
<!-- {#if 1==3 && $events_loc.pres_mgmt.show_report == 'presenters_biography' && $events_sess.event_presenter_obj_li}
|
||||
<h3 class="h4 text-center">Presenters with Bios</h3>
|
||||
|
||||
<Comp_event_presenter_obj_tbl
|
||||
bind:event_presenter_obj_li={$events_sess.event_presenter_obj_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 1==3 && $events_loc.pres_mgmt.show_report == 'presenters_overview' && $events_sess.event_presenter_obj_li}
|
||||
<header class="w-full flex flex-row flex-wrap items-center justify-center gap-1">
|
||||
<h3 class="h4 text-center">
|
||||
Presenters Overview
|
||||
</h3>
|
||||
{#if $events_sess.pres_mgmt.status_rpt[$events_sess.pres_mgmt?.show_report] == 'loading'}
|
||||
<span class="fas fa-spinner fa-spin m-1"></span>
|
||||
<span>Loading...</span>
|
||||
{/if}
|
||||
|
||||
<div class="flex flex-row items-center justify-center">
|
||||
<label class="label text-sm">
|
||||
<span class="fas fa-sort m-1"></span>
|
||||
Sort by:
|
||||
|
||||
<select
|
||||
class="inline-block select text-sm w-36 px-1 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',
|
||||
|
||||
};
|
||||
} 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',
|
||||
};
|
||||
}
|
||||
ae_promises.handle_search__event_presenter = handle_search__event_presenter({
|
||||
// ft_search_str: '',
|
||||
// lk_search_str: '',
|
||||
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>
|
||||
</select>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
<Comp_event_presenter_obj_tbl
|
||||
bind:event_presenter_obj_li={$events_sess.event_presenter_obj_li}
|
||||
show_presentation_fields={true}
|
||||
show_session_fields={true}
|
||||
log_lvl={log_lvl}
|
||||
>
|
||||
</Comp_event_presenter_obj_tbl>
|
||||
{/if} -->
|
||||
|
||||
|
||||
|
||||
<!-- All Event File related reports -->
|
||||
{#if $events_loc.pres_mgmt.show_report == 'recent_files' || $events_loc.pres_mgmt.show_report == 'large_files'}
|
||||
@@ -1163,233 +840,12 @@ async function handle_qry__event_session(
|
||||
bind:qry__status={$events_sess.pres_mgmt.status_qry__search}
|
||||
qry__count={$events_sess.event_file_obj_li?.length ?? 0}
|
||||
|
||||
bind:qry__trigger={ae_triggers.rpt__event_files}
|
||||
|
||||
hide_session_code={$events_loc.pres_mgmt?.hide__session_code}
|
||||
|
||||
log_lvl={log_lvl}
|
||||
/>
|
||||
{/if}
|
||||
|
||||
|
||||
<!-- Show recently uploaded files -->
|
||||
{#if 1==3 && $events_loc.pres_mgmt.show_report == 'recent_files' && event_file_id_random_li}
|
||||
<header class="w-full flex flex-row flex-wrap items-center justify-center gap-1">
|
||||
<h3 class="h4 text-center">
|
||||
Recent File Uploads
|
||||
</h3>
|
||||
{#if $events_sess.pres_mgmt.status_rpt[$events_sess.pres_mgmt?.show_report] == 'loading'}
|
||||
<span class="fas fa-spinner fa-spin m-1"></span>
|
||||
<span>Loading...</span>
|
||||
{/if}
|
||||
|
||||
<!-- Show list of offsets: 10 minutes, 1 hours, 6 hours, 12 hours, 24 hours, 48 hours, 72 hours -->
|
||||
<div class="flex flex-row flex-wrap items-center justify-center">
|
||||
<select
|
||||
class="inline-block select text-sm px-1 w-40 m-1 ae_btn_info"
|
||||
bind:value={$events_loc.pres_mgmt.qry__files_offset_seconds}
|
||||
onchange={() => {
|
||||
if ($events_loc.pres_mgmt?.qry__files_offset_seconds) {
|
||||
// Calculate the datetime to pass based on the selected offset.
|
||||
// let offset = $events_loc.pres_mgmt.qry__files_offset_seconds ?? 0;
|
||||
// let created_on = new Date()
|
||||
// console.log(`Created on:`, created_on);
|
||||
// created_on.setSeconds(created_on.getSeconds() - offset);
|
||||
handle_qry__event_file({
|
||||
created_on_offset: $events_loc.pres_mgmt.qry__files_offset_seconds ?? 0,
|
||||
file_purpose: $events_loc.pres_mgmt.qry__file_purpose ?? null,
|
||||
log_lvl: 1,
|
||||
});
|
||||
} else {
|
||||
console.log('No offset is will be used.');
|
||||
handle_qry__event_file({
|
||||
log_lvl: 1,
|
||||
});
|
||||
}
|
||||
|
||||
$events_loc.pres_mgmt.show_report = 'recent_files';
|
||||
}}
|
||||
>
|
||||
<option value="">-- offset 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>
|
||||
<option value="1209600">2 weeks</option>
|
||||
<option value="2419200">4 weeks</option>
|
||||
<option value="7776000">12 weeks</option>
|
||||
<option value="15552000">24 weeks</option>
|
||||
</select>
|
||||
|
||||
<select
|
||||
id="file_purpose"
|
||||
name="file_purpose"
|
||||
class="inline-block select text-sm w-40 px-1 m-1 ae_btn_info"
|
||||
bind:value={$events_loc.pres_mgmt.qry__file_purpose}
|
||||
onchange={() => {
|
||||
handle_qry__event_file({
|
||||
created_on_offset: $events_loc.pres_mgmt.qry__files_offset_seconds ?? 0,
|
||||
file_purpose: $events_loc.pres_mgmt.qry__file_purpose ?? null,
|
||||
log_lvl: 1,
|
||||
});
|
||||
$events_loc.pres_mgmt.show_report = 'recent_files';
|
||||
}}
|
||||
>
|
||||
<option
|
||||
value={null}
|
||||
selected={!$events_loc.pres_mgmt.qry__file_purpose}
|
||||
class="text-xs"
|
||||
>
|
||||
-- purpose not set --
|
||||
</option>
|
||||
{#if $events_loc.pres_mgmt?.file_purpose_option_kv}
|
||||
{#each Object.entries($events_loc.pres_mgmt.file_purpose_option_kv) as [key, file_purpose_option]}
|
||||
<option
|
||||
value={key} selected={$events_loc.pres_mgmt.qry__file_purpose === key}
|
||||
disabled={file_purpose_option?.disabled}
|
||||
class:hidden={file_purpose_option?.hidden}
|
||||
>
|
||||
{file_purpose_option?.name}
|
||||
</option>
|
||||
{/each}
|
||||
{/if}
|
||||
</select>
|
||||
|
||||
<!-- Max files select options -->
|
||||
|
||||
<select
|
||||
id="qry_limit__files"
|
||||
bind:value={$events_loc.pres_mgmt.qry_limit__files}
|
||||
class="inline-block select text-sm px-1 w-40 m-1 ae_btn_info"
|
||||
onchange={() => {
|
||||
handle_qry__event_file({
|
||||
created_on_offset: $events_loc.pres_mgmt.qry__files_offset_seconds ?? 0,
|
||||
file_purpose: $events_loc.pres_mgmt.qry__file_purpose ?? null,
|
||||
limit: $events_loc.pres_mgmt.qry_limit__files ?? 100,
|
||||
log_lvl: log_lvl,
|
||||
});
|
||||
$events_loc.pres_mgmt.show_report = 'recent_files';
|
||||
}}
|
||||
>
|
||||
<option value={0}>-- max not set --</option>
|
||||
<option value={25}>25 files</option>
|
||||
<option value={50}>50 files</option>
|
||||
<option value={75}>75 files</option>
|
||||
<option value={100}>100 files</option>
|
||||
<option value={200}>200 files</option>
|
||||
<option value={500}>500 files</option>
|
||||
</select>
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
<!-- <p class="text-center text-red-500 font-bold">
|
||||
This report is new and still being tested.
|
||||
</p> -->
|
||||
|
||||
<!-- <Comp_event_file_obj_tbl
|
||||
bind:event_file_id_random_li={event_file_id_random_li}
|
||||
bind:show_direct_download={$events_loc.pres_mgmt.show__direct_download}
|
||||
show_location_fields={true}
|
||||
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}
|
||||
|
||||
|
||||
<!-- Show large files -->
|
||||
{#if 1==3 && $events_loc.pres_mgmt.show_report == 'large_files' && event_file_id_random_li}
|
||||
<header class="w-full flex flex-row flex-wrap items-center justify-center gap-1">
|
||||
<h3 class="h4 text-center">
|
||||
Large File Uploads
|
||||
</h3>
|
||||
{#if $events_sess.pres_mgmt.status_rpt[$events_sess.pres_mgmt?.show_report] == 'loading'}
|
||||
<span class="fas fa-spinner fa-spin m-1"></span>
|
||||
<span>Loading...</span>
|
||||
{/if}
|
||||
|
||||
<div class="flex flex-row flex-wrap items-center justify-center">
|
||||
<select
|
||||
class="inline-block select text-sm w-40 px-1 m-1 ae_btn_info"
|
||||
bind:value={$events_loc.pres_mgmt.qry__files_min_size}
|
||||
onchange={() => {
|
||||
handle_qry__event_file({
|
||||
min_file_size: $events_loc.pres_mgmt.qry__files_min_size ?? 100000000, // in bytes
|
||||
file_purpose: $events_loc.pres_mgmt.qry__file_purpose ?? null,
|
||||
log_lvl: log_lvl,
|
||||
});
|
||||
$events_loc.pres_mgmt.show_report = 'large_files';
|
||||
}}
|
||||
>
|
||||
<option value="">-- size not set --</option>
|
||||
<option value="10000000">10 MB</option>
|
||||
<option value="25000000">25 MB</option>
|
||||
<option value="50000000">50 MB</option>
|
||||
<option value="75000000">75 MB</option>
|
||||
<option value="100000000">100 MB</option>
|
||||
<option value="150000000">150 MB</option>
|
||||
<option value="250000000">250 MB</option>
|
||||
<option value="500000000">500 MB</option>
|
||||
<option value="1000000000">1 GB</option>
|
||||
<!-- <option value="5000000000">5 GB</option> -->
|
||||
</select>
|
||||
|
||||
<select
|
||||
id="file_purpose"
|
||||
name="file_purpose"
|
||||
class="inline-block select text-sm w-40 p-1 m-1 ae_btn_info"
|
||||
bind:value={$events_loc.pres_mgmt.qry__file_purpose}
|
||||
onchange={() => {
|
||||
handle_qry__event_file({
|
||||
min_file_size: $events_loc.pres_mgmt.qry__files_min_size ?? 100000000, // in bytes
|
||||
file_purpose: $events_loc.pres_mgmt.qry__file_purpose ?? null,
|
||||
log_lvl: 1,
|
||||
});
|
||||
$events_loc.pres_mgmt.show_report = 'large_files';
|
||||
}}
|
||||
>
|
||||
<option
|
||||
value={null}
|
||||
selected={!$events_loc.pres_mgmt.qry__file_purpose}
|
||||
class="text-xs"
|
||||
>
|
||||
-- purpose not set --
|
||||
</option>
|
||||
{#if $events_loc.pres_mgmt?.file_purpose_option_kv}
|
||||
{#each Object.entries($events_loc.pres_mgmt.file_purpose_option_kv) as [key, file_purpose_option]}
|
||||
<option
|
||||
value={key} selected={$events_loc.pres_mgmt.qry__file_purpose === key}
|
||||
disabled={file_purpose_option?.disabled}
|
||||
class:hidden={file_purpose_option?.hidden}
|
||||
>
|
||||
{file_purpose_option?.name}
|
||||
</option>
|
||||
{/each}
|
||||
{/if}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
<!-- <Comp_event_file_obj_tbl
|
||||
bind:event_file_id_random_li={event_file_id_random_li}
|
||||
show_location_fields={true}
|
||||
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}
|
||||
|
||||
|
||||
{/if}
|
||||
{/if}
|
||||
@@ -116,22 +116,26 @@ let sort_option_kv: key_val = {
|
||||
|
||||
$effect(() => {
|
||||
if (qry__trigger) {
|
||||
if (log_lvl) {
|
||||
console.log(`Report: ${rpt__name}; Triggered query for event files.`);
|
||||
}
|
||||
qry__trigger = false;
|
||||
if (rpt__name == 'recent_files') {
|
||||
handle_qry__event_file({
|
||||
created_on_offset: null,
|
||||
min_file_size: null, // in bytes
|
||||
file_purpose: null,
|
||||
created_on_offset: $events_loc.pres_mgmt.qry__files_offset_seconds,
|
||||
// min_file_size: $events_loc.pres_mgmt.qry__files_min_size,
|
||||
file_purpose: $events_loc.pres_mgmt.qry__file_purpose ?? null,
|
||||
// ft_search_str: '',
|
||||
// lk_search_str: '',
|
||||
limit: rpt__limit,
|
||||
order_by_li: rpt__order_by_li,
|
||||
log_lvl: log_lvl,
|
||||
});
|
||||
} else if (rpt__name == 'large_files') {
|
||||
handle_qry__event_file({
|
||||
created_on_offset: null,
|
||||
min_file_size: 5000000, // in bytes
|
||||
file_purpose: null,
|
||||
min_file_size: $events_loc.pres_mgmt.qry__files_min_size,
|
||||
file_purpose: $events_loc.pres_mgmt.qry__file_purpose ?? null,
|
||||
// ft_search_str: '',
|
||||
// lk_search_str: '',
|
||||
order_by_li: rpt__order_by_li,
|
||||
@@ -312,16 +316,18 @@ async function handle_qry__event_file(
|
||||
// let created_on = new Date()
|
||||
// console.log(`Created on:`, created_on);
|
||||
// created_on.setSeconds(created_on.getSeconds() - offset);
|
||||
handle_qry__event_file({
|
||||
created_on_offset: $events_loc.pres_mgmt.qry__files_offset_seconds ?? 0,
|
||||
file_purpose: $events_loc.pres_mgmt.qry__file_purpose ?? null,
|
||||
log_lvl: log_lvl,
|
||||
});
|
||||
// handle_qry__event_file({
|
||||
// created_on_offset: $events_loc.pres_mgmt.qry__files_offset_seconds ?? 0,
|
||||
// file_purpose: $events_loc.pres_mgmt.qry__file_purpose ?? null,
|
||||
// log_lvl: log_lvl,
|
||||
// });
|
||||
qry__trigger = true;
|
||||
} else {
|
||||
console.log('No offset is will be used.');
|
||||
handle_qry__event_file({
|
||||
log_lvl: log_lvl,
|
||||
});
|
||||
// handle_qry__event_file({
|
||||
// log_lvl: log_lvl,
|
||||
// });
|
||||
qry__trigger = true;
|
||||
}
|
||||
|
||||
$events_loc.pres_mgmt.show_report = 'recent_files';
|
||||
@@ -351,11 +357,12 @@ async function handle_qry__event_file(
|
||||
class="inline-block select text-sm w-40 px-1 m-1 ae_btn_info"
|
||||
bind:value={$events_loc.pres_mgmt.qry__file_purpose}
|
||||
onchange={() => {
|
||||
handle_qry__event_file({
|
||||
created_on_offset: $events_loc.pres_mgmt.qry__files_offset_seconds ?? 0,
|
||||
file_purpose: $events_loc.pres_mgmt.qry__file_purpose ?? null,
|
||||
log_lvl: log_lvl,
|
||||
});
|
||||
// handle_qry__event_file({
|
||||
// created_on_offset: $events_loc.pres_mgmt.qry__files_offset_seconds ?? 0,
|
||||
// file_purpose: $events_loc.pres_mgmt.qry__file_purpose ?? null,
|
||||
// log_lvl: log_lvl,
|
||||
// });
|
||||
qry__trigger = true;
|
||||
$events_loc.pres_mgmt.show_report = 'recent_files';
|
||||
}}
|
||||
>
|
||||
@@ -386,12 +393,13 @@ async function handle_qry__event_file(
|
||||
bind:value={$events_loc.pres_mgmt.qry_limit__files}
|
||||
class="inline-block select text-sm px-1 w-40 m-1 ae_btn_info"
|
||||
onchange={() => {
|
||||
handle_qry__event_file({
|
||||
created_on_offset: $events_loc.pres_mgmt.qry__files_offset_seconds ?? 0,
|
||||
file_purpose: $events_loc.pres_mgmt.qry__file_purpose ?? null,
|
||||
limit: $events_loc.pres_mgmt.qry_limit__files ?? 100,
|
||||
log_lvl: log_lvl,
|
||||
});
|
||||
// handle_qry__event_file({
|
||||
// created_on_offset: $events_loc.pres_mgmt.qry__files_offset_seconds ?? 0,
|
||||
// file_purpose: $events_loc.pres_mgmt.qry__file_purpose ?? null,
|
||||
// limit: $events_loc.pres_mgmt.qry_limit__files ?? 100,
|
||||
// log_lvl: log_lvl,
|
||||
// });
|
||||
qry__trigger = true;
|
||||
$events_loc.pres_mgmt.show_report = 'recent_files';
|
||||
}}
|
||||
>
|
||||
@@ -429,11 +437,12 @@ async function handle_qry__event_file(
|
||||
class="inline-block select text-sm w-40 px-1 m-1 ae_btn_info"
|
||||
bind:value={$events_loc.pres_mgmt.qry__files_min_size}
|
||||
onchange={() => {
|
||||
handle_qry__event_file({
|
||||
min_file_size: $events_loc.pres_mgmt.qry__files_min_size ?? 100000000, // in bytes
|
||||
file_purpose: $events_loc.pres_mgmt.qry__file_purpose ?? null,
|
||||
log_lvl: log_lvl,
|
||||
});
|
||||
// handle_qry__event_file({
|
||||
// min_file_size: $events_loc.pres_mgmt.qry__files_min_size ?? 100000000, // in bytes
|
||||
// file_purpose: $events_loc.pres_mgmt.qry__file_purpose ?? null,
|
||||
// log_lvl: log_lvl,
|
||||
// });
|
||||
qry__trigger = true;
|
||||
$events_loc.pres_mgmt.show_report = 'large_files';
|
||||
}}
|
||||
>
|
||||
@@ -456,11 +465,12 @@ async function handle_qry__event_file(
|
||||
class="inline-block select text-sm w-40 p-1 m-1 ae_btn_info"
|
||||
bind:value={$events_loc.pres_mgmt.qry__file_purpose}
|
||||
onchange={() => {
|
||||
handle_qry__event_file({
|
||||
min_file_size: $events_loc.pres_mgmt.qry__files_min_size ?? 100000000, // in bytes
|
||||
file_purpose: $events_loc.pres_mgmt.qry__file_purpose ?? null,
|
||||
log_lvl: 1,
|
||||
});
|
||||
// handle_qry__event_file({
|
||||
// min_file_size: $events_loc.pres_mgmt.qry__files_min_size ?? 100000000, // in bytes
|
||||
// file_purpose: $events_loc.pres_mgmt.qry__file_purpose ?? null,
|
||||
// log_lvl: 1,
|
||||
// });
|
||||
qry__trigger = true;
|
||||
$events_loc.pres_mgmt.show_report = 'large_files';
|
||||
}}
|
||||
>
|
||||
|
||||
@@ -296,16 +296,9 @@ async function handle_search__event_presenter(
|
||||
type="button"
|
||||
onclick={() => {
|
||||
$events_loc.pres_mgmt.rpt__presenter_agree = !$events_loc.pres_mgmt.rpt__presenter_agree;
|
||||
// rpt__name = '';
|
||||
|
||||
// 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,
|
||||
// });
|
||||
rpt__name = 'presenters_agree';
|
||||
qry__trigger = true;
|
||||
rpt__name = 'presenters_agree';
|
||||
}}
|
||||
class="ae_btn_info btn btn-sm m-1"
|
||||
>
|
||||
@@ -378,8 +371,8 @@ async function handle_search__event_presenter(
|
||||
// order_by_li: $events_loc.pres_mgmt.qry__presenter_order_by_li,
|
||||
// log_lvl: log_lvl,
|
||||
// });
|
||||
rpt__name = 'presenters_overview';
|
||||
qry__trigger = true;
|
||||
rpt__name = 'presenters_overview';
|
||||
}}
|
||||
>
|
||||
<option value="updated_on">Updated On</option>
|
||||
|
||||
@@ -296,19 +296,16 @@ async function handle_qry__event_session(
|
||||
Without
|
||||
{/if}
|
||||
Files
|
||||
</h3>
|
||||
|
||||
<div class="flex flex-row items-center justify-center">
|
||||
<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;
|
||||
rpt__name = 'session_no_files';
|
||||
}}
|
||||
class="ae_btn_info btn-sm m-1"
|
||||
>
|
||||
@@ -320,8 +317,7 @@ async function handle_qry__event_session(
|
||||
Without
|
||||
{/if}
|
||||
</button>
|
||||
</div>
|
||||
</h3>
|
||||
</div>
|
||||
</header>
|
||||
{/if}
|
||||
|
||||
@@ -350,13 +346,9 @@ async function handle_qry__event_session(
|
||||
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;
|
||||
rpt__name = 'session_no_bio';
|
||||
}}
|
||||
class="ae_btn_info btn-sm m-1"
|
||||
>
|
||||
@@ -400,13 +392,9 @@ async function handle_qry__event_session(
|
||||
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;
|
||||
rpt__name = 'sessions_poc_agree';
|
||||
}}
|
||||
class="ae_btn_info btn-sm m-1"
|
||||
title="Toggle to show sessions with or without POC agreement to terms"
|
||||
|
||||
@@ -69,6 +69,79 @@ $effect(() => {
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
function generate_file_export_csv(ae_obj_li) {
|
||||
console.log(`*** generate_file_export_csv() ***`, ae_obj_li);
|
||||
|
||||
// We need to create a list with the column names and then a list of lists with the data.
|
||||
let csv_data = [];
|
||||
let csv_columns = [
|
||||
'File ID', 'Filename', 'Extension', 'Size', 'SHA256 Hash', 'Uploaded On', 'Updated On',
|
||||
'Session ID', 'Session Code', 'Session Name', 'Session Start Datetime',
|
||||
'Presentation ID', 'Presentation Name', 'Presentation Time',
|
||||
'Presenter ID', 'Name', 'Email',
|
||||
'Download Link',
|
||||
'Download Link - Session Code'
|
||||
];
|
||||
csv_data.push(csv_columns);
|
||||
|
||||
for (let i = 0; i < ae_obj_li.length; i++) {
|
||||
let csv_row = [];
|
||||
csv_row.push(ae_obj_li[i].event_file_id);
|
||||
csv_row.push(ae_obj_li[i].filename ? `"${ae_util.clean_filename(ae_obj_li[i].filename)}"` : '');
|
||||
csv_row.push(ae_obj_li[i].extension ? ae_obj_li[i].extension : '');
|
||||
csv_row.push(ae_obj_li[i].file_size ? ae_util.format_bytes(ae_obj_li[i].file_size) : '');
|
||||
csv_row.push(ae_obj_li[i].hash_sha256.slice(0, 10) + '...');
|
||||
csv_row.push(ae_obj_li[i].created_on ? ae_util.iso_datetime_formatter(ae_obj_li[i].created_on, 'datetime_iso_12_no_seconds') : '');
|
||||
csv_row.push(ae_obj_li[i].updated_on ? ae_util.iso_datetime_formatter(ae_obj_li[i].updated_on, 'datetime_iso_12_no_seconds') : '');
|
||||
|
||||
csv_row.push(ae_obj_li[i].event_session_id ? ae_obj_li[i].event_session_id : '');
|
||||
csv_row.push(ae_obj_li[i].event_session_code ? ae_obj_li[i].event_session_code : '');
|
||||
csv_row.push(ae_obj_li[i].event_session_name ?? '');
|
||||
csv_row.push(ae_obj_li[i].event_session_start_datetime ? ae_util.iso_datetime_formatter(ae_obj_li[i].event_session_start_datetime, 'datetime_iso_12_no_seconds') : '');
|
||||
|
||||
csv_row.push(ae_obj_li[i].event_presentation_id ? ae_obj_li[i].event_presentation_id : '');
|
||||
csv_row.push(ae_obj_li[i].event_presentation_name ?? '');
|
||||
csv_row.push(ae_obj_li[i].event_presentation_start_datetime ? ae_util.iso_datetime_formatter(ae_obj_li[i].event_presentation_start_datetime, 'datetime_iso_12_no_seconds') : '');
|
||||
|
||||
csv_row.push(ae_obj_li[i].event_presenter_id ? ae_obj_li[i].event_presenter_id : '');
|
||||
csv_row.push(ae_obj_li[i].event_presenter_full_name ?? '');
|
||||
csv_row.push(ae_obj_li[i].event_presenter_email ? ae_obj_li[i].event_presenter_email : '');
|
||||
|
||||
csv_row.push(encodeURI(`${$ae_api.base_url}/event/file/${ae_obj_li[i]?.event_file_id_random}/download?filename=${ae_util.clean_filename(ae_obj_li[i]?.filename)}&x_no_account_id_token=direct-download`));
|
||||
|
||||
csv_row.push(encodeURI(`${$ae_api.base_url}/event/file/${ae_obj_li[i]?.event_file_id_random}/download?filename=${ae_obj_li[i]?.event_session_code}-${ae_util.clean_filename(ae_obj_li[i]?.filename)}&x_no_account_id_token=direct-download`));
|
||||
|
||||
csv_data.push(csv_row);
|
||||
}
|
||||
|
||||
console.log('CSV Data:', csv_data);
|
||||
|
||||
let csv_content_str = '';
|
||||
csv_data.forEach(function(row) {
|
||||
csv_content_str += row.join(';');
|
||||
csv_content_str += '\n';
|
||||
});
|
||||
|
||||
const blob = new Blob([csv_content_str], { type: 'text/csv;charset=utf-8;' });
|
||||
const obj_url = URL.createObjectURL(blob);
|
||||
|
||||
const download_link = document.createElement('a');
|
||||
download_link.setAttribute('href', obj_url);
|
||||
download_link.setAttribute('download', `file_list_${ae_util.iso_datetime_formatter()}.csv`);
|
||||
download_link.setAttribute('style', 'display: none;')
|
||||
download_link.textContent = 'Download CSV';
|
||||
|
||||
// document.querySelector('body').appendChild(download_link);
|
||||
document.getElementById('download_csv_container').appendChild(download_link);
|
||||
|
||||
// Automatically download the file
|
||||
download_link.click();
|
||||
|
||||
return csv_data;
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
@@ -122,7 +195,7 @@ $effect(() => {
|
||||
}}
|
||||
>
|
||||
<span class="fas fa-file-csv mx-1"></span>
|
||||
Export Presenters CSV
|
||||
Export Files CSV
|
||||
</button>
|
||||
<span id="download_csv_container"></span>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user