New reports for large files. Better file query as well.

This commit is contained in:
Scott Idem
2024-10-15 15:27:11 -04:00
parent 1189e2e877
commit 9a951ee365
3 changed files with 325 additions and 135 deletions

View File

@@ -275,12 +275,108 @@ export async function update_ae_obj__event_file(
}
// This new function is using CRUD v2. This should allow for more flexibility in the queries.
// Updated 2024-10-15
export async function qry__event_file(
{
api_cfg,
event_id,
qry_created_on = null, // Example greater than: '2024-10-24'
qry_min_file_size = null,
enabled = 'enabled',
hidden = 'not_hidden',
limit = 50,
offset = 0,
order_by_li = {'priority': 'DESC', 'sort': 'DESC', 'created_on': 'DESC', 'updated_on': 'DESC', 'filename': 'ASC', 'extension': 'ASC', 'hosted_file_size': 'ASC'},
params = {},
try_cache = true,
log_lvl = 0
}: {
api_cfg: any,
event_id: any,
qry_created_on?: null|string,
qry_min_file_size?: null|number,
enabled?: string,
hidden?: string,
limit?: number,
offset?: number,
order_by_li?: key_val,
params?: any,
try_cache?: boolean,
log_lvl?: number
}
) {
if (log_lvl) {
console.log(`*** qry__event_file() *** event_id=${event_id}`);
}
let params_json: key_val = {};
params_json['qry'] = [];
if (qry_created_on) {
let qry_param =
{
type: "AND",
field: "created_on",
operator: ">",
value: qry_created_on
};
params_json['qry'].push(qry_param);
}
if (qry_min_file_size) {
console.log('qry_min_file_size:', qry_min_file_size);
let qry_param =
{
type: "AND",
field: "hosted_file_size",
operator: ">",
value: qry_min_file_size
};
params_json['qry'].push(qry_param);
}
ae_promises.load__event_file_obj_li = await api.get_ae_obj_li_for_obj_id_crud_v2({
api_cfg: api_cfg,
obj_type: 'event_file',
for_obj_type: 'event',
for_obj_id: event_id,
use_alt_tbl: true, // NOTE: We want to use the alt table for file searching?
use_alt_mdl: false,
use_alt_exp: false,
enabled: enabled,
hidden: hidden,
order_by_li: order_by_li,
limit: limit,
offset: offset,
params_json: params_json,
params: params,
log_lvl: log_lvl
})
.then(function (event_file_obj_li_get_result) {
if (event_file_obj_li_get_result) {
db_save_ae_obj_li__event_file({obj_type: 'event_file', obj_li: event_file_obj_li_get_result});
return event_file_obj_li_get_result;
} else {
return [];
}
});
if (log_lvl) {
console.log('ae_promises.load__event_file_obj_li:', ae_promises.load__event_file_obj_li);
}
return ae_promises.load__event_file_obj_li;
}
// Updated 2024-07-12
export async function search__event_file(
{
api_cfg,
event_id,
created_on = null,
min_file_size = null,
fulltext_search_qry_str,
ft_file_search_qry_str,
like_search_qry_str = null,
@@ -294,6 +390,7 @@ export async function search__event_file(
api_cfg: any,
event_id: any,
created_on?: null|string,
min_file_size?: null|number,
fulltext_search_qry_str?: null|string,
ft_file_search_qry_str?: null|string,
like_search_qry_str?: null|string,
@@ -363,6 +460,10 @@ export async function search__event_file(
// params_json['and_qry']['created_on'] = created_on;
// }
if (min_file_size) {
params_json['and_qry'] = {'hosted_file_size': {'>': min_file_size}};
}
ae_promises.load__event_file_obj_li = await api.get_ae_obj_li_for_obj_id_crud({
api_cfg: api_cfg,
obj_type: 'event_file',

View File

@@ -9,6 +9,7 @@ import {
delete_ae_obj_id__event_file,
create_event_file_obj_from_hosted_file_async,
update_ae_obj__event_file,
qry__event_file,
search__event_file,
db_save_ae_obj_li__event_file,
} from "$lib/ae_events__event_file";
@@ -83,6 +84,7 @@ let export_obj = {
load_ae_obj_li__event_file: load_ae_obj_li__event_file,
delete_ae_obj_id__event_file: delete_ae_obj_id__event_file,
update_ae_obj__event_file: update_ae_obj__event_file,
qry__event_file: qry__event_file,
search__event_file: search__event_file,
db_save_ae_obj_li__event_file: db_save_ae_obj_li__event_file,

View File

@@ -63,20 +63,22 @@ onMount(() => {
async function handle_search__event_file(
{
created_on = null,
min_file_size = null, // in bytes
ft_search_str = '',
lk_search_str = '',
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__files ?? 50,
},
try_cache=true,
log_lvl=0,
// 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__files ?? 35,
// },
try_cache = true,
log_lvl = 0,
}: {
created_on?: null|string,
min_file_size?: null|number,
ft_search_str?: string,
lk_search_str?: string,
params?: key_val,
// params?: key_val,
try_cache?: boolean,
log_lvl?: number,
}
@@ -86,14 +88,18 @@ async function handle_search__event_file(
$events_sess.pres_mgmt.status_qry__search = 'loading';
$events_sess.pres_mgmt.status_rpt[$events_sess.pres_mgmt.show_report] = 'loading';
ae_promises.search__event_file = events_func.search__event_file({
ae_promises.search__event_file = events_func.qry__event_file({
api_cfg: $ae_api,
event_id: $events_slct.event_id,
created_on: created_on,
fulltext_search_qry_str: ft_search_str,
like_search_qry_str: lk_search_str,
qry_created_on: created_on,
qry_min_file_size: min_file_size,
// 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,
params: params,
enabled: $events_loc.pres_mgmt.qry_enabled ?? 'enabled',
hidden: $events_loc.pres_mgmt.qry_hidden ?? 'not_hidden',
limit: $events_loc.pres_mgmt.qry_limit__files ?? 35,
// params: params,
try_cache: try_cache,
log_lvl: log_lvl,
})
@@ -449,6 +455,7 @@ async function handle_qry__event_session(
<div class="variant-ghost-success my-2 p-2 rounded-md flex flex-row flex-wrap gap-1 items-center justify-center">
<span class="border border-gray-200 rounded-md p-1">
<button
type="button"
disabled={!$ae_loc.trusted_access}
@@ -483,50 +490,52 @@ async function handle_qry__event_session(
Not Agreed
{/if}
</button>
<!-- Sessions without POC bios -->
<button
type="button"
disabled={!$ae_loc.trusted_access}
on:click={() => {
$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_sess.pres_mgmt.show_report = 'sessions_poc_agree';
handle_qry__event_session({
qry_poc_kv_json: true,
qry_poc_bios: true,
});
$events_sess.pres_mgmt.show_report = 'session_no_bio';
}}
class="btn btn-sm variant-glass-warning hover:variant-ghost-warning transition-all m-1"
class="btn btn-sm variant-ghost-success hover:variant-filled-success transition-all m-1"
title="Show sessions without POC bios."
>
{#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 $events_sess.pres_mgmt?.show_report == 'session_no_bio' && $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-book m-1"></span>
Session {$events_loc.pres_mgmt?.label__session_poc_name} Bios
</button>
<!-- Sessions without files uploaded -->
<button
type="button"
disabled={!$ae_loc.trusted_access}
on:click={() => {
handle_qry__event_session({
qry_files: false,
});
$events_sess.pres_mgmt.show_report = 'session_no_files';
}}
class="btn btn-sm variant-ghost-success hover:variant-filled-success 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>
<!-- Sessions without POC bios -->
<button
type="button"
disabled={!$ae_loc.trusted_access}
on:click={() => {
handle_qry__event_session({
qry_poc_kv_json: true,
qry_poc_bios: true,
});
$events_sess.pres_mgmt.show_report = 'session_no_bio';
}}
class="btn btn-sm variant-ghost-success hover:variant-filled-success transition-all m-1"
title="Show sessions without POC bios."
>
{#if $events_sess.pres_mgmt?.show_report == 'session_no_bio' && $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-book m-1"></span>
Session {$events_loc.pres_mgmt?.label__session_poc_name} Bios
</button>
<span class="border border-gray-200 rounded-md p-1">
<button
type="button"
disabled={!$ae_loc.trusted_access}
@@ -562,94 +571,87 @@ async function handle_qry__event_session(
Not Agreed
{/if}
</button>
<button
type="button"
disabled={!$ae_loc.trusted_access}
on:click={() => {
$events_loc.pres_mgmt.rpt__presenter_agree = !$events_loc.pres_mgmt.rpt__presenter_agree;
handle_search__event_presenter({
biography: true,
ft_search_str: '',
lk_search_str: '',
log_lvl: log_lvl,
});
$events_sess.pres_mgmt.show_report = 'presenters_biography';
// $events_sess.pres_mgmt.show_report__presenters_biography = !$events_sess.pres_mgmt.show_report__presenters_biography;
// $events_sess.pres_mgmt.show_report__presenters_agree = false;
// $events_sess.pres_mgmt.show_report__recent_files = false;
}}
class="btn btn-sm variant-glass-warning hover:variant-ghost-warning transition-all m-1"
class="btn btn-sm variant-ghost-success hover:variant-filled-success transition-all m-1"
title="NOT READY YET: Show presenters with bios."
>
{#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 $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>
{/if}
<span class="fas fa-book m-1"></span>
Presenter Bios
</button>
</span>
<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_sess.pres_mgmt.show_report = 'presenters_biography';
// $events_sess.pres_mgmt.show_report__presenters_biography = !$events_sess.pres_mgmt.show_report__presenters_biography;
// $events_sess.pres_mgmt.show_report__presenters_agree = false;
// $events_sess.pres_mgmt.show_report__recent_files = false;
}}
class="btn btn-sm variant-ghost-success hover:variant-filled-success transition-all m-1"
title="NOT READY YET: 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>
{/if}
<span class="fas fa-book m-1"></span>
Presenter Bios
</button>
<span class="border border-gray-200 rounded-md p-1">
<button
type="button"
disabled={!$ae_loc.trusted_access}
on:click={() => {
handle_search__event_file({
created_on: null,
ft_search_str: '',
lk_search_str: '',
log_lvl: log_lvl,
});
$events_sess.pres_mgmt.show_report = 'recent_files';
// $events_sess.pres_mgmt.show_report__presenters_agree = false;
// $events_sess.pres_mgmt.show_report__presenters_biography = false;
// $events_sess.pres_mgmt.show_report__recent_files = !$events_sess.pres_mgmt.show_report__recent_files;
}}
class="btn btn-sm variant-ghost-success hover:variant-filled-success transition-all m-1"
title="Show recent file uploads."
>
{#if $events_sess.pres_mgmt?.show_report == 'recent_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-file m-1"></span>
Recent File Uploads
</button>
<button
type="button"
disabled={!$ae_loc.trusted_access}
on:click={() => {
handle_search__event_file({
created_on: null,
// ft_search_str: '',
// lk_search_str: '',
log_lvl: log_lvl,
});
$events_sess.pres_mgmt.show_report = 'recent_files';
// $events_sess.pres_mgmt.show_report__presenters_agree = false;
// $events_sess.pres_mgmt.show_report__presenters_biography = false;
// $events_sess.pres_mgmt.show_report__recent_files = !$events_sess.pres_mgmt.show_report__recent_files;
}}
class="btn btn-sm variant-ghost-success hover:variant-filled-success transition-all m-1"
title="Show recent file uploads."
>
{#if $events_sess.pres_mgmt?.show_report == 'recent_files' && $events_sess.pres_mgmt.status_rpt[$events_sess.pres_mgmt?.show_report] == 'loading'}
<span class="fas fa-spinner fa-spin m-1"></span>
{:else}
<span class="fas fa-file m-1"></span>
{/if}
Recent File Uploads
</button>
<button
type="button"
disabled={!$ae_loc.trusted_access}
on:click={() => {
handle_search__event_file({
created_on: null,
min_file_size: $events_loc.pres_mgmt.qry__files_min_size ?? 100000000, // in bytes
// ft_search_str: '',
// lk_search_str: '',
log_lvl: log_lvl,
});
$events_sess.pres_mgmt.show_report = 'large_files';
}}
class="btn btn-sm variant-ghost-success hover:variant-filled-success transition-all m-1"
title="Show large file uploads."
>
{#if $events_sess.pres_mgmt?.show_report == 'large_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-file m-1"></span>
Large File Uploads
</button>
</span>
<!-- Sessions without files uploaded -->
<button
type="button"
disabled={!$ae_loc.trusted_access}
on:click={() => {
handle_qry__event_session({
qry_files: false,
});
$events_sess.pres_mgmt.show_report = 'session_no_files';
}}
class="btn btn-sm variant-ghost-success hover:variant-filled-success 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>
</div>
@@ -673,7 +675,29 @@ async function handle_qry__event_session(
<!-- Show session POC that have agreed -->
{#if $events_sess.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}</h3>
<h3 class="h4 text-center">
Sessions POC {#if $events_loc.pres_mgmt.rpt__session_poc_agree}Agreed{:else}Not Agreed{/if}
<button
type="button"
on:click={() => {
$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_sess.pres_mgmt.show_report = 'sessions_poc_agree';
}}
class="btn btn-sm variant-glass-warning hover:variant-ghost-warning transition-all 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>
{#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}
@@ -699,10 +723,43 @@ async function handle_qry__event_session(
</Comp_event_session_obj_tbl>
{/if}
<!-- Show sessions without files -->
{#if $events_sess.pres_mgmt.show_report == 'session_no_files' && event_session_id_random_li}
<h3 class="h4 text-center">Sessions without Files</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 presenters that have agreed -->
{#if $events_sess.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}</h3>
<h3 class="h4 text-center">
Presenters {#if $events_loc.pres_mgmt.rpt__presenter_agree}Agreed{:else}Not Agreed{/if}
<button
type="button"
on:click={() => {
$events_loc.pres_mgmt.rpt__presenter_agree = !$events_loc.pres_mgmt.rpt__presenter_agree;
}}
class="btn btn-sm variant-glass-warning hover:variant-ghost-warning transition-all 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}
@@ -729,6 +786,7 @@ async function handle_qry__event_session(
</Comp_event_presenter_obj_tbl>
{/if}
<!-- Show recently uploaded files -->
{#if $events_sess.pres_mgmt.show_report == 'recent_files' && event_file_id_random_li}
<h3 class="h4 text-center">Recent File Uploads</h3>
@@ -744,19 +802,48 @@ async function handle_qry__event_session(
{/if}
<!-- Show sessions without files -->
{#if $events_sess.pres_mgmt.show_report == 'session_no_files' && event_session_id_random_li}
<h3 class="h4 text-center">Sessions without Files</h3>
<!-- Show large files -->
{#if $events_sess.pres_mgmt.show_report == 'large_files' && event_file_id_random_li}
<h3 class="h4 text-center">
Large File Uploads
<select
class="select text-sm w-28 variant-glass-warning hover:variant-ghost-warning transition-all m-1"
bind:value={$events_loc.pres_mgmt.qry__files_min_size}
on:change={
() => {
handle_search__event_file({
created_on: null,
min_file_size: $events_loc.pres_mgmt.qry__files_min_size ?? 100000000, // in bytes
log_lvl: log_lvl,
});
$events_sess.pres_mgmt.show_report = 'large_files';
}
}
>
<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>
</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_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}
>
</Comp_event_session_obj_tbl>
</Comp_event_file_obj_tbl>
{/if}
</section>