General work through out the day. Lots of interruptions from the dogs.

This commit is contained in:
Scott Idem
2024-03-25 19:26:49 -04:00
parent b0f2e2ccdf
commit 3ddef770c0
16 changed files with 497 additions and 491 deletions

View File

@@ -1,6 +1,7 @@
<script lang="ts">
/** @type {import('./$types').LayoutData} */
export let data;
export let data: any;
import { goto } from '$app/navigation';
import { onMount } from 'svelte';
@@ -8,11 +9,26 @@ import { ae_loc, ae_sess, ae_api, slct, slct_trigger } from '$lib/ae_stores';
import { events_loc, events_slct, events_trigger } from '$lib/ae_events_stores';
import { ae_util } from '$lib/ae_utils';
if (!$ae_api.account_id || !$ae_api.headers['x-account-id']) {
console.log(`Account ID not set. Redirecting to root if can not fix.`);
if ($ae_loc.account_id) {
$ae_api.account_id = $ae_loc.account_id;
$ae_api.headers['x-account-id'] = $ae_loc.account_id;
} else {
goto('/');
}
}
$events_loc.qry__enabled = 'enabled';
$events_loc.qry__hidden = 'not_hidden';
$events_loc.qry__limit = 25;
$events_loc.qry__offset = 0;
$events_slct.event_id = data.ae_slct.event_id
$events_slct.event_obj = data.ae_slct.event_obj
$events_slct.exhibit_obj_li = data.ae_slct.event_exhibit_obj_li
onMount(() => {
console.log('Events Leads: +layout.svelte');

View File

@@ -0,0 +1,39 @@
/** @type {import('./$types').LayoutLoad} */
console.log(`ae_events_leads +layout.ts start`);
import { events_func } from '$lib/ae_events_functions';
export async function load({ parent }) {
let data = await parent();
if (data.ae_loc.account_id) {
} else {
console.log(`The account_id was not found in the data.ae_loc!!!`);
return false;
}
let event_id = null;
if (data.url.searchParams.get('event_id')) {
event_id = data.url.searchParams.get('event_id');
} else if (data.ae_loc.site_cfg_json.slct__event_id) {
event_id = data.ae_loc.site_cfg_json.slct__event_id;
} else if (data.ae_loc.default__event_id) {
event_id = data.ae_loc.default__event_id;
} else {
console.log(`The slct__event_id was not found in the data.ae_loc.site_cfg_json!!!`);
return false;
}
let load_event_obj = events_func.handle_load_ae_obj_id__event({api_cfg: data.ae_api, event_id: event_id, try_cache: false});
data.ae_slct.event_id = event_id;
data.ae_slct.event_obj = await load_event_obj;
let load_event_exhibit_obj_li = events_func.handle_load_ae_obj_li__exhibit({api_cfg: data.ae_api, event_id: event_id, try_cache: false});
console.log(`load_event_exhibit_obj_li = `, load_event_exhibit_obj_li);
data.ae_slct.event_exhibit_obj_li = load_event_exhibit_obj_li;
return data;
}

View File

@@ -1,5 +1,5 @@
<script lang="ts">
export let data;
export let data: any;
// console.log(`ae_events_leads +page data:`, data);
// console.log(`ae_events_leads Data Params:`, data.url.searchParams.get('event_id'));
@@ -67,6 +67,21 @@ onMount(() => {
});
$: if ($events_loc.leads.auth_exhibit_kv && $events_slct.exhibit_obj && $events_slct.exhibit_obj.event_exhibit_id_random && $events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_obj.event_exhibit_id_random]) {
disable_open_lead_retrieval_btn = false;
disable_reset_passcode_btn = false;
$events_sess.leads.open_href = `/events_leads/exhibit/${$events_slct.exhibit_obj.id_random}`;
if ($events_loc.leads.auto_view) {
goto($events_sess.leads.open_href, {invalidateAll: true});
}
} else {
disable_open_lead_retrieval_btn = true;
disable_reset_passcode_btn = true;
}
$: if ($events_sess.leads.entered_passcode && $events_sess.leads.entered_passcode >= 5) {
// disable_open_lead_retrieval_btn = false;
// Convert the passcode to a string before checking it.

View File

@@ -1,4 +1,5 @@
/** @type {import('./$types').PageLoad} */
console.log(`ae_events_leads +page.ts start`);
import { events_func } from '$lib/ae_events_functions';
@@ -11,11 +12,11 @@ export async function load({ params, parent, url }) { // route
// console.log(`ae_events_leads +page.ts data:`, data);
// console.log(`ae_events_leads +page.ts data.ae_loc:`, data.ae_loc);
if (data.ae_loc.account_id) {
} else {
console.log(`The account_id was not found in the data.ae_loc!!!`);
return false;
}
// if (data.ae_loc.account_id) {
// } else {
// console.log(`The account_id was not found in the data.ae_loc!!!`);
// return false;
// }
data.ae_events_leads_page_ts = true;
@@ -27,12 +28,12 @@ export async function load({ params, parent, url }) { // route
data.submenu = submenu
// Do not wait on these:
let event_id = url.searchParams.get('event_id');
let load_event_obj = events_func.handle_load_ae_obj_id__event({api_cfg: data.ae_api, event_id: event_id, try_cache: false});
// let event_id = url.searchParams.get('event_id');
// let load_event_obj = events_func.handle_load_ae_obj_id__event({api_cfg: data.ae_api, event_id: event_id, try_cache: false});
// console.log(`load_event_obj = `, load_event_obj);
let load_event_exhibit_obj_li = events_func.handle_load_ae_obj_li__exhibit({api_cfg: data.ae_api, event_id: event_id, try_cache: false});
console.log(`load_event_exhibit_obj_li = `, load_event_exhibit_obj_li);
// let load_event_exhibit_obj_li = events_func.handle_load_ae_obj_li__exhibit({api_cfg: data.ae_api, event_id: event_id, try_cache: false});
// console.log(`load_event_exhibit_obj_li = `, load_event_exhibit_obj_li);
// let exhibit_id = data.params.slug;
// let load_event_exhibit_obj = events_func.handle_load_ae_obj_id__exhibit({api_cfg: data.ae_api, exhibit_id: exhibit_id, try_cache: false});

View File

@@ -5,6 +5,8 @@ export let data;
import { onMount } from 'svelte';
import { goto, invalidate, pushState, replaceState } from '$app/navigation';
import { clipboard, FileDropzone, getModalStore, localStorageStore, ProgressRadial, RadioGroup, RadioItem, TabGroup, Tab, TabAnchor } from '@skeletonlabs/skeleton';
import type { key_val } from '$lib/ae_stores';
import { ae_util } from '$lib/ae_utils';
import { api } from '$lib/api';
@@ -14,28 +16,26 @@ import { ae_loc, ae_sess, ae_api, ae_trig, slct, slct_trigger } from '$lib/ae_st
import { events_loc, events_sess, events_slct, events_trigger } from '$lib/ae_events_stores';
import { events_func } from '$lib/ae_events_functions';
$events_slct.exhibit_id = data.ae_slct.event_exhibit_id;
$events_slct.exhibit_obj = data.ae_slct.event_exhibit_obj;
$events_slct.exhibit_tracking_obj_li = data.ae_slct.event_exhibit_tracking_obj_li;
import { clipboard, FileDropzone, getModalStore, localStorageStore, ProgressRadial, RadioGroup, RadioItem, TabGroup, Tab, TabAnchor } from '@skeletonlabs/skeleton';
// import type { Writable } from 'svelte/store';
// import Element_data_store from '$lib/element_data_store.svelte';
// import Element_qr_scanner from '$lib/element_qr_scanner.svelte';
import Leads_add_scan from './leads_add_scan.svelte';
import Leads_list from './leads_list.svelte';
import Leads_manage from './leads_manage.svelte';
import Leads_payment from './leads_payment.svelte';
let param_slug_event_exhibit_id = data.params.slug;
// let param_slug_event_exhibit_id = data.params.slug;
let url_passcode = data.url.searchParams.get('passcode');
console.log(`ae_events_leads exhibit [slug] +page.svelte: param_slug_event_exhibit_id=${param_slug_event_exhibit_id}; passcode=${url_passcode}`);
if (url_passcode) {
console.log(`ae_events_leads exhibit [slug] +page.svelte: event_exhibit_id=${$events_slct.exhibit_id}; passcode=${url_passcode}`);
$events_sess.leads.entered_passcode = url_passcode;
}
let event_exhibit_obj = liveQuery(
() => db_events.exhibits.get(param_slug_event_exhibit_id)
() => db_events.exhibits.get($events_slct.exhibit_id)
// () => db_events.exhibits.get(param_slug_event_exhibit_id)
// () => db_events.exhibits.toArray()
// () => db_events.exhibits
// .where('id_random')
@@ -45,12 +45,12 @@ let event_exhibit_obj = liveQuery(
// .toArray()
);
let event_exhibit_obj_v2 = db_events.exhibits.get(param_slug_event_exhibit_id);
let event_exhibit_obj_v2 = db_events.exhibits.get($events_slct.exhibit_id);
// Load the Event Exhibit Obj with ID based on the slug param.
$events_slct.exhibit_id = param_slug_event_exhibit_id;
console.log('Selected Event Exhibit ID:', $events_slct.exhibit_id);
$events_trigger = 'load__event_exhibit_obj';
// $events_slct.exhibit_id = param_slug_event_exhibit_id;
// console.log('Selected Event Exhibit ID:', $events_slct.exhibit_id);
// $events_trigger = 'load__event_exhibit_obj';
let license_submit_results: Promise<any>|key_val;
@@ -83,11 +83,9 @@ onMount(() => {
// console.log(`ae_events_leads exhibit [slug] +page.svelte data:`, data);
if ($events_slct.exhibit_id) {
console.log(`Got an ID. Let's do something!?`);
} else {
console.log(`No ID. Nothing to show. Try setting the ID again.`);
$events_slct.exhibit_id = param_slug_event_exhibit_id;
if (!$events_slct.exhibit_id) {
console.log(`No ID! Nothing to show. Try setting the ID again.`);
$events_slct.exhibit_id = $events_slct.exhibit_id;
}
// 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.
@@ -102,7 +100,6 @@ onMount(() => {
// console.log(`$ae_loc = `, $ae_loc);
$: if ($events_slct.exhibit_obj && $events_sess.leads.entered_passcode) {
console.log('Check the passcode?');
if ($events_sess.leads.entered_passcode.length > 4) {
console.log('Check the passcode');
handle_check_event_exhibit_staff_passcode();
@@ -236,7 +233,7 @@ async function handle_submit_form_license_update(event) {
return exhibit_results;
})
.finally(function () {
$events_trigger == 'load__event_exhibit_obj'
$events_trigger = 'load__event_exhibit_obj';
// $ae_sess.ds.submit_status = 'updated';
});
@@ -327,7 +324,7 @@ async function handle_submit_form(event) {
return exhibit_results;
})
.finally(function () {
$events_trigger == 'load__event_exhibit_obj'
$events_trigger = 'load__event_exhibit_obj';
// $ae_sess.ds.submit_status = 'updated';
});
}

View File

@@ -1,4 +1,5 @@
/** @type {import('./$types').PageLoad} */
console.log(`ae_events_leads slug +page.ts start`);
import { events_func } from '$lib/ae_events_functions';
@@ -10,35 +11,30 @@ export async function load({ params, parent, url }) { // route
let data = await parent();
// console.log(`ae_events_leads +page.ts data:`, data);
// console.log(`ae_events_leads +page.ts data.ae_loc:`, data.ae_loc);
if (data.ae_loc.account_id) {
} else {
console.log(`The account_id was not found in the data.ae_loc!!!`);
return false;
}
data.ae_events_leads_exhibit_slug_page_ts = true;
// let submenu = {
// main: {name: 'Main', href: '/events_leads', access: false},
// manage: {name: 'Manage', href: '/events_leads/manage', access: 'administrator', disable: true, hide: true},
// review: {name: 'Exhibitor', href: '/events_leads/exhibitor', access: false, disable: false, hide: false},
// };
// data.submenu = submenu
// Do not wait on these:
// let event_id = url.searchParams.get('event_id');
// let load_event_obj = events_func.handle_load_ae_obj_id__event({api_cfg: data.ae_api, event_id: event_id, try_cache: false});
// console.log(`load_event_obj = `, load_event_obj);
let param_slug_event_exhibit_id = data.params.slug;
let load_event_exhibit_tracking_obj_li = events_func.handle_load_ae_obj_li__exhibit_tracking({api_cfg: data.ae_api, exhibit_id: param_slug_event_exhibit_id, try_cache: false});
// console.log(`load_event_exhibit_tracking_obj_li = `, load_event_exhibit_tracking_obj_li);
let event_exhibit_id = null;
if (param_slug_event_exhibit_id) {
event_exhibit_id = param_slug_event_exhibit_id;
} else if (data.url.searchParams.get('event_exhibit_id')) {
event_exhibit_id = data.url.searchParams.get('event_exhibit_id');
} else {
console.log(`The slct__event_exhibit_id was not found in the data.params.slug or data.url!!!`);
return false;
}
// let exhibit_id = data.params.slug;
// let load_event_exhibit_obj = events_func.handle_load_ae_obj_id__exhibit({api_cfg: data.ae_api, exhibit_id: exhibit_id, try_cache: false});
// console.log(`load_event_exhibit_obj = `, load_event_exhibit_obj);
data.ae_slct.event_exhibit_id = event_exhibit_id;
let load_event_exhibit_obj = events_func.handle_load_ae_obj_id__exhibit({api_cfg: data.ae_api, exhibit_id: event_exhibit_id, try_cache: false});
data.ae_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: data.ae_api, exhibit_id: event_exhibit_id, try_cache: false});
console.log(`load_event_exhibit_tracking_obj_li = `, load_event_exhibit_tracking_obj_li);
data.ae_slct.event_exhibit_tracking_obj_li = load_event_exhibit_tracking_obj_li;
return data;
}

View File

@@ -5,6 +5,7 @@ import { ae_util } from '$lib/ae_utils';
import { liveQuery } from "dexie";
import { db_events } from "$lib/db_events";
import { ae_loc, ae_sess, ae_api, slct, slct_trigger } from '$lib/ae_stores';
// import { core_func } from '$lib/ae_core_functions';
import { events_loc, events_sess, events_slct, events_trigger } from '$lib/ae_events_stores';
import { events_func } from '$lib/ae_events_functions';
@@ -16,15 +17,24 @@ $events_sess.leads.show_form__search = true;
// TEMPORARY: For testing and development
let event_exhibit_obj = liveQuery(
$: event_exhibit_obj = liveQuery(
() => db_events.exhibits.get($events_slct.exhibit_id)
);
$: event_exhibit_tracking_obj = liveQuery(
() => db_events.exhibit_tracking.get($events_slct.exhibit_tracking_id)
);
$events_sess.leads.entered_search_str = 'Albert Einstein';
// $events_sess.leads.entered_search_str = 'Albert Einstein';
let tmp_search_terms = $events_sess.leads.entered_search_str.split(' ')
$: event_badge_obj = liveQuery(
() => db_events.badges.get($events_slct.badge_id)
);
// Version 2: This does not work yet
let event_badge_obj_li = liveQuery(
// () => db_events.exhibits.toArray()
@@ -72,7 +82,7 @@ async function handle_submit_form_search(event) {
$events_slct.badge_obj_li = search_submit_results;
}
let load_event_badge_results = null;
function handle_qr_scan_result(event) {
console.log('*** handle_qr_scan_result() ***');
@@ -89,6 +99,13 @@ function handle_qr_scan_result(event) {
$events_sess.leads.qr_scan_result = `Found a badge type with ID: ${event_badge_id}`;
load_event_badge_results = events_func.handle_load_ae_obj_id__badge({api_cfg: $ae_api, badge_id: event_badge_id })
.then((result) => {
$events_slct.badge_id = event_badge_id;
$events_slct.badge_obj = result;
console.log(result);
});
// event_exhibit_tracking_obj_create_promise = await handle_create_event_exhibit_tracking_obj($slct.event_exhibit_id, event_badge_id);
// console.log(event_exhibit_tracking_obj_create_promise);
// if (event_exhibit_tracking_obj_create_promise) {
@@ -111,6 +128,9 @@ function handle_qr_scan_result(event) {
// console.log('Something unexpected happened???');
// }
$events_sess.leads.show_confirm__add_lead[event_badge_id] = true;
} else if (qr_scan_obj.type && qr_scan_obj.id && qr_scan_obj.type == 'event_exhibit') {
console.log(`Ignoring.`);
} else if (qr_scan_obj.type && qr_scan_obj.id && qr_scan_obj.type == 'event_person') {
@@ -346,6 +366,7 @@ function handle_qr_camera(event) {
</button>
<!-- This block needs to be moved or something. It takes up too much space! -->
<!-- This uses the event_badge_obj_v2 from the for each loop. -->
{#if $events_sess.leads.show_confirm__add_lead[index]}
<div class="ae_quick_modal_container">
<section
@@ -361,7 +382,7 @@ function handle_qr_camera(event) {
"
>
<header class="popover__header flex gap-1 justify-between items-center p-1 border-b">
<h2 class="h3">Add?</h2>
<h2 class="h3">Add Selected?</h2>
<div class="popover__actions">
<button
@@ -386,6 +407,7 @@ function handle_qr_camera(event) {
class="btn variant-soft-primary"
on:click={() => {
console.log(`Do not add ${event_badge_obj_v2.full_name} ${event_badge_obj_v2.email} to the leads list`);
$events_sess.leads.show_confirm__add_lead[index] = false;
}}
>
@@ -403,10 +425,35 @@ function handle_qr_camera(event) {
events_func.handle_create_ae_obj__exhibit_tracking({api_cfg: $ae_api, exhibit_id: $events_slct.exhibit_id, event_badge_id: event_badge_obj_v2.event_badge_id_random, external_person_id: $events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id].key, })
.then((result) => {
console.log(result);
let exhibit_tracking_id = null;
let exhibit_tracking_obj = {};
if (result) {
exhibit_tracking_id = result.event_exhibit_tracking_id_random;
exhibit_tracking_obj = result;
$events_slct.exhibit_tracking_id = exhibit_tracking_id;
$events_slct.exhibit_tracking_obj = exhibit_tracking_obj;
$events_sess.leads.show_confirm__add_lead[index] = false;
} else {
console.log('Something went wrong with adding the lead to the list.');
console.log('This badge ID has probably already been added to the lead list for this exhibit.');
// Need to look the old record up and set it to not hidden.
// events_func.handle_update_ae_obj_id_crud({api_cfg: $ae_api, object_type: 'event_exhibit_tracking', object_id: $events_slct.exhibit_tracking_id, field_name: 'hide', new_field_value: false})
$events_sess.leads.show_confirm__add_lead[index] = false;
}
if ($events_loc.leads.auto_view) {
$events_sess.leads.show_form__search = false;
$events_sess.leads.show_form__scan = false;
// $events_slct.exhibit_tracking_id = exhibit_tracking_id;
// $events_slct.exhibit_tracking_obj = exhibit_tracking_id;
$events_loc.leads.tab[$events_slct.exhibit_id] = 'leads';
$events_sess.leads.show_form__view_lead = $events_slct.exhibit_tracking_id;
}
});
@@ -616,6 +663,115 @@ function handle_qr_camera(event) {
</div>
<!-- This block needs to be moved or something. It takes up too much space! -->
<!-- This uses the events_slct with badge_id and badge_obj. -->
{#if $events_sess.leads.show_confirm__add_lead[$events_slct.badge_id] && $event_badge_obj}
<div class="ae_quick_modal_container">
<section
class="
ae_quick_popover_small
events__leads__scan
z-50
flex
flex-col
gap-4
justify-stretch
"
>
<header class="popover__header flex gap-1 justify-between items-center p-1 border-b">
<h2 class="h3">Add Scanned?</h2>
<div class="popover__actions">
<button
type="button"
class="btn variant-soft-primary"
on:click={() => {
$events_slct.badge_id = null;
$events_slct.badge_obj = null;
$events_sess.leads.show_confirm__add_lead[$events_slct.badge_id] = false;
}}
>
<span class="fas fa-times mx-1"></span>
Close
</button>
</div>
</header>
<section class="popover__content grow flex flex-col gap-4 items-center ae_modal_scrollfix">
<p>Are you sure you want to add <strong>{$event_badge_obj.full_name}</strong> to the leads list?</p>
<p>Badge ID: <strong>{$event_badge_obj.event_badge_id_random}</strong></p>
<div class="flex flex-row gap-16 justify-center items-center">
<button
type="button"
class="btn variant-soft-primary"
on:click={() => {
console.log(`Do not add ${$event_badge_obj.full_name} ${$event_badge_obj.email} to the leads list`);
$events_slct.badge_id = null;
$events_slct.badge_obj = null;
$events_sess.leads.show_confirm__add_lead[$events_sess.leads.qr_scan_result] = false;
}}
>
<span class="fas fa-times mx-1"></span>
No
</button>
<button
type="button"
class="btn variant-soft-primary"
on:click={() => {
console.log(`Add ${event_badge_obj.full_name} ${event_badge_obj.email} to the leads list`);
events_func.handle_create_ae_obj__exhibit_tracking({api_cfg: $ae_api, exhibit_id: $events_slct.exhibit_id, event_badge_id: $events_slct.badge_id, external_person_id: $events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id].key, })
.then((result) => {
console.log(result);
let exhibit_tracking_id = null;
let exhibit_tracking_obj = {};
if (result) {
exhibit_tracking_id = result.event_exhibit_tracking_id_random;
exhibit_tracking_obj = result;
$events_slct.exhibit_tracking_id = exhibit_tracking_id;
$events_slct.exhibit_tracking_obj = exhibit_tracking_obj;
$events_sess.leads.show_confirm__add_lead[$events_slct.badge_id] = false;
} else {
console.log('This badge ID has probably already been added to the lead list for this exhibit.');
// Need to look the old record up and set it to not hidden.
$events_sess.leads.show_confirm__add_lead[$events_slct.badge_id] = false;
}
if ($events_loc.leads.auto_view) {
$events_sess.leads.show_form__search = false;
$events_sess.leads.show_form__scan = false;
$events_loc.leads.tab[$events_slct.exhibit_id] = 'leads';
$events_sess.leads.show_form__view_lead = $events_slct.exhibit_tracking_id;
}
});
// $events_sess.leads.show_confirm__add_lead[$events_slct.badge_id] = false;
}}
>
<span class="fas fa-check mx-1"></span>
Yes
</button>
</div>
</section> <!-- .popover__content -->
</section> <!-- .ae_quick_popover -->
</div>
{/if}
</section> <!-- .popover__content -->
<footer class="popover__footer flex gap-1 justify-between items-center p-1 border-t">