Making things work smoothly

This commit is contained in:
Scott Idem
2024-03-28 17:34:19 -04:00
parent 86972f5a02
commit 9851c69c30
9 changed files with 257 additions and 26 deletions

BIN
..env.production.kate-swp Normal file

Binary file not shown.

View File

@@ -224,6 +224,14 @@ div.btn-group button:last-child {
border-bottom-right-radius: .25rem;
} */
.ae_obj_prop .label {
}
.ae_obj_prop .value {
font-weight: bold;
}
.ae_md_hide {
/* outline: medium dashed green; */

View File

@@ -464,7 +464,7 @@ async function handle_load_ae_obj_li__exhibit_tracking({api_cfg, exhibit_id, par
// Updated 2024-03-22
async function handle_create_ae_obj__exhibit_tracking({api_cfg, exhibit_id, event_badge_id, external_person_id, params={}, try_cache=false}) {
async function handle_create_ae_obj__exhibit_tracking({api_cfg, exhibit_id, event_badge_id, external_person_id, params={}}) {
console.log(`*** handle_create_ae_obj__exhibit_tracking() *** exhibit_id=${exhibit_id}, event_badge_id=${event_badge_id}`);
let params_json: key_val = {};
@@ -508,6 +508,37 @@ async function handle_create_ae_obj__exhibit_tracking({api_cfg, exhibit_id, even
}
// Updated 2024-03-28
async function handle_update_ae_obj__exhibit_tracking({api_cfg, exhibit_tracking_id, data, params={}}) {
console.log(`*** handle_update_ae_obj__exhibit_tracking() *** exhibit_tracking_id=${exhibit_tracking_id}`);
ae_promises.update__event_exhibit_tracking = await api.update_ae_obj_id_crud({
api_cfg: api_cfg,
obj_type: 'event_exhibit_tracking',
obj_id: exhibit_tracking_id,
fields: data,
key: api_cfg.api_crud_super_key,
params: params,
return_obj: true,
log_lvl: 1
})
.then(function (exhibit_tracking_obj_update_result) {
if (exhibit_tracking_obj_update_result) {
handle_db_save_ae_obj_li__exhibitor_tracking({obj_type: 'event_exhibit_tracking', obj_li: [exhibit_tracking_obj_update_result]});
return exhibit_tracking_obj_update_result;
} else {
return null;
}
})
.catch(function (error) {
console.log('No results returned or failed.', error);
})
.finally(function () {
});
console.log('ae_promises.update__event_exhibit_tracking:', ae_promises.update__event_exhibit_tracking);
return ae_promises.update__event_exhibit_tracking;
}
@@ -727,5 +758,6 @@ let export_obj = {
handle_load_ae_obj_id__exhibit_tracking: handle_load_ae_obj_id__exhibit_tracking,
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,
};
export let events_func = export_obj;

View File

@@ -151,6 +151,8 @@ let events_session_data_struct: key_val = {
entered_search_str: null,
lead_data_changed: false,
qr_scan_start: true,
qr_scan_result: null,
},

View File

@@ -185,7 +185,7 @@ export let ae_app_session_data_struct: key_val = {
'testing': {},
},
};
console.log(`AE Stores - App Session Storage Data:`, ae_app_session_data_struct);
// console.log(`AE Stores - App Session Storage Data:`, ae_app_session_data_struct);
export let ae_sess = writable(ae_app_session_data_struct);

View File

@@ -158,6 +158,7 @@ export async function load({ fetch, params, parent, route, url }) { // params, r
return site_domain_results.account_id_random;
}
console.log(`root layout.ts: Site domain results not found!!!`)
return null;
});
@@ -168,6 +169,11 @@ export async function load({ fetch, params, parent, route, url }) { // params, r
// return true;
// });
if (!account_id) {
console.log(`root layout.ts: The account_id was not found in API response!!!`);
return false;
}
// console.log(ae_loc_init);
// if (browser) {

View File

@@ -530,8 +530,16 @@ function send_init_confirm_email({to_email}) {
bind:group={$events_loc.leads.tab[$events_slct.exhibit_id]}
name="tab_manage"
value={'manage'}
disabled={!$ae_loc.administrator_access || !$events_slct.exhibit_obj && (!$events_loc?.leads.auth_exhibit_kv || !$events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id])}
regionTab={!$events_slct.exhibit_obj || !$events_loc?.leads.auth_exhibit_kv || !$events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id] ? 'text-slate-400' : ''}
disabled={
!($ae_loc.administrator_access && $events_slct.exhibit_obj)
&&
!($events_loc?.leads.auth_exhibit_kv && $events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id])
}
regionTab={
!($ae_loc.administrator_access && $events_slct.exhibit_obj)
&&
!($events_loc?.leads.auth_exhibit_kv && $events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id]) ? 'text-slate-400' : ''
}
title="Manage the exhibit settings, licenses, and other."
>
<svelte:fragment slot="lead">

View File

@@ -1,6 +1,8 @@
<script lang="ts">
console.log(`ae_events_leads exhibit [slug] leads_view.svelte`);
import { fade } from 'svelte/transition';
import type { key_val } from '$lib/ae_stores';
import { ae_util } from '$lib/ae_utils';
import { liveQuery } from "dexie";
@@ -11,6 +13,8 @@ import { events_func } from '$lib/ae_events_functions';
import Element_ae_crud from '$lib/element_ae_crud.svelte';
let ae_promises: key_val = {}; // Promise<any>;
// These will likely be used for patch/update triggers. Maybe delete?
let ae_triggers: key_val = {};
@@ -29,8 +33,92 @@ $: if ($events_slct.exhibit_tracking_id) {
}
function handle_submit_form_lead_update() {
async function handle_submit_form_lead_update(event) {
console.log('*** handle_submit_form_lead_update() ***');
// Data in
let form_data = new FormData(event.target);
console.log(form_data);
let exhibit_lead_di: key_val = ae_util.extract_prefixed_form_data({prefix: null, form_data: form_data, trim_values: true, bool_tf_str: true, log_lvl: 0});
console.log(`exhibit_lead_di:`, exhibit_lead_di);
// Data out
let exhibit_lead_do: key_val = {};
if (!$events_slct.exhibit_tracking_id) {
console.error(`No exhibit_tracking_id set`);
return false;
}
if (typeof exhibit_lead_di.exhibitor_notes !== 'undefined') {
exhibit_lead_do.exhibitor_notes = exhibit_lead_di.exhibitor_notes;
}
if (typeof exhibit_lead_di.external_person_id !== 'undefined') {
exhibit_lead_do.external_person_id = exhibit_lead_di.external_person_id;
}
let temp_questions = $events_slct.exhibit_tracking_obj.responses_json;
for (const [key, value] of Object.entries(exhibit_lead_di)) {
console.log(`${key}: ${value}`);
if (key.startsWith('event_lead__leads_custom_question_')) {
let code = key.replace('event_lead__leads_custom_question_', '');
console.log(`Custom Question: ${code} = ${value}`);
temp_questions[code] = {response: value};
} else {
// exhibit_lead_do[key] = value;
}
}
console.log(temp_questions);
if (temp_questions) {
exhibit_lead_do.responses_json = temp_questions
// exhibit_lead_do.responses_json = JSON.stringify(temp_questions);
}
ae_promises.update__exhibit_tracking_obj = events_func.handle_update_ae_obj__exhibit_tracking({
api_cfg: $ae_api,
exhibit_tracking_id: $events_slct.exhibit_tracking_id,
data: exhibit_lead_do
})
.then(function (update__exhibit_tracking_obj) {
console.log(`update__exhibit_tracking_obj=`, update__exhibit_tracking_obj);
if (update__exhibit_tracking_obj) {
$events_slct.exhibit_tracking_obj = update__exhibit_tracking_obj;
// $slct_trigger = 'load__exhibit_tracking_obj';
$events_sess.leads.submit_status = 'updated';
} else {
console.log('No results returned.');
$events_sess.leads.submit_status = 'updated_unknown';
console.log('Trigger a reload of the object.');
// $slct_trigger = 'load__exhibit_tracking_obj';
}
$events_sess.leads.disable_submit__exhibit_tracking_obj = false;
$events_sess.leads.lead_data_changed = false;
});
console.log(ae_promises.update__exhibit_tracking_obj);
// if (ae_promises.update__exhibit_tracking_obj.event_exhibit_tracking_id_random) {
// console.log('Event exhibit_tracking_id_random found was found. It was updated.');
// $events_slct.exhibit_tracking_obj = ae_promises.update__exhibit_tracking_obj;
// // $slct_trigger = 'load__exhibit_tracking_obj';
// $events_sess.leads.submit_status = 'updated';
// } else {
// console.log('No event_exhibit_tracking_id_random found was found. Something may have gone wrong.');
// $events_sess.leads.submit_status = 'updated_unknown';
// console.log('Trigger a reload of the object.');
// // $slct_trigger = 'load__exhibit_tracking_obj';
// }
// $events_sess.leads.disable_submit__exhibit_tracking_obj = false;
// $events_sess.leads.lead_data_changed = false;
}
@@ -66,6 +154,42 @@ function handle_submit_form_lead_update() {
</span>
</h2>
{#if $events_sess.leads.lead_data_changed}
<button
type="submit"
form="form__lead_update"
class="btn variant-ghost-error"
on:click={() => {
$events_sess.leads.lead_data_changed = false;
}}
>
<span class="fas fa-exclamation-triangle mx-1"></span>
Save Changes?
</button>
{/if}
{#await ae_promises.update__exhibit_tracking_obj}
<div class="modal-loading" out:fade={{ duration: 500 }}>
<span class="fas fa-spinner fa-spin"></span>
<span class="loading-text">
<!-- <ProgressRadial value={undefined} /> -->
Saving...
</span>
</div>
{:then update__exhibit_tracking_obj}
<!-- {#if update__exhibit_tracking_obj} -->
<div class="modal-loading">
<span class="fas fa-check-circle"></span>
<span class="loading-text">Successfully saved!</span>
</div>
<!-- {/if} -->
{:catch error}
<div class="modal-loading">
<span class="fas fa-exclamation-triangle"></span>
<span class="loading-text">Error: {error.message}</span>
</div>
{/await}
<div class="popover__actions">
<button
type="button"
@@ -84,16 +208,24 @@ function handle_submit_form_lead_update() {
<section class="popover__content grow flex flex-col gap-4 items-center ae_modal_scrollfix">
<div class="readonly_values">
<div class="email">
<div class="email ae_obj_prop">
<span class="label">Email:</span>
<span class="value">
<a href="mailto:{$event_exhibit_tracking_obj?.event_badge_email}">{$event_exhibit_tracking_obj?.event_badge_given_name} {$event_exhibit_tracking_obj?.event_badge_family_name} &lt;{$event_exhibit_tracking_obj?.event_badge_email}&gt; </a>
<a
href="mailto:{$event_exhibit_tracking_obj?.event_badge_email}"
class="font-medium text-blue-600 dark:text-blue-500 hover:underline"
>
<!-- {$event_exhibit_tracking_obj?.event_badge_given_name} {$event_exhibit_tracking_obj?.event_badge_family_name} -->
<!-- &lt; -->
{$event_exhibit_tracking_obj?.event_badge_email}
<!-- &gt; -->
</a>
</span>
</div>
{#if $event_exhibit_tracking_obj?.event_badge_professional_title || $event_exhibit_tracking_obj?.event_badge_professional_title_override}
<div class="professional_title">
<span class="label" title="Professional Title/Degrees/Credentials">Title/Degrees/Credentials:</span>
<div class="professional_title ae_obj_prop">
<span class="label" title="Professional Title/Degrees/Credentials">Titles <span class="text-sm">(degrees, credentials)</span>:</span>
<span class="value">
{#if $event_exhibit_tracking_obj?.event_badge_professional_title_override}
{@html $event_exhibit_tracking_obj?.event_badge_professional_title_override}
@@ -105,7 +237,7 @@ function handle_submit_form_lead_update() {
{/if}
{#if $event_exhibit_tracking_obj?.event_badge_affiliations || $event_exhibit_tracking_obj?.event_badge_affiliations_override}
<div class="affiliations">
<div class="affiliations ae_obj_prop">
<span class="label">Affiliations:</span>
<span class="value">
{#if $event_exhibit_tracking_obj?.event_badge_affiliations_override}
@@ -118,7 +250,7 @@ function handle_submit_form_lead_update() {
{/if}
{#if $event_exhibit_tracking_obj?.event_badge_country}
<div class="location">
<div class="location ae_obj_prop">
<span class="label">Location:</span>
<span class="value">
<!-- <span class="city">{$event_exhibit_tracking_obj?.event_badge_city}</span> -->
@@ -283,6 +415,9 @@ function handle_submit_form_lead_update() {
rows="10"
placeholder="Staff notes"
class="textarea my-1"
on:change={() => {
$events_sess.leads.lead_data_changed = true;
}}
>{$event_exhibit_tracking_obj?.exhibitor_notes}</textarea>
</label>
</div>
@@ -302,9 +437,24 @@ function handle_submit_form_lead_update() {
<div>
<span class="leads_custom_question">{leads_custom_question.question}</span>
{#if (leads_custom_question.type == 'text')}
<input name="event_lead__leads_custom_question_{leads_custom_question.code}" value={($event_exhibit_tracking_obj?.responses_json && $event_exhibit_tracking_obj?.responses_json[leads_custom_question.code]) ? $event_exhibit_tracking_obj?.responses_json[leads_custom_question.code].response : null} placeholder="Response" class="leads_custom_question_response input" />
<input
name="event_lead__leads_custom_question_{leads_custom_question.code}"
value={($event_exhibit_tracking_obj?.responses_json && $event_exhibit_tracking_obj?.responses_json[leads_custom_question.code]) ? $event_exhibit_tracking_obj?.responses_json[leads_custom_question.code].response : null}
placeholder="Response"
class="leads_custom_question_response input"
on:change={() => {
$events_sess.leads.lead_data_changed = true;
}}
/>
{:else if (leads_custom_question.type == 'option' && leads_custom_question.option_li)}
<select name="event_lead__leads_custom_question_{leads_custom_question.code}" class="leads_custom_question_response select" value={($event_exhibit_tracking_obj?.responses_json && $event_exhibit_tracking_obj?.responses_json[leads_custom_question.code]) ? $event_exhibit_tracking_obj?.responses_json[leads_custom_question.code].response : null}>
<select
name="event_lead__leads_custom_question_{leads_custom_question.code}"
class="leads_custom_question_response select"
value={($event_exhibit_tracking_obj?.responses_json && $event_exhibit_tracking_obj?.responses_json[leads_custom_question.code]) ? $event_exhibit_tracking_obj?.responses_json[leads_custom_question.code].response : null}
on:change={() => {
$events_sess.leads.lead_data_changed = true;
}}
>
{#each leads_custom_question.option_li as option }
<option value="{option}">{option}</option>
{/each}
@@ -332,7 +482,7 @@ function handle_submit_form_lead_update() {
type="text"
name="external_person_id"
placeholder="Linked to email"
value={$event_exhibit_tracking_obj?.external_person_id}
value={$event_exhibit_tracking_obj?.external_person_id ?? $events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id].key}
required
class="input max-w-64 m-1"
/>
@@ -353,17 +503,42 @@ function handle_submit_form_lead_update() {
<footer class="popover__footer flex gap-1 justify-between items-center p-1 border-t">
<div class="popover__content__actions">
<button
type="submit"
form="form__update_lead"
class="btn variant-ghost-primary"
on:click={() => {
// trigger = 'save__ds__code';
// $slct_trigger = 'save__ds__code';
}}
>
<span class="fas fa-save mx-1"></span>
Save
type="submit"
form="form__lead_update"
disabled={($events_sess.leads.disable_submit__exhibit_tracking_obj)}
on:click={() => {
// trigger = 'save__ds__code';
// $slct_trigger = 'save__ds__code';
}}
class="btn variant-ghost-primary"
class:variant-ghost-error={$events_sess.leads.lead_data_changed}
>
<span class="fas fa-save mx-1"></span>
Save
{#if $events_sess.leads.lead_data_changed}
Changes?
{/if}
{#await ae_promises.update__exhibit_tracking_obj}
<div class="modal-loading" out:fade={{ duration: 500 }}>
<span class="fas fa-spinner fa-spin"></span>
<span class="loading-text">
<!-- <ProgressRadial value={undefined} /> -->
Saving...
</span>
</div>
{:then update__exhibit_tracking_obj}
{#if update__exhibit_tracking_obj}
<div class="modal-loading" out:fade={{ duration: 1500 }}>
<span class="fas fa-check-circle"></span>
<!-- <span class="loading-text">Successfully saved!</span> -->
</div>
{/if}
{:catch error}
<div class="modal-loading">
<span class="fas fa-exclamation-triangle"></span>
<span class="loading-text">Error: {error.message}</span>
</div>
{/await}
</button>
<Element_ae_crud

View File

@@ -260,7 +260,7 @@ async function handle_submit_form(event) {
console.log(form_data);
let sponsorship_di: key_val = ae_util.extract_prefixed_form_data({prefix: null, form_data: form_data, trim_values: true, bool_tf_str: true, log_lvl: 0});
console.log(sponsorship_di);
console.log(`sponsorship_di:`, sponsorship_di);
// Data out
let sponsorship_do: key_val = {};