Almost everything works!! Need to clean up export file. Missing custom questions and similar.

This commit is contained in:
Scott Idem
2024-04-03 18:10:47 -04:00
parent 9c85914b9f
commit 8d2f4e30f4
7 changed files with 117 additions and 38 deletions

View File

@@ -748,6 +748,33 @@ function handle_db_save_ae_obj_li__exhibitor_tracking({obj_type, obj_li}) {
}
async function handle_download_export__event_exhibit_tracking(
{
api_cfg,
exhibit_id,
file_type='CSV', // 'CSV' or 'Excel'
return_file=true,
filename='no_filename.csv',
auto_download=false,
params={},
log_lvl=0
}
) {
console.log('*** stores_event_api.js: get_event_exhibit_tracking_export() ***');
const endpoint = `/event/exhibit/${exhibit_id}/tracking/export`;
if (file_type == 'CSV' || file_type == 'Excel') {
params['file_type'] = file_type;
}
params['return_file'] = true;
ae_promises.download__event_exhibit_tracking_export_file = await api.get_object({api_cfg: api_cfg, endpoint: endpoint, params: params, return_blob: true, filename: filename, auto_download: auto_download, log_lvl: log_lvl});
console.log('ae_promises.download__event_exhibit_tracking_export_file:', ae_promises.download__event_exhibit_tracking_export_file);
return ae_promises.download__event_exhibit_tracking_export_file;
}
let export_obj = {
handle_load_ae_obj_id__event: handle_load_ae_obj_id__event,
handle_load_ae_obj_id__badge: handle_load_ae_obj_id__badge,
@@ -759,5 +786,6 @@ let export_obj = {
handle_load_ae_obj_li__exhibit_tracking: handle_load_ae_obj_li__exhibit_tracking,
handle_create_ae_obj__exhibit_tracking: handle_create_ae_obj__exhibit_tracking,
handle_update_ae_obj__exhibit_tracking: handle_update_ae_obj__exhibit_tracking,
handle_download_export__event_exhibit_tracking: handle_download_export__event_exhibit_tracking,
};
export let events_func = export_obj;

View File

@@ -58,6 +58,8 @@ let events_local_data_struct: key_val = {
show_hidden: false, // These are hidden (archived) leads so the list is not as long.
show_not_enabled: false,
refresh_interval__tracking_li: 30000, // 30 seconds
// The entered_passcode is the exhibit booths shared passcode for staff. This is used to initially access the lead retrieval service.
entered_passcode: null,

View File

@@ -143,26 +143,7 @@ onMount(() => {
}
}
// if ($events_slct.exhibit_obj.license_li_json[url_lic_key] && $events_slct.exhibit_obj.license_li_json[url_lic_key].passcode == url_lic_pass) {
// console.log('License key passcode matched');
// $events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id] = {
// key: url_lic_key,
// updated_on: new Date().toISOString()
// };
// } else {
// console.log('License key passcode does not match');
// return false;
// }
}
// // We need to remove the url_passcode from the URL GET params after we use it. It should be safe to assume that onMount is a safe place to do this.
// if (url_passcode) {
// // console.log('Remove the passcode from the URL.');
// data.url.searchParams.delete('passcode');
// let new_url = data.url.toString()
// console.log(new_url);
// goto(new_url, {replaceState: true});
// }
});
// console.log(`$ae_loc = `, $ae_loc);

View File

@@ -36,7 +36,7 @@ export async function load({ parent }) { // route
ae_acct.slct.event_exhibit_obj = await load_event_exhibit_obj;
let load_event_exhibit_tracking_obj_li = events_func.handle_load_ae_obj_li__exhibit_tracking({api_cfg: ae_acct.api, exhibit_id: event_exhibit_id, try_cache: false});
let load_event_exhibit_tracking_obj_li = events_func.handle_load_ae_obj_li__exhibit_tracking({api_cfg: ae_acct.api, exhibit_id: event_exhibit_id, try_cache: false});
console.log(`load_event_exhibit_tracking_obj_li = `, load_event_exhibit_tracking_obj_li);
ae_acct.slct.event_exhibit_tracking_obj_li = load_event_exhibit_tracking_obj_li;

View File

@@ -90,6 +90,18 @@ let lq__event_exhibit_tracking_obj_li = liveQuery(
// let update_submit_results = null;
// Once this component is mounted we need to start a loop that runs every X seconds to refresh the leads list for the exhibit.
// console.log('Start the loop to refresh the leads list for the exhibit.');
console.log('Refresh interval:', $events_loc.leads.refresh_interval__tracking_li ?? 'not set');
let refresh_leads_list = setInterval(function () {
console.log('Refresh the leads list for the exhibit.');
events_func.handle_load_ae_obj_li__exhibit_tracking({
api_cfg: $ae_api,
exhibit_id: $events_slct.exhibit_id,
params: {enabled: 'all'}
});
}, $events_loc.leads.refresh_interval__tracking_li ?? 35000);
</script>

View File

@@ -14,6 +14,8 @@ import Element_ae_crud from '$lib/element_ae_crud.svelte';
// These will likely be used for patch/update triggers. Maybe delete?
let ae_triggers: key_val = {};
let ae_promises: key_val = {}; // Promise<any>;
$: event_exhibit_obj = liveQuery(
() => db_events.exhibits.get($events_slct.exhibit_id)
);
@@ -29,19 +31,20 @@ $: if ($events_slct.exhibit_id) {
// Updated 2022-04-22
export let get_event_exhibit_tracking_export = async function get_event_exhibit_tracking_export({event_exhibit_id, file_type='CSV', return_file=true, filename=null, auto_download=false, params={}, log_lvl=0}) {
console.log('*** stores_event_api.js: get_event_exhibit_tracking_export() ***');
// export let get_event_exhibit_tracking_export = async function get_event_exhibit_tracking_export({event_exhibit_id, file_type='CSV', return_file=true, filename=null, auto_download=false, params={}, log_lvl=0}) {
// console.log('*** stores_event_api.js: get_event_exhibit_tracking_export() ***');
const endpoint = `/event/exhibit/${event_exhibit_id}/tracking/export`;
if (file_type == 'CSV' || file_type == 'Excel') {
params['file_type'] = file_type;
}
params['return_file'] = true;
// const endpoint = `/event/exhibit/${event_exhibit_id}/tracking/export`;
// if (file_type == 'CSV' || file_type == 'Excel') {
// params['file_type'] = file_type;
// }
// params['return_file'] = true;
// let event_exhibit_tracking_export_file_get_promise = await api.get_object({api_cfg: ae_api, endpoint: endpoint, params: params, return_blob: true, filename: filename, auto_download: auto_download, log_lvl: log_lvl});
// // console.log(event_exhibit_tracking_export_file_get_promise);
// return event_exhibit_tracking_export_file_get_promise;
// }
let event_exhibit_tracking_export_file_get_promise = await api.get_object({api_cfg: ae_api, endpoint: endpoint, params: params, return_blob: true, filename: filename, auto_download: auto_download, log_lvl: log_lvl});
// console.log(event_exhibit_tracking_export_file_get_promise);
return event_exhibit_tracking_export_file_get_promise;
}
</script>
@@ -404,14 +407,32 @@ export let get_event_exhibit_tracking_export = async function get_event_exhibit_
if (!confirm('Download exported data Excel file?')) {
return false;
}
get_event_exhibit_tracking_export({ 'event_exhibit_id': $events_slct.exhibit_id, file_type: 'Excel', 'return_file': true, filename: `lead_retrieval_export_${$events_slct.exhibit_obj.name.replaceAll(' ', '_')}.xlsx`, auto_download: true, log_lvl: 2 });
ae_promises.download__exhibit_tracking_export = events_func.handle_download_export__event_exhibit_tracking({
api_cfg: $ae_api,
exhibit_id: $events_slct.exhibit_id,
file_type: 'Excel',
return_file: true,
filename: `lead_retrieval_export_${$events_slct.exhibit_obj.name.replaceAll(' ', '_')}.xlsx`,
auto_download: true,
log_lvl: 2
});
// get_event_exhibit_tracking_export({ 'event_exhibit_id': $events_slct.exhibit_id, file_type: 'Excel', 'return_file': true, filename: `lead_retrieval_export_${$events_slct.exhibit_obj.name.replaceAll(' ', '_')}.xlsx`, auto_download: true, log_lvl: 2 });
// .replace(' ', '_')
}}
disabled={true}
disabled={!$events_slct.exhibit_obj.priority}
class="btn btn-sm variant-ghost-primary w-48 mb-1 export_data_btn"
title={`TEMPORARILY DISABLED: Download leads data for ${$events_slct.exhibit_obj.name}`}
>
{#await ae_promises.download__exhibit_tracking_export}
<span class="fas fa-spinner fa-spin"></span>
<!-- <span class="loading-text">
Downloading...
</span> -->
{:then}
<!-- Done? -->
{/await}
<span class="fas fa-download mx-1"></span> Export Data
</button>
@@ -424,6 +445,34 @@ export let get_event_exhibit_tracking_export = async function get_event_exhibit_
Additional Settings
</h2>
<div>
List refresh interval in seconds:
<select
bind:value={$events_loc.leads.refresh_interval__tracking_li}
on:change={() => {
console.log('List refresh interval in seconds:', $events_loc.leads.refresh_interval__tracking_li);
// clearInterval($events_loc.leads.refresh_interval_id);
// $events_loc.leads.refresh_interval_id = setInterval(() => {
// console.log('Refreshing list...');
// events_func.handle_load_ae_obj_id__exhibit({api_cfg: $ae_api, exhibit_id: $events_slct.exhibit_id});
// }, $events_loc.leads.refresh_interval);
}}
class="input w-36 m-1"
>
{#if $ae_loc.trusted_access}
<option value={1000}>1 seconds</option>
<option value={3000}>3 seconds</option>
<option value={5000}>5 seconds</option>
<option value={7000}>7 seconds</option>
{/if}
<option value={10000}>10 seconds</option>
<option value={15000}>15 seconds</option>
<option value={25000}>25 seconds</option>
<option value={30000}>30 seconds</option>
<option value={45000}>45 seconds</option>
</select>
</div>
<div class="text-center">
<button
class="btn btn-sm variant-ghost-warning m-1"

View File

@@ -647,6 +647,18 @@ async function handle_submit_form_lead_update(event) {
on:ae_crud_updated={e => {
console.log(`ae_crud_updated event:`, e.detail);
events_func.handle_load_ae_obj_id__exhibit_tracking({api_cfg: $ae_api, exhibit_tracking_id: $events_slct.exhibit_tracking_id});
let load_event_exhibit_tracking_obj_li = events_func.handle_load_ae_obj_li__exhibit_tracking({
api_cfg: $ae_api,
exhibit_id: $event_exhibit_obj?.event_exhibit_id_random,
params: {enabled: 'all'}
});
console.log(`load_event_exhibit_tracking_obj_li = `, load_event_exhibit_tracking_obj_li);
if (!$ae_loc.trusted_access) {
$events_sess.leads.show_form__view_lead = false;
$events_sess.leads.lead_data_changed = null;
}
}}
>
{#if $ae_loc.trusted_access}
@@ -662,11 +674,6 @@ async function handle_submit_form_lead_update(event) {
$events_slct.exhibit_tracking_obj.enable = !$event_exhibit_tracking_obj?.enable;
ae_triggers.enable = true;
if (!$ae_loc.trusted_access) {
$events_sess.leads.show_form__view_lead = false;
$events_sess.leads.lead_data_changed = null;
}
}}
class="btn btn-sm variant-soft-success"
>