Almost everything works!! Need to clean up export file. Missing custom questions and similar.
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
>
|
||||
|
||||
Reference in New Issue
Block a user