feat: Migrate ESLint to flat config and resolve initial linting errors

Migrated the ESLint configuration to the new flat config format ()
and addressed several initial linting errors.

Key changes include:
- Updated ESLint configuration to treat  as warnings instead of errors.
- Fixed  errors in  by declaring  and .
- Corrected  error in  by using  instead of an out-of-scope .
- Resolved  error in  by replacing the undefined  directive with the  component.
- Addressed  errors in  by replacing  with  and  with .
- Fixed  errors in  by importing necessary modules (, , ) and adding missing props (, , , , ).
This commit is contained in:
Scott Idem
2025-11-17 18:46:54 -05:00
parent b99e85f1db
commit 7e1eaba3bc
374 changed files with 95654 additions and 93952 deletions

View File

@@ -1,53 +1,49 @@
<script lang="ts">
/** @type {import('./$types').LayoutData} */
export let data: any;
/** @type {import('./$types').LayoutData} */
export let data: any;
import { goto } from '$app/navigation';
import { onMount } from 'svelte';
import { goto } from '$app/navigation';
import { onMount } from 'svelte';
// import type { key_val } from '$lib/ae_stores';
// import { ae_util } from '$lib/ae_utils/ae_utils';
import { ae_loc, ae_sess, ae_api, slct, slct_trigger } from '$lib/stores/ae_stores';
import { events_loc, events_slct, events_trigger } from '$lib/stores/ae_events_stores';
// import type { key_val } from '$lib/ae_stores';
// import { ae_util } from '$lib/ae_utils/ae_utils';
import { ae_loc, ae_sess, ae_api, slct, slct_trigger } from '$lib/stores/ae_stores';
import { events_loc, events_slct, events_trigger } from '$lib/stores/ae_events_stores';
$events_loc.qry__enabled = 'enabled';
$events_loc.qry__hidden = 'not_hidden';
$events_loc.qry__limit = 25;
$events_loc.qry__offset = 0;
$events_loc.qry__enabled = 'enabled';
$events_loc.qry__hidden = 'not_hidden';
$events_loc.qry__limit = 25;
$events_loc.qry__offset = 0;
// Quickly save the data passed from the parent(s) to the Svelte stores, localStorage, and other.
$slct.account_id = data.account_id;
console.log(`$slct.account_id = `, $slct.account_id);
let ae_acct = data[$slct.account_id];
console.log(`ae_acct = `, ae_acct);
// Quickly save the data passed from the parent(s) to the Svelte stores, localStorage, and other.
$slct.account_id = data.account_id;
console.log(`$slct.account_id = `, $slct.account_id);
let ae_acct = data[$slct.account_id];
console.log(`ae_acct = `, ae_acct);
$events_slct.event_id = ae_acct.slct.event_id;
$events_slct.event_obj = ae_acct.slct.event_obj;
$events_slct.exhibit_obj_li = ae_acct.slct.event_exhibit_obj_li;
$events_slct.event_id = ae_acct.slct.event_id;
$events_slct.event_obj = ae_acct.slct.event_obj;
$events_slct.exhibit_obj_li = ae_acct.slct.event_exhibit_obj_li;
onMount(() => {
console.log('Events Leads: +layout.svelte');
// let href_url = window.location.href;
// $ae_loc.href_url = href_url;
// console.log(`$ae_loc.href_url = `, $ae_loc.href_url);
onMount(() => {
console.log('Events Leads: +layout.svelte');
// let href_url = window.location.href;
// $ae_loc.href_url = href_url;
// console.log(`$ae_loc.href_url = `, $ae_loc.href_url);
// $slct_trigger = 'msg_parent';
// ae_util.handle_url_and_message('event_id', $events_slct.event_id);
// ae_util.handle_url_and_message('exhibit_id', $events_slct.exhibit_id);
// if ($events_slct.exhibit_id) {
// console.log(`Got an ID. Let's do something!?`);
// modalStore.trigger(modal_view__exhibit_obj);
// }
});
// $slct_trigger = 'msg_parent';
// ae_util.handle_url_and_message('event_id', $events_slct.event_id);
// ae_util.handle_url_and_message('exhibit_id', $events_slct.exhibit_id);
// if ($events_slct.exhibit_id) {
// console.log(`Got an ID. Let's do something!?`);
// modalStore.trigger(modal_view__exhibit_obj);
// }
});
</script>
<svelte:head>
<title>Events Leads - {$events_loc.title ?? 'Æ loading...'}</title>
</svelte:head>
<slot></slot>

View File

@@ -3,39 +3,45 @@ console.log(`ae_events_leads +layout.ts start`);
import { events_func } from '$lib/ae_events_functions';
export async function load({ parent }) {
const data = await parent();
let data = await parent();
const account_id = data.account_id;
const ae_acct = data[account_id];
console.log(`ae_acct = `, ae_acct);
let account_id = data.account_id;
let ae_acct = data[account_id];
console.log(`ae_acct = `, ae_acct);
if (!account_id) {
console.log(`events_leads +layout.ts: The account_id was not found in the data!!!`);
return false;
}
if (!account_id) {
console.log(`events_leads +layout.ts: The account_id was not found in the data!!!`);
return false;
}
const event_id = ae_acct.slct.event_id;
if (!event_id) {
console.log(`events_leads +layout.ts: The event_id was not found in the data!!!`);
return false;
}
let event_id = ae_acct.slct.event_id;
if (!event_id) {
console.log(`events_leads +layout.ts: The event_id was not found in the data!!!`);
return false;
}
const load_event_obj = events_func.load_ae_obj_id__event({
api_cfg: ae_acct.api,
event_id: event_id,
try_cache: true
});
let load_event_obj = events_func.load_ae_obj_id__event({api_cfg: ae_acct.api, event_id: event_id, try_cache: true});
ae_acct.slct.event_obj = load_event_obj;
ae_acct.slct.event_obj = load_event_obj;
const load_event_exhibit_obj_li = events_func.handle_load_ae_obj_li__exhibit({
api_cfg: ae_acct.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: ae_acct.api, event_id: event_id, try_cache: false});
console.log(`load_event_exhibit_obj_li = `, load_event_exhibit_obj_li);
ae_acct.slct.event_exhibit_obj_li = load_event_exhibit_obj_li;
ae_acct.slct.event_exhibit_obj_li = load_event_exhibit_obj_li;
// WARNING: Precaution against shared data between sites and sessions.
data[account_id] = ae_acct;
// WARNING: Precaution against shared data between sites and sessions.
data[account_id] = ae_acct;
return data;
return data;
}
// export const prerender = false;

View File

@@ -1,180 +1,194 @@
<script lang="ts">
// 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'));
// 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'));
import { onMount } from 'svelte';
import { goto, invalidate, pushState, replaceState } from '$app/navigation';
import { onMount } from 'svelte';
import { goto, invalidate, pushState, replaceState } from '$app/navigation';
import { ae_util } from '$lib/ae_utils/ae_utils';
import { api } from '$lib/api/api';
import { liveQuery } from "dexie";
import { db_events } from "$lib/ae_events/db_events";
import { ae_loc, ae_sess, ae_api, slct, slct_trigger } from '$lib/stores/ae_stores';
import { events_loc, events_sess, events_slct, events_trigger } from '$lib/stores/ae_events_stores';
import { ae_util } from '$lib/ae_utils/ae_utils';
import { api } from '$lib/api/api';
import { liveQuery } from 'dexie';
import { db_events } from '$lib/ae_events/db_events';
import { ae_loc, ae_sess, ae_api, slct, slct_trigger } from '$lib/stores/ae_stores';
import {
events_loc,
events_sess,
events_slct,
events_trigger
} from '$lib/stores/ae_events_stores';
import Element_data_store from '$lib/elements/element_data_store_v2.svelte';
import Element_data_store from '$lib/elements/element_data_store_v2.svelte';
let event_exhibit_obj_li = liveQuery(
// () => db_events.exhibit.toArray()
() =>
db_events.exhibit
.where('license_max')
// .aboveOrEqual(0)
// .equals('99999')
.above(0)
.sortBy('name') // Use sortBy() instead of orderBy(). toArray() is also not needed???
// .sortBy('[priority+name]')
// .orderBy('name')
// .offset(10).limit(5)
// .toArray()
);
let event_exhibit_obj_li = liveQuery(
// () => db_events.exhibit.toArray()
() => db_events.exhibit
.where('license_max')
// .aboveOrEqual(0)
// .equals('99999')
.above(0)
.sortBy('name') // Use sortBy() instead of orderBy(). toArray() is also not needed???
// .sortBy('[priority+name]')
// .orderBy('name')
// .offset(10).limit(5)
// .toArray()
);
$events_slct.exhibit_id = null;
$events_slct.exhibit_obj = null;
$events_slct.exhibit_id = null;
$events_slct.exhibit_obj = null;
// export let event_exhibit_staff_passcode: string = '';
let disable_open_lead_retrieval_btn: boolean = true;
let disable_reset_passcode_btn: boolean = true;
let reset_passcode: string = '';
// export let event_exhibit_staff_passcode: string = '';
let disable_open_lead_retrieval_btn: boolean = true;
let disable_reset_passcode_btn: boolean = true;
let reset_passcode: string = '';
onMount(() => {
console.log('Events Leads: +page.svelte');
// console.log('ae_ slct:', $slct);
onMount(() => {
console.log('Events Leads: +page.svelte');
let href_url = window.location.href;
$ae_loc.href_url = href_url;
// console.log(`$ae_loc.href_url = `, $ae_loc.href_url);
// console.log('ae_ slct:', $slct);
// $slct_trigger = 'msg_parent';
// ae_util.handle_url_and_message('event_id', $events_slct.event_id);
// ae_util.handle_url_and_message('exhibit_id', $events_slct.exhibit_id);
// if ($events_slct.exhibit_id) {
// console.log(`Got an ID. Let's do something!?`);
// modalStore.trigger(modal_view__exhibit_obj);
// }
});
let href_url = window.location.href;
$ae_loc.href_url = href_url;
// console.log(`$ae_loc.href_url = `, $ae_loc.href_url);
$: if (
$events_slct.exhibit_obj &&
$events_slct.exhibit_obj.event_exhibit_id_random &&
($ae_loc.administrator_access ||
($events_loc.leads.auth_exhibit_kv &&
$events_slct.exhibit_obj &&
$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;
// $slct_trigger = 'msg_parent';
// ae_util.handle_url_and_message('event_id', $events_slct.event_id);
// ae_util.handle_url_and_message('exhibit_id', $events_slct.exhibit_id);
// if ($events_slct.exhibit_id) {
// console.log(`Got an ID. Let's do something!?`);
// modalStore.trigger(modal_view__exhibit_obj);
// }
});
$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_slct.exhibit_obj && $events_slct.exhibit_obj.event_exhibit_id_random && ($ae_loc.administrator_access || $events_loc.leads.auth_exhibit_kv && $events_slct.exhibit_obj && $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;
$: 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.
handle_check_event_exhibit_staff_passcode(String($events_sess.leads.entered_passcode));
} else {
disable_open_lead_retrieval_btn = true;
// handle_check_event_exhibit_staff_passcode();
}
$events_sess.leads.open_href = `/events_leads/exhibit/${$events_slct.exhibit_obj.id_random}`;
function handle_check_event_exhibit_staff_passcode(entered_passcode: string) {
console.log(
`*** handle_check_event_exhibit_staff_passcode() *** ${entered_passcode} $events_slct.exhibit_obj=`,
$events_slct.exhibit_obj
);
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;
}
$events_sess.leads.open_href = '';
if ($events_slct.exhibit_obj && entered_passcode && entered_passcode.length >= 4) {
if ($events_slct.exhibit_obj.staff_passcode == entered_passcode) {
console.log(
`Passcode matched for exhibit ${$events_slct.exhibit_obj.id_random} or ${$events_slct.exhibit_id}`
);
disable_open_lead_retrieval_btn = false;
$: 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.
handle_check_event_exhibit_staff_passcode(String($events_sess.leads.entered_passcode));
} else {
disable_open_lead_retrieval_btn = true;
// handle_check_event_exhibit_staff_passcode();
}
// We should not need to be doing this here! Why???
if (!$events_slct.exhibit_id) {
$events_slct.exhibit_id = $events_slct.exhibit_obj.id_random;
}
function handle_check_event_exhibit_staff_passcode(entered_passcode: string) {
console.log(`*** handle_check_event_exhibit_staff_passcode() *** ${entered_passcode} $events_slct.exhibit_obj=`, $events_slct.exhibit_obj);
$events_sess.leads.entered_passcode = null;
$events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id] = {
key: null,
updated_on: new Date().toISOString()
};
$events_sess.leads.open_href = '';
// console.log($events_slct);
$events_sess.leads.open_href = `/events_leads/exhibit/${$events_slct.exhibit_obj.id_random}?event_id=${$events_slct.event_id}`;
if ($events_slct.exhibit_obj && entered_passcode && entered_passcode.length >= 4) {
if ($events_slct.exhibit_obj.staff_passcode == entered_passcode) {
console.log(`Passcode matched for exhibit ${$events_slct.exhibit_obj.id_random} or ${$events_slct.exhibit_id}`);
disable_open_lead_retrieval_btn = false;
if ($events_loc.leads.auto_view) {
goto($events_sess.leads.open_href, { invalidateAll: true });
}
} else {
// console.log('Passcode does not match');
disable_open_lead_retrieval_btn = true;
return false;
}
} else {
console.log('Missing selected event exhibit and or staff passcode.');
disable_open_lead_retrieval_btn = true;
return null;
}
// We should not need to be doing this here! Why???
if (!$events_slct.exhibit_id) {
$events_slct.exhibit_id = $events_slct.exhibit_obj.id_random;
}
if ($events_loc.leads.auto_view) {
// open_exhibit_tracking($events_slct.exhibit_obj.id_random)
} else {
// console.log(document.getElementById('open_lead_retrieval_btn'));
// document.getElementById('open_lead_retrieval_btn').focus();
}
}
$events_sess.leads.entered_passcode = null;
$events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id] = {
key: null,
updated_on: new Date().toISOString()
};
function handle_update_event_exhibit_staff_passcode(exhibit_id, reset_passcode) {
console.log(
`*** handle_update_event_exhibit_staff_passcode() *** $events_slct.exhibit_id= ${exhibit_id} new passcode: ${reset_passcode}`
);
// console.log($events_slct);
$events_sess.leads.open_href = `/events_leads/exhibit/${$events_slct.exhibit_obj.id_random}?event_id=${$events_slct.event_id}`;
if ($events_loc.leads.auto_view) {
goto($events_sess.leads.open_href, {invalidateAll: true});
}
} else {
// console.log('Passcode does not match');
disable_open_lead_retrieval_btn = true;
return false;
}
} else {
console.log('Missing selected event exhibit and or staff passcode.');
disable_open_lead_retrieval_btn = true;
return null;
}
if ($events_loc.leads.auto_view) {
// open_exhibit_tracking($events_slct.exhibit_obj.id_random)
} else {
// console.log(document.getElementById('open_lead_retrieval_btn'));
// document.getElementById('open_lead_retrieval_btn').focus();
}
}
function handle_update_event_exhibit_staff_passcode(exhibit_id, reset_passcode) {
console.log(`*** handle_update_event_exhibit_staff_passcode() *** $events_slct.exhibit_id= ${exhibit_id} new passcode: ${reset_passcode}`);
// if ($events_slct.exhibit_obj && reset_passcode && reset_passcode.length >= 4) {
// $events_slct.exhibit_obj.staff_passcode = reset_passcode;
// $events_sess.leads.entered_passcode = reset_passcode;
// db_events.exhibit.update($events_slct.exhibit_obj.id_random, { staff_passcode: reset_passcode })
// .then(function (updated) {
// console.log(`Updated passcode for exhibit ${$events_slct.exhibit_obj.id_random} or ${$events_slct.exhibit_id}`);
// disable_open_lead_retrieval_btn = false;
// disable_reset_passcode_btn = false;
// })
// .catch(function (error: any) {
// console.log('Failed to update passcode.', error);
// disable_open_lead_retrieval_btn = true;
// disable_reset_passcode_btn = true;
// });
// } else {
// console.log('Missing selected event exhibit and or staff passcode.');
// disable_open_lead_retrieval_btn = true;
// disable_reset_passcode_btn = true;
// }
}
// if ($events_slct.exhibit_obj && reset_passcode && reset_passcode.length >= 4) {
// $events_slct.exhibit_obj.staff_passcode = reset_passcode;
// $events_sess.leads.entered_passcode = reset_passcode;
// db_events.exhibit.update($events_slct.exhibit_obj.id_random, { staff_passcode: reset_passcode })
// .then(function (updated) {
// console.log(`Updated passcode for exhibit ${$events_slct.exhibit_obj.id_random} or ${$events_slct.exhibit_id}`);
// disable_open_lead_retrieval_btn = false;
// disable_reset_passcode_btn = false;
// })
// .catch(function (error: any) {
// console.log('Failed to update passcode.', error);
// disable_open_lead_retrieval_btn = true;
// disable_reset_passcode_btn = true;
// });
// } else {
// console.log('Missing selected event exhibit and or staff passcode.');
// disable_open_lead_retrieval_btn = true;
// disable_reset_passcode_btn = true;
// }
}
</script>
<section
class="ae_events_leads h-full w-full flex flex-col wrap align-begin justify-start items-center space-y-4"
>
<h1 class="h2">Events - Leads for exhibitors</h1>
<section class="ae_events_leads h-full w-full flex flex-col wrap align-begin justify-start items-center space-y-4">
<Element_data_store
ds_code="events__leads__overview"
ds_type="html"
for_type="event"
for_id={$events_slct.event_id}
display="block"
class_li="preset-tonal-secondary border border-secondary-500 p-2"
/>
<h1 class="h2">Events - Leads for exhibitors</h1>
<!-- <a href="/{$events_slct.event_id}">Event ID {$events_slct.event_id}</a> -->
<Element_data_store
ds_code="events__leads__overview"
ds_type="html"
for_type="event"
for_id={$events_slct.event_id}
display="block"
class_li="preset-tonal-secondary border border-secondary-500 p-2"
/>
<!-- <a href="/{$events_slct.event_id}">Event ID {$events_slct.event_id}</a> -->
{#if $event_exhibit_obj_li}
<h2 class="h3">Select your exhibit from the list</h2>
<!-- <ul>
{#if $event_exhibit_obj_li}
<h2 class="h3">Select your exhibit from the list</h2>
<!-- <ul>
{#each $event_exhibit_obj_li as exhibit_obj}
<li>
<a href="/events_leads/exhibit/{exhibit_obj.id_random}">{exhibit_obj.name} ID {exhibit_obj.id_random}</a>
@@ -182,90 +196,95 @@ function handle_update_event_exhibit_staff_passcode(exhibit_id, reset_passcode)
{/each}
</ul> -->
<div class="event_exhibit_tracking_select_exhibit space-y-6">
<form
on:submit|preventDefault={() => {
$events_sess.leads.open_href = `/events_leads/exhibit/${$events_slct.exhibit_obj.id_random}?event_id=${$events_slct.event_id}`;
goto($events_sess.leads.open_href, { invalidateAll: true });
}}
class="flex flex-col items-center border border-slate-500/10 p-2"
>
<!-- <h2>Exhibitor Lead Retrieval</h2> -->
<!-- <div class="">Select your exhibit booth from the list and enter passcode you were given. If it is correct you will be taken to the page for your exhibit.</div> -->
<div class="m-2">
Select your exhibit booth from the list and enter passcode you were given. If it is
correct you will be taken to the page for your exhibit.
</div>
<div class="event_exhibit_tracking_select_exhibit space-y-6">
<form
on:submit|preventDefault={() => {
$events_sess.leads.open_href = `/events_leads/exhibit/${$events_slct.exhibit_obj.id_random}?event_id=${$events_slct.event_id}`;
goto($events_sess.leads.open_href, {invalidateAll: true});
}}
<div class="m-2">
<label for="exhibit_list" class="label">
<!-- <span class="label">Exhibit List:</span> -->
class="flex flex-col items-center border border-slate-500/10 p-2">
<!-- <h2>Exhibitor Lead Retrieval</h2> -->
<!-- <div class="">Select your exhibit booth from the list and enter passcode you were given. If it is correct you will be taken to the page for your exhibit.</div> -->
<div class="m-2">Select your exhibit booth from the list and enter passcode you were given. If it is correct you will be taken to the page for your exhibit.</div>
<select
id="exhibit_list"
bind:value={$events_slct.exhibit_obj}
class="select w-96"
placeholder="Select your exhibit booth"
>
<option value="" selected>-- Nothing Selected --</option>
{#each $event_exhibit_obj_li as event_exhibit_obj, index}
<option value={event_exhibit_obj}
>{event_exhibit_obj.name} (Booth #{event_exhibit_obj.code})</option
>
{/each}
</select>
</label>
</div>
<div class="m-2">
<label for="exhibit_list" class="label">
<!-- <span class="label">Exhibit List:</span> -->
<div class="container_group m-2">
<input
type="number"
bind:value={$events_sess.leads.entered_passcode}
class="input w-44 m-1"
placeholder="Exhibit passcode"
/>
<select
id="exhibit_list"
bind:value={$events_slct.exhibit_obj}
class="select w-96"
placeholder="Select your exhibit booth"
>
<option value="" selected>-- Nothing Selected --</option>
{#each $event_exhibit_obj_li as event_exhibit_obj, index}
<option value={event_exhibit_obj}>{event_exhibit_obj.name} (Booth #{event_exhibit_obj.code})</option>
{/each}
</select>
<button
type="submit"
disabled={disable_open_lead_retrieval_btn}
class="btn preset-tonal-primary border border-primary-500 m-1 open_lead_retrieval_btn"
>
<span class="fas fa-arrow-right mx-1"></span> Open Exhibitor Lead Retrieval
</button>
</label>
</div>
<div class="container_group m-2">
<input
type="number"
bind:value={$events_sess.leads.entered_passcode}
class="input w-44 m-1"
placeholder="Exhibit passcode"
/>
<button
type="submit"
disabled={disable_open_lead_retrieval_btn}
class="btn preset-tonal-primary border border-primary-500 m-1 open_lead_retrieval_btn"
>
<span class="fas fa-arrow-right mx-1"></span> Open Exhibitor Lead Retrieval
</button>
<!-- <a
<!-- <a
on:click|preventDefault={() => goto($events_sess.leads.open_href, {invalidateAll: true})}
href={$events_sess.leads.open_href}
>
Open Exhibitor Lead Retrieval
</a> -->
</div>
</form>
</div>
</form>
{#if ($ae_loc.administrator_access && !$events_loc.show_details)}
<div class="flex flex-col items-center">
{#if $ae_loc.administrator_access && !$events_loc.show_details}
<div class="flex flex-col items-center">
<span>
<input
bind:value={reset_passcode}
placeholder="Reset passcode"
title="Reset exhibit passcode"
class="input max-w-40"
/>
<span>
<input bind:value={reset_passcode} placeholder="Reset passcode" title="Reset exhibit passcode" class="input max-w-40" />
<button
type="button"
disabled={disable_reset_passcode_btn}
on:click={() => {
handle_update_event_exhibit_staff_passcode(
$events_slct.exhibit_obj.event_exhibit_id_random,
reset_passcode
);
}}
class="btn preset-tonal-warning border border-warning-500 reset_passcode_btn"
>
<span class="fas fa-undo mx-1"></span> Reset Passcode
</button>
</span>
</div>
{/if}
</div>
<button
type="button"
disabled={disable_reset_passcode_btn}
on:click={() => {
handle_update_event_exhibit_staff_passcode(exhibit_obj.event_exhibit_id_random, reset_passcode);
}}
class="btn preset-tonal-warning border border-warning-500 reset_passcode_btn"
>
<span class="fas fa-undo mx-1"></span> Reset Passcode
</button>
</span>
</div>
{/if}
</div>
<!-- <button
<!-- <button
type="button"
on:click={() => {
console.log(`Goto Button Clicked`);
@@ -276,11 +295,9 @@ class="btn variant-filled-secondary"
>
Test Goto Button
</button> -->
{/if}
{/if}
<!-- <Element_data_store
<!-- <Element_data_store
ds_code="events__leads__example"
ds_type="html"
for_type="event"
@@ -292,9 +309,7 @@ Test Goto Button
try_cache={true}
show_edit={false}
/> -->
</section>
<style lang="postcss">
</style>

View File

@@ -3,38 +3,51 @@ console.log(`ae_events_leads +page.ts start`);
import { events_func } from '$lib/ae_events_functions';
export async function load({ params, parent, url }) { // route
export async function load({ params, parent, url }) {
// route
let data = parent();
// console.log(`ae_events_leads +page.ts data:`, data);
const data = 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;
// }
// 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_page_ts = true;
data.ae_events_leads_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
const 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:
// Do not wait on these:
// let load_event_obj = events_func.handle_load_ae_obj_id__event({api_cfg: data.ae_api, event_id: event_id, try_cache: true});
// console.log(`load_event_obj = `, load_event_obj);
// let load_event_obj = events_func.handle_load_ae_obj_id__event({api_cfg: data.ae_api, event_id: event_id, try_cache: true});
// 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 = 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);
// let exhibit_id = 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);
return data;
return data;
}

File diff suppressed because it is too large Load Diff

View File

@@ -3,47 +3,56 @@ console.log(`ae_events_leads [slug] +page.ts start`);
import { events_func } from '$lib/ae_events_functions';
export async function load({ params, parent }) { // route
let log_lvl: number = 0;
export async function load({ params, parent }) {
// route
const log_lvl: number = 0;
let data = await parent();
// console.log(`ae_events_leads exhibit [slug] +page.ts data:`, data);
const data = await parent();
// console.log(`ae_events_leads exhibit [slug] +page.ts data:`, data);
let account_id = data.account_id;
let ae_acct = data[account_id];
console.log(`ae_acct = `, ae_acct);
const account_id = data.account_id;
const ae_acct = data[account_id];
console.log(`ae_acct = `, ae_acct);
if (!account_id) {
console.log(`events_leads exhibit [slug] +page.ts: The account_id was not found in the data!!!`);
return false;
}
if (!account_id) {
console.log(
`events_leads exhibit [slug] +page.ts: The account_id was not found in the data!!!`
);
return false;
}
data.ae_events_leads_exhibit_slug_page_ts = true;
data.ae_events_leads_exhibit_slug_page_ts = true;
let event_exhibit_id = params.slug;
if (!event_exhibit_id) {
console.log(`events_leads exhibit [slug] +page.ts: The event_exhibit_id was not found in the params.slug!!!`);
return false;
}
const event_exhibit_id = params.slug;
if (!event_exhibit_id) {
console.log(
`events_leads exhibit [slug] +page.ts: The event_exhibit_id was not found in the params.slug!!!`
);
return false;
}
ae_acct.slct.event_exhibit_id = event_exhibit_id;
ae_acct.slct.event_exhibit_id = event_exhibit_id;
let load_event_exhibit_obj = events_func.handle_load_ae_obj_id__exhibit({api_cfg: ae_acct.api, exhibit_id: event_exhibit_id, try_cache: false});
const load_event_exhibit_obj = events_func.handle_load_ae_obj_id__exhibit({
api_cfg: ae_acct.api,
exhibit_id: event_exhibit_id,
try_cache: false
});
ae_acct.slct.event_exhibit_obj = await load_event_exhibit_obj;
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,
params: {enabled: 'all', qry__limit: 550},
try_cache: false
});
console.log(`load_event_exhibit_tracking_obj_li = `, load_event_exhibit_tracking_obj_li);
const 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,
params: { enabled: 'all', qry__limit: 550 },
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;
ae_acct.slct.event_exhibit_tracking_obj_li = load_event_exhibit_tracking_obj_li;
// WARNING: Precaution against shared data between sites and sessions.
data[account_id] = ae_acct;
// WARNING: Precaution against shared data between sites and sessions.
data[account_id] = ae_acct;
return data;
return data;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,352 +1,388 @@
<script lang="ts">
// export let data: any;
// console.log(`ae_events_leads exhibit [slug] leads_list.svelte data:`, data);
// export let data: any;
// console.log(`ae_events_leads exhibit [slug] leads_list.svelte data:`, data);
import type { key_val } from '$lib/stores/ae_stores';
// import { ae_util } from '$lib/ae_utils/ae_utils';
import { liveQuery } from "dexie";
import { db_events } from "$lib/ae_events/db_events";
import { ae_loc, ae_sess, ae_api, slct, slct_trigger } from '$lib/stores/ae_stores';
import { events_loc, events_sess, events_slct, events_trigger } from '$lib/stores/ae_events_stores';
import { events_func } from '$lib/ae_events_functions';
import type { key_val } from '$lib/stores/ae_stores';
// import { ae_util } from '$lib/ae_utils/ae_utils';
import { liveQuery } from 'dexie';
import { db_events } from '$lib/ae_events/db_events';
import { ae_loc, ae_sess, ae_api, slct, slct_trigger } from '$lib/stores/ae_stores';
import {
events_loc,
events_sess,
events_slct,
events_trigger
} from '$lib/stores/ae_events_stores';
import { events_func } from '$lib/ae_events_functions';
import Element_ae_crud from '$lib/elements/element_ae_crud.svelte';
import Leads_view_lead from './leads_view_lead.svelte';
import Element_ae_crud from '$lib/elements/element_ae_crud.svelte';
import Leads_view_lead from './leads_view_lead.svelte';
let ae_promises: key_val = {};
let ae_promises: key_val = {};
// These will likely be used for patch/update triggers. Maybe delete?
let ae_triggers: key_val = {
priority: {},
sort: {},
show_hidden: {},
};
// These will likely be used for patch/update triggers. Maybe delete?
let ae_triggers: key_val = {
priority: {},
sort: {},
show_hidden: {}
};
// The lq__ prefix is used to indicate that this is a liveQuery object and it should use the $ prefix when referencing the object.
let lq__event_exhibit_obj = liveQuery(
() => db_events.exhibit.get($events_slct.exhibit_id)
);
// The lq__ prefix is used to indicate that this is a liveQuery object and it should use the $ prefix when referencing the object.
let lq__event_exhibit_obj = liveQuery(() => db_events.exhibit.get($events_slct.exhibit_id));
// let l_event_exhibit_tracking_obj = liveQuery(
// () => db_events.exhibit_tracking.get($events_slct.exhibit_tracking_id)
// );
// let l_event_exhibit_tracking_obj = liveQuery(
// () => db_events.exhibit_tracking.get($events_slct.exhibit_tracking_id)
// );
// Version 1: This is the version that works
// let event_exhibit_tracking_obj_li = liveQuery(
// // () => db_events.exhibit.toArray()
// () => db_events.exhibit_tracking
// // .where('enable')
// // .aboveOrEqual(0)
// // .equals(true)
// .where('event_exhibit_id_random')
// .equals($events_slct.exhibit_id)
// // .above(0)
// .sortBy('created_on')
// // .orderBy('name')
// // .offset(10).limit(5)
// // .toArray()
// );
// Version 1: This is the version that works
// let event_exhibit_tracking_obj_li = liveQuery(
// // () => db_events.exhibit.toArray()
// () => db_events.exhibit_tracking
// // .where('enable')
// // .aboveOrEqual(0)
// // .equals(true)
// .where('event_exhibit_id_random')
// .equals($events_slct.exhibit_id)
// // .above(0)
// .sortBy('created_on')
// // .orderBy('name')
// // .offset(10).limit(5)
// // .toArray()
// );
// Testing examples:
// Use sortBy() instead of orderBy()
// toArray() is also not needed???
// Testing examples:
// Use sortBy() instead of orderBy()
// toArray() is also not needed???
// .where({event_exhibit_id_random: $events_slct.exhibit_id, enable: true, hide: false})
// .where({event_exhibit_id_random: $events_slct.exhibit_id})
// .where('event_exhibit_id_random').equals($events_slct.exhibit_id)
// .and('enable').equals(true)
// .reverse()
// .sortBy('updated_on')
// .reverse()
// .sortBy('created_on')
// .toArray()
// .sortBy('created_on')
// .reverse()
// .sortBy('priority') // , 'sort', 'created_on', 'updated_on')
// .where({event_exhibit_id_random: $events_slct.exhibit_id, enable: true, hide: false})
// .where({event_exhibit_id_random: $events_slct.exhibit_id})
// .where('event_exhibit_id_random').equals($events_slct.exhibit_id)
// .and('enable').equals(true)
// .reverse()
// .sortBy('updated_on')
// .reverse()
// .sortBy('created_on')
// .toArray()
// .sortBy('created_on')
// .reverse()
// .sortBy('priority') // , 'sort', 'created_on', 'updated_on')
// () => db_events.exhibit.toArray()
// () => db_events.exhibit.toArray()
// Version 2: This needs work...
// This is using Dexie JS as a wrapper for IndexedDB
// This should only show exhibit_tracking objects that are enabled and not hidden.
// The final results should be sorted by: priority DESC, sort ASC, created_on DESC, updated_on DESC
let lq__event_exhibit_tracking_obj_li = liveQuery(
() => db_events.exhibit_tracking
.where({event_exhibit_id_random: $events_slct.exhibit_id})
.and((x) => (x.enable == !$events_loc.leads.show_not_enabled))
.sortBy('sort')
// .reverse()
// .sortBy('priority')
// Version 2: This needs work...
// This is using Dexie JS as a wrapper for IndexedDB
// This should only show exhibit_tracking objects that are enabled and not hidden.
// The final results should be sorted by: priority DESC, sort ASC, created_on DESC, updated_on DESC
let lq__event_exhibit_tracking_obj_li = liveQuery(
() =>
db_events.exhibit_tracking
.where({ event_exhibit_id_random: $events_slct.exhibit_id })
.and((x) => x.enable == !$events_loc.leads.show_not_enabled)
.sortBy('sort')
// .reverse()
// .sortBy('priority')
// .orderBy("priority")
// .orderBy("sort")
// .orderBy("created_on", "desc")
// .orderBy("updated_on", "desc")
// .sortBy('priority') // Initial sort
// .thenBy('created_on', 'desc')
// .thenBy('sort') // Secondary sort
// .thenBy('updated_on', 'desc')
);
// .orderBy("priority")
// .orderBy("sort")
// .orderBy("created_on", "desc")
// .orderBy("updated_on", "desc")
// .sortBy('priority') // Initial sort
// .thenBy('created_on', 'desc')
// .thenBy('sort') // Secondary sort
// .thenBy('updated_on', 'desc')
);
// let update_submit_results = null;
// 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);
// 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>
<section class="tab__leads_list flex flex-col wrap justify-center items-center space-y-4">
{#if $events_slct.exhibit_id && $events_slct.exhibit_obj}
<h2 class="h3">
<span class="fas fa-clipboard-list-check"></span>
{$lq__event_exhibit_tracking_obj_li?.length}
Leads for {$lq__event_exhibit_obj?.name}
</h2>
{#if $events_slct.exhibit_id && $events_slct.exhibit_obj}
<h2 class="h3">
<span class="fas fa-clipboard-list-check"></span>
{$lq__event_exhibit_tracking_obj_li?.length}
Leads for {$lq__event_exhibit_obj?.name}
</h2>
<!-- <div class="border border-slate-500/10 p-2 variant-soft-warning">This section is not fully enabled for ISHLT 2024 at this time. You can not add new leads and changes are limited.</div> -->
<!-- <div class="border border-slate-500/10 p-2 variant-soft-warning">This section is not fully enabled for ISHLT 2024 at this time. You can not add new leads and changes are limited.</div> -->
<div class="flex flex-row gap-1">
<!-- {#if $ae_loc.trusted_access} -->
<button
on:click={async () => {
console.log('Show Hidden Leads');
$events_loc.leads.show_hidden = !$events_loc.leads.show_hidden;
<div class="flex flex-row gap-1">
<!-- {#if $ae_loc.trusted_access} -->
console.log('$events_loc.leads.show_hidden:', $events_loc.leads.show_hidden);
}}
class="btn btn-sm preset-tonal"
>
{#if $events_loc.leads.show_hidden}
<span class="fas fa-eye-slash m-1"></span>
Hide Archived?
{:else}
<span class="fas fa-eye m-1"></span>
Show All Leads?
{/if}
</button>
<button
on:click={async () => {
console.log('Show Hidden Leads');
$events_loc.leads.show_hidden = !$events_loc.leads.show_hidden;
<!-- {/if} -->
console.log('$events_loc.leads.show_hidden:', $events_loc.leads.show_hidden);
}}
class="btn btn-sm preset-tonal"
>
{#if $events_loc.leads.show_hidden}
<span class="fas fa-eye-slash m-1"></span>
Hide Archived?
{:else}
<span class="fas fa-eye m-1"></span>
Show All Leads?
{/if}
</button>
{#if $ae_loc.trusted_access}
<button
on:click={async () => {
console.log('Show Enabled Leads');
$events_loc.leads.show_not_enabled = !$events_loc.leads.show_not_enabled;
<!-- {/if} -->
console.log('$events_loc.leads.show_not_enabled:', $events_loc.leads.show_not_enabled);
}}
class="btn btn-sm preset-tonal"
>
<span class="fas fa-eye m-1"></span>
{$events_loc.leads.show_not_enabled ? 'Show Enabled' : 'Show Not Enabled'} Leads?
</button>
{/if}
{#if $ae_loc.trusted_access}
<button
on:click={async () => {
console.log('Show Enabled Leads');
$events_loc.leads.show_not_enabled = !$events_loc.leads.show_not_enabled;
<button
type="button"
on:click={() => {
if (!confirm('Download data exported to an Excel file?')) {
return false;
}
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
});
console.log('$events_loc.leads.show_not_enabled:', $events_loc.leads.show_not_enabled);
}}
class="btn btn-sm preset-tonal"
>
<span class="fas fa-eye m-1"></span>
{$events_loc.leads.show_not_enabled ? 'Show Enabled' : 'Show Not Enabled'} Leads?
</button>
{/if}
<button
type="button"
on:click={() => {
if (!confirm('Download data exported to an Excel file?')) {
return false;
}
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={!$events_slct.exhibit_obj.priority}
class="btn btn-sm preset-tonal-primary border border-primary-500 w-48 mb-1 export_data_btn"
title={`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">
// 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={!$events_slct.exhibit_obj.priority}
class="btn btn-sm preset-tonal-primary border border-primary-500 w-48 mb-1 export_data_btn"
title={`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>
{:then}
<!-- Done? -->
{/await}
<span class="fas fa-download mx-1"></span> Export Data
</button>
</div>
<!-- END: flex flex-row -->
</div> <!-- END: flex flex-row -->
{#if $lq__event_exhibit_tracking_obj_li}
<table class="table table-compact min-w-min">
<thead>
<tr>
<th class="star text-center">Star</th>
<th class="rank text-center">Rank</th>
<th class="person text-center">Person</th>
</tr>
</thead>
<tbody>
{#each $lq__event_exhibit_tracking_obj_li as event_exhibit_tracking_obj, index}
<!-- flex flex-row justify-center items-center m-auto -->
<tr
class:hidden={event_exhibit_tracking_obj.hide && !$events_loc.leads.show_hidden}
class:fade_50={event_exhibit_tracking_obj.hide}
>
<td class="star text-center">
<!-- <span class="star_container flex flex-col justify-center items-center m-auto"> -->
{#if $lq__event_exhibit_tracking_obj_li}
<table class="table table-compact min-w-min">
<thead>
<tr>
<th class="star text-center">Star</th>
<th class="rank text-center">Rank</th>
<th class="person text-center">Person</th>
</tr>
</thead>
<!-- Priority (star) means this should be sorted at the top of lists. -->
<Element_ae_crud
bind:trigger_patch={
ae_triggers.priority[
event_exhibit_tracking_obj?.event_exhibit_tracking_id_random
]
}
api_cfg={$ae_api}
object_type={'event_exhibit_tracking'}
object_id={event_exhibit_tracking_obj?.event_exhibit_tracking_id_random}
field_name={'priority'}
field_type={'button'}
field_value={$events_slct.exhibit_tracking_obj.priority}
allow_null={false}
hide_edit_btn={true}
outline_element={false}
show_crud={false}
display_inline={true}
class_li={'m-1'}
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
});
}}
>
<button
type="button"
on:click={() => {
console.log(
`Updating priority for event_exhibit_tracking_id: ${event_exhibit_tracking_obj?.event_exhibit_tracking_id_random}`
);
<tbody>
$events_slct.exhibit_tracking_id =
event_exhibit_tracking_obj.event_exhibit_tracking_id_random;
$events_slct.exhibit_tracking_obj = event_exhibit_tracking_obj;
{#each $lq__event_exhibit_tracking_obj_li as event_exhibit_tracking_obj, index}
<!-- flex flex-row justify-center items-center m-auto -->
<tr
class:hidden={event_exhibit_tracking_obj.hide && !$events_loc.leads.show_hidden}
class:fade_50={event_exhibit_tracking_obj.hide}
>
<td class="star text-center">
<!-- <span class="star_container flex flex-col justify-center items-center m-auto"> -->
$events_slct.exhibit_tracking_obj.priority =
!$events_slct.exhibit_tracking_obj.priority;
<!-- Priority (star) means this should be sorted at the top of lists. -->
<Element_ae_crud
bind:trigger_patch={ae_triggers.priority[event_exhibit_tracking_obj?.event_exhibit_tracking_id_random]}
api_cfg={$ae_api}
object_type={'event_exhibit_tracking'}
object_id={event_exhibit_tracking_obj?.event_exhibit_tracking_id_random}
field_name={'priority'}
field_type={'button'}
field_value={$events_slct.exhibit_tracking_obj.priority}
allow_null={false}
hide_edit_btn={true}
outline_element={false}
show_crud={false}
display_inline={true}
class_li={'m-1'}
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});
}}
>
<button
type="button"
on:click={() => {
console.log(`Updating priority for event_exhibit_tracking_id: ${event_exhibit_tracking_obj?.event_exhibit_tracking_id_random}`);
ae_triggers.priority[
event_exhibit_tracking_obj?.event_exhibit_tracking_id_random
] = true;
}}
class="btn btn-sm preset-tonal-tertiary"
>
{@html event_exhibit_tracking_obj?.priority
? '<span class="fas fa-star m-1"></span>'
: '<span class="far fa-star"></span>'}
</button>
</Element_ae_crud>
</td>
$events_slct.exhibit_tracking_id = event_exhibit_tracking_obj.event_exhibit_tracking_id_random;
$events_slct.exhibit_tracking_obj = event_exhibit_tracking_obj;
<!-- text-center align-middle -->
<td class="ranking text-center">
<!-- BEGIN: Ranking in table -->
<div
class="ranking_container flex flex-col lg:flex-row justify-stretch items-center"
>
<!-- Sort (ranking) means this should be sorted in the list based on the number. 0 is the top of the list. -->
$events_slct.exhibit_tracking_obj.priority = !$events_slct.exhibit_tracking_obj.priority;
<Element_ae_crud
bind:trigger_patch={
ae_triggers.sort[event_exhibit_tracking_obj?.event_exhibit_tracking_id_random]
}
api_cfg={$ae_api}
object_type={'event_exhibit_tracking'}
object_id={event_exhibit_tracking_obj?.event_exhibit_tracking_id_random}
field_name={'sort'}
field_type={'button'}
field_value={$events_slct.exhibit_tracking_obj.sort}
allow_null={false}
hide_edit_btn={true}
outline_element={false}
show_crud={false}
display_inline={true}
class_li={'m-1'}
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
});
}}
>
<button
type="button"
on:click={() => {
console.log(
`Updating sort for event_exhibit_tracking_id: ${event_exhibit_tracking_obj?.event_exhibit_tracking_id_random}`
);
ae_triggers.priority[event_exhibit_tracking_obj?.event_exhibit_tracking_id_random] = true;
}}
class="btn btn-sm preset-tonal-tertiary"
>
{@html (event_exhibit_tracking_obj?.priority ? '<span class="fas fa-star m-1"></span>' : '<span class="far fa-star"></span>')}
</button>
</Element_ae_crud>
</td>
$events_slct.exhibit_tracking_id =
event_exhibit_tracking_obj.event_exhibit_tracking_id_random;
$events_slct.exhibit_tracking_obj = event_exhibit_tracking_obj;
<!-- text-center align-middle -->
<td class="ranking text-center"> <!-- BEGIN: Ranking in table -->
<div class="ranking_container flex flex-col lg:flex-row justify-stretch items-center">
<!-- Sort (ranking) means this should be sorted in the list based on the number. 0 is the top of the list. -->
if ($events_slct.exhibit_tracking_obj.sort < 1) {
$events_slct.exhibit_tracking_obj.sort = 0;
} else {
$events_slct.exhibit_tracking_obj.sort -= 1;
}
<Element_ae_crud
bind:trigger_patch={ae_triggers.sort[event_exhibit_tracking_obj?.event_exhibit_tracking_id_random]}
api_cfg={$ae_api}
object_type={'event_exhibit_tracking'}
object_id={event_exhibit_tracking_obj?.event_exhibit_tracking_id_random}
field_name={'sort'}
field_type={'button'}
field_value={$events_slct.exhibit_tracking_obj.sort}
allow_null={false}
hide_edit_btn={true}
outline_element={false}
show_crud={false}
display_inline={true}
class_li={'m-1'}
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});
}}
>
<button
type="button"
on:click={() => {
console.log(`Updating sort for event_exhibit_tracking_id: ${event_exhibit_tracking_obj?.event_exhibit_tracking_id_random}`);
ae_triggers.sort[
event_exhibit_tracking_obj?.event_exhibit_tracking_id_random
] = true;
}}
disabled={event_exhibit_tracking_obj?.sort < 1}
class="btn btn-sm preset-tonal-secondary"
>
<span class="fas fa-arrow-up" title="Move up"></span>
</button>
</Element_ae_crud>
$events_slct.exhibit_tracking_id = event_exhibit_tracking_obj.event_exhibit_tracking_id_random;
$events_slct.exhibit_tracking_obj = event_exhibit_tracking_obj;
<span class="exhibit_tracking__sort m-0 lg:mx-1"
>{event_exhibit_tracking_obj.sort ?? ''}</span
>
if ($events_slct.exhibit_tracking_obj.sort < 1) {
$events_slct.exhibit_tracking_obj.sort = 0;
} else {
$events_slct.exhibit_tracking_obj.sort -= 1;
}
<Element_ae_crud
bind:trigger_patch={
ae_triggers.sort[event_exhibit_tracking_obj?.event_exhibit_tracking_id_random]
}
api_cfg={$ae_api}
object_type={'event_exhibit_tracking'}
object_id={event_exhibit_tracking_obj?.event_exhibit_tracking_id_random}
field_name={'sort'}
field_type={'button'}
field_value={$events_slct.exhibit_tracking_obj.sort}
allow_null={false}
hide_edit_btn={true}
outline_element={false}
show_crud={false}
display_inline={true}
class_li={'m-1'}
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
});
}}
>
<button
type="button"
on:click={() => {
console.log(
`Updating sort for event_exhibit_tracking_id: ${event_exhibit_tracking_obj?.event_exhibit_tracking_id_random}`
);
ae_triggers.sort[event_exhibit_tracking_obj?.event_exhibit_tracking_id_random] = true;
}}
disabled={event_exhibit_tracking_obj?.sort < 1}
class="btn btn-sm preset-tonal-secondary"
>
<span class="fas fa-arrow-up" title="Move up"></span>
</button>
</Element_ae_crud>
$events_slct.exhibit_tracking_id =
event_exhibit_tracking_obj.event_exhibit_tracking_id_random;
$events_slct.exhibit_tracking_obj = event_exhibit_tracking_obj;
<span class="exhibit_tracking__sort m-0 lg:mx-1">{event_exhibit_tracking_obj.sort ?? ''}</span>
if ($events_slct.exhibit_tracking_obj.sort >= 5) {
$events_slct.exhibit_tracking_obj.sort = 5;
} else {
$events_slct.exhibit_tracking_obj.sort += 1;
}
<Element_ae_crud
bind:trigger_patch={ae_triggers.sort[event_exhibit_tracking_obj?.event_exhibit_tracking_id_random]}
api_cfg={$ae_api}
object_type={'event_exhibit_tracking'}
object_id={event_exhibit_tracking_obj?.event_exhibit_tracking_id_random}
field_name={'sort'}
field_type={'button'}
field_value={$events_slct.exhibit_tracking_obj.sort}
allow_null={false}
hide_edit_btn={true}
outline_element={false}
show_crud={false}
display_inline={true}
class_li={'m-1'}
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});
}}
>
<button
type="button"
on:click={() => {
console.log(`Updating sort for event_exhibit_tracking_id: ${event_exhibit_tracking_obj?.event_exhibit_tracking_id_random}`);
ae_triggers.sort[
event_exhibit_tracking_obj?.event_exhibit_tracking_id_random
] = true;
}}
disabled={event_exhibit_tracking_obj.sort >= 5}
class="btn btn-sm preset-tonal-secondary"
>
<span class="fas fa-arrow-down" title="Move down"></span>
</button>
</Element_ae_crud>
$events_slct.exhibit_tracking_id = event_exhibit_tracking_obj.event_exhibit_tracking_id_random;
$events_slct.exhibit_tracking_obj = event_exhibit_tracking_obj;
if ($events_slct.exhibit_tracking_obj.sort >= 5) {
$events_slct.exhibit_tracking_obj.sort = 5;
} else {
$events_slct.exhibit_tracking_obj.sort += 1;
}
ae_triggers.sort[event_exhibit_tracking_obj?.event_exhibit_tracking_id_random] = true;
}}
disabled={event_exhibit_tracking_obj.sort >= 5}
class="btn btn-sm preset-tonal-secondary"
>
<span class="fas fa-arrow-down" title="Move down"></span>
</button>
</Element_ae_crud>
<!-- <button
<!-- <button
on:click={() => {
$events_slct.exhibit_tracking_id = event_exhibit_tracking_obj.event_exhibit_tracking_id_random;
@@ -366,113 +402,116 @@ let refresh_leads_list = setInterval(function () {
>
<span class="fas fa-arrow-down" title="Move down"></span>
</button> -->
</div>
</td> <!-- END: Ranking in table -->
</div>
</td>
<!-- END: Ranking in table -->
<td class="person">
<div class="person_container flex flex-col 2xl:flex-row gap-1 flex-wrap justify-between">
<button
on:click={() => {
$events_slct.exhibit_tracking_id = event_exhibit_tracking_obj.event_exhibit_tracking_id_random;
$events_slct.exhibit_tracking_obj = event_exhibit_tracking_obj;
$events_sess.leads.show_form__view_lead = $events_slct.exhibit_tracking_id;
// $events_sess.leads.show_form__view_lead[$events_slct.exhibit_tracking_id] = true;
}}
class="btn btn-sm preset-tonal-primary flex flex-row justify-between items-center gap-0.5 min-w-72 lg:min-w-96 min-h-14 max-h-14"
>
<span class="fas fa-user mx-0.5"></span>
<span class="text-lg grow text-center">{event_exhibit_tracking_obj.event_badge_full_name}</span>
</button>
<td class="person">
<div
class="person_container flex flex-col 2xl:flex-row gap-1 flex-wrap justify-between"
>
<button
on:click={() => {
$events_slct.exhibit_tracking_id =
event_exhibit_tracking_obj.event_exhibit_tracking_id_random;
$events_slct.exhibit_tracking_obj = event_exhibit_tracking_obj;
$events_sess.leads.show_form__view_lead = $events_slct.exhibit_tracking_id;
// $events_sess.leads.show_form__view_lead[$events_slct.exhibit_tracking_id] = true;
}}
class="btn btn-sm preset-tonal-primary flex flex-row justify-between items-center gap-0.5 min-w-72 lg:min-w-96 min-h-14 max-h-14"
>
<span class="fas fa-user mx-0.5"></span>
<span class="text-lg grow text-center"
>{event_exhibit_tracking_obj.event_badge_full_name}</span
>
</button>
<span class="flex flex-col xl:flex-row gap-0.5 flex-wrap justify-between min-w-48 max-w-80">
<span class="text-sm min-w-56">
<span class="fas fa-envelope mx-0.5"></span>
<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_email}
</a>
</span>
<span class="text-sm text-wrap min-w-56">{event_exhibit_tracking_obj.event_badge_affiliations}</span>
</span>
</div>
</td>
</tr>
{/each}
</tbody>
</table>
{:else}
No leads available to show
{$lq__event_exhibit_tracking_obj_li}
{/if}
{:else}
Loading...?
{/if}
<span
class="flex flex-col xl:flex-row gap-0.5 flex-wrap justify-between min-w-48 max-w-80"
>
<span class="text-sm min-w-56">
<span class="fas fa-envelope mx-0.5"></span>
<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_email}
</a>
</span>
<span class="text-sm text-wrap min-w-56"
>{event_exhibit_tracking_obj.event_badge_affiliations}</span
>
</span>
</div>
</td>
</tr>
{/each}
</tbody>
</table>
{:else}
No leads available to show
{$lq__event_exhibit_tracking_obj_li}
{/if}
{:else}
Loading...?
{/if}
</section>
<!-- This block needs to be moved or something. It takes up too much space! -->
{#if $events_sess.leads.show_form__view_lead}
<Leads_view_lead />
<Leads_view_lead />
{/if}
<style lang="postcss">
table.table>thead>tr>th {
padding: .1em;
}
table.table>tbody>tr>td {
padding: .1em;
}
table.table > thead > tr > th {
padding: 0.1em;
}
table.table > tbody > tr > td {
padding: 0.1em;
}
/* Use the div.ae_quick_modal_container to block background clicks when using the section.ae_quick_popover. */
div.ae_quick_modal_container {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 100;
background-color: hsla(0, 0%, 0%, .5);
}
/* Use the div.ae_quick_modal_container to block background clicks when using the section.ae_quick_popover. */
div.ae_quick_modal_container {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 100;
background-color: hsla(0, 0%, 0%, 0.5);
}
/* The section.ae_quick_popover should be above the rest of the content and centered on the page. */
section.ae_quick_popover {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
z-index: 100;
background-color: hsla(0, 0%, 100%, .95);
padding: 1rem;
border-radius: .5rem;
box-shadow: 0 0 1rem hsla(0, 0%, 0%, .5);
/* The section.ae_quick_popover should be above the rest of the content and centered on the page. */
section.ae_quick_popover {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
z-index: 100;
background-color: hsla(0, 0%, 100%, 0.95);
padding: 1rem;
border-radius: 0.5rem;
box-shadow: 0 0 1rem hsla(0, 0%, 0%, 0.5);
min-height: 98%;
min-width: 98%;
}
min-height: 98%;
min-width: 98%;
}
section.ae_quick_popover_small {
position: fixed;
top: 1em;
left: 50%;
transform: translate(-50%, 0%);
z-index: 100;
background-color: hsla(0, 0%, 100%, .95);
padding: 1rem;
border-radius: .5rem;
box-shadow: 0 0 1rem hsla(0, 0%, 0%, .5);
section.ae_quick_popover_small {
position: fixed;
top: 1em;
left: 50%;
transform: translate(-50%, 0%);
z-index: 100;
background-color: hsla(0, 0%, 100%, 0.95);
padding: 1rem;
border-radius: 0.5rem;
box-shadow: 0 0 1rem hsla(0, 0%, 0%, 0.5);
min-hight: 24rem;
max-height: 95%;
min-width: 50%;
max-width: 95%;
}
min-hight: 24rem;
max-height: 95%;
min-width: 50%;
max-width: 95%;
}
</style>

File diff suppressed because it is too large Load Diff

View File

@@ -1,179 +1,193 @@
<script lang="ts">
import { ae_util } from '$lib/ae_utils/ae_utils';
import { liveQuery } from "dexie";
import { db_events } from "$lib/ae_events/db_events";
import { ae_loc, ae_sess, ae_api, slct, slct_trigger } from '$lib/stores/ae_stores';
import { events_loc, events_sess, events_slct, events_trigger } from '$lib/stores/ae_events_stores';
import { ae_util } from '$lib/ae_utils/ae_utils';
import { liveQuery } from 'dexie';
import { db_events } from '$lib/ae_events/db_events';
import { ae_loc, ae_sess, ae_api, slct, slct_trigger } from '$lib/stores/ae_stores';
import {
events_loc,
events_sess,
events_slct,
events_trigger
} from '$lib/stores/ae_events_stores';
let event_exhibit_obj = liveQuery(
() => db_events.exhibit.get($events_slct.exhibit_id)
);
let event_exhibit_obj = liveQuery(() => db_events.exhibit.get($events_slct.exhibit_id));
if (!$events_sess.stripe) {
$events_sess.stripe = {};
}
if (!$events_sess.stripe.license_qty) {
$events_sess.stripe.license_qty = 1;
$events_sess.stripe.rental_qty = 0;
$events_sess.stripe.client_reference_id = $events_slct.exhibit_id;
// $events_sess.stripe.btn_payment_id
if (!$events_sess.stripe) {
$events_sess.stripe = {};
}
if (!$events_sess.stripe.license_qty) {
$events_sess.stripe.license_qty = 1;
$events_sess.stripe.rental_qty = 0;
$events_sess.stripe.client_reference_id = $events_slct.exhibit_id;
// $events_sess.stripe.btn_payment_id
console.log(`$events_sess.stripe =`, $events_sess.stripe);
}
console.log(`$events_sess.stripe =`, $events_sess.stripe);
}
// $: if ($events_sess.stripe.rental_option) {
// console.log('Rental Option', $events_sess.stripe.rental_option);
// if ($events_sess.stripe.rental_option == true && !$events_sess.stripe.rental_qty) {
// $events_sess.stripe.rental_qty = 1;
// } else if (!$events_sess.stripe.rental_option) {
// $events_sess.stripe.rental_qty = 0;
// }
// } else {
// $events_sess.stripe.rental_option = false;
// }
// $: if ($events_sess.stripe.rental_option) {
// console.log('Rental Option', $events_sess.stripe.rental_option);
// if ($events_sess.stripe.rental_option == true && !$events_sess.stripe.rental_qty) {
// $events_sess.stripe.rental_qty = 1;
// } else if (!$events_sess.stripe.rental_option) {
// $events_sess.stripe.rental_qty = 0;
// }
// } else {
// $events_sess.stripe.rental_option = false;
// }
$: if ($events_sess.stripe && $events_sess.stripe.license_qty >= 0 || $events_sess.stripe.rental_qty >= 0) {
console.log(`$events_sess.stripe.license_qty=${$events_sess.stripe.license_qty} and $events_sess.stripe.rental_qty=${$events_sess.stripe.rental_qty}`);
// $events_sess.stripe.license_qty = parseInt($events_sess.stripe.license_qty);
$: if (
($events_sess.stripe && $events_sess.stripe.license_qty >= 0) ||
$events_sess.stripe.rental_qty >= 0
) {
console.log(
`$events_sess.stripe.license_qty=${$events_sess.stripe.license_qty} and $events_sess.stripe.rental_qty=${$events_sess.stripe.rental_qty}`
);
// $events_sess.stripe.license_qty = parseInt($events_sess.stripe.license_qty);
// $events_sess.stripe.rental_qty = parseInt($events_sess.stripe.rental_qty);
// $events_sess.stripe.rental_qty = parseInt($events_sess.stripe.rental_qty);
if ($events_sess.stripe.rental_qty == 0) {
// $events_sess.stripe.rental_qty = 0;
if ($events_sess.stripe.rental_qty == 0) {
// $events_sess.stripe.rental_qty = 0;
if ($events_sess.stripe.license_qty == 1) {
$events_sess.stripe.btn_payment_id = $events_sess.stripe.btn_1_license;
}
if ($events_sess.stripe.license_qty == 3) {
$events_sess.stripe.btn_payment_id = $events_sess.stripe.btn_3_license;
}
if ($events_sess.stripe.license_qty == 6) {
$events_sess.stripe.btn_payment_id = $events_sess.stripe.btn_6_license;
}
if ($events_sess.stripe.license_qty == 10) {
$events_sess.stripe.btn_payment_id = $events_sess.stripe.btn_10_license;
}
} else {
if ($events_sess.stripe.license_qty == 1) {
$events_sess.stripe.btn_payment_id = $events_sess.stripe.btn_1_license_rental;
}
if ($events_sess.stripe.license_qty == 3) {
$events_sess.stripe.btn_payment_id = $events_sess.stripe.btn_3_license_rental;
}
if ($events_sess.stripe.license_qty == 6) {
$events_sess.stripe.btn_payment_id = $events_sess.stripe.btn_6_license_rental;
}
if ($events_sess.stripe.license_qty == 10) {
$events_sess.stripe.btn_payment_id = $events_sess.stripe.btn_10_license_rental;
}
if ($events_sess.stripe.license_qty == 1) {
$events_sess.stripe.btn_payment_id = $events_sess.stripe.btn_1_license;
}
if ($events_sess.stripe.license_qty == 3) {
$events_sess.stripe.btn_payment_id = $events_sess.stripe.btn_3_license;
}
if ($events_sess.stripe.license_qty == 6) {
$events_sess.stripe.btn_payment_id = $events_sess.stripe.btn_6_license;
}
if ($events_sess.stripe.license_qty == 10) {
$events_sess.stripe.btn_payment_id = $events_sess.stripe.btn_10_license;
}
} else {
if ($events_sess.stripe.license_qty == 1) {
$events_sess.stripe.btn_payment_id = $events_sess.stripe.btn_1_license_rental;
}
if ($events_sess.stripe.license_qty == 3) {
$events_sess.stripe.btn_payment_id = $events_sess.stripe.btn_3_license_rental;
}
if ($events_sess.stripe.license_qty == 6) {
$events_sess.stripe.btn_payment_id = $events_sess.stripe.btn_6_license_rental;
}
if ($events_sess.stripe.license_qty == 10) {
$events_sess.stripe.btn_payment_id = $events_sess.stripe.btn_10_license_rental;
}
}
}
// We need to force the Stripe Buy Button to reload. I was expecting this to happen automatically when the payment ID changed.
// console.log(document.getElementById('stripe_buy_button'));
// We need to force the Stripe Buy Button to reload. I was expecting this to happen automatically when the payment ID changed.
// console.log(document.getElementById('stripe_buy_button'));
if (!$events_sess.stripe.client_reference_id) {
$events_sess.stripe.client_reference_id = $events_slct.exhibit_id;
}
console.log(`$events_sess.stripe =`, $events_sess.stripe);
if (!$events_sess.stripe.client_reference_id) {
$events_sess.stripe.client_reference_id = $events_slct.exhibit_id;
}
console.log(`$events_sess.stripe =`, $events_sess.stripe);
if (document.getElementById('stripe_buy_button')) {
document.getElementById('stripe_buy_button').remove();
let stripe_buy_button = document.createElement('stripe-buy-button');
stripe_buy_button.id = 'stripe_buy_button';
stripe_buy_button.setAttribute('buy-button-id', $events_sess.stripe.btn_payment_id);
stripe_buy_button.setAttribute('publishable-key', $events_sess.stripe.publishable_key);
stripe_buy_button.setAttribute('client-reference-id', $events_sess.stripe.client_reference_id);
document.getElementById('stripe_buy_button_container').appendChild(stripe_buy_button);
} else {
console.log('No Stripe Buy Button found.');
}
}
if (document.getElementById('stripe_buy_button')) {
document.getElementById('stripe_buy_button').remove();
let stripe_buy_button = document.createElement('stripe-buy-button');
stripe_buy_button.id = 'stripe_buy_button';
stripe_buy_button.setAttribute('buy-button-id', $events_sess.stripe.btn_payment_id);
stripe_buy_button.setAttribute('publishable-key', $events_sess.stripe.publishable_key);
stripe_buy_button.setAttribute(
'client-reference-id',
$events_sess.stripe.client_reference_id
);
document.getElementById('stripe_buy_button_container').appendChild(stripe_buy_button);
} else {
console.log('No Stripe Buy Button found.');
}
}
</script>
<section class="tab__payment flex flex-col wrap justify-center items-center space-y-4">
<h2 class="h3">
<span class="fas fa-credit-card mx-1"></span>
Payment
</h2>
<h2 class="h3">
<span class="fas fa-credit-card mx-1"></span>
Payment
</h2>
{#if $events_loc?.leads.auth_exhibit_kv[$events_slct.exhibit_id]}
{#if $event_exhibit_obj?.priority}
<h3 class="h4">Marked as Paid</h3>
{#if $events_loc?.leads.auth_exhibit_kv[$events_slct.exhibit_id]}
{#if $event_exhibit_obj?.priority}
<h3 class="h4">Marked as Paid</h3>
<div class="border border-slate-500/10 p-2 preset-tonal-success space-y-4">
<p>
Thank you for your payment. You have purchased {$event_exhibit_obj?.license_max} user license(s)
for the lead retrieval service with your booth at ISHLT 2024 in Prague.
</p>
<div class="border border-slate-500/10 p-2 preset-tonal-success space-y-4">
<p>Thank you for your payment. You have purchased {$event_exhibit_obj?.license_max} user license(s) for the lead retrieval service with your booth at ISHLT 2024 in Prague.</p>
{#if $event_exhibit_obj?.leads_device_sm_qty > 0}
<p>
You have also rented {$event_exhibit_obj?.leads_device_sm_qty} tablet(s) for using with the
lead retrievals. You will be able to pick up your rental tablets at ISHLT's onsite registration.
</p>
{:else}
<p>
You have not rented any tablets for scanning. You can use your own device(s) with this
service.
</p>
{/if}
{#if $event_exhibit_obj?.leads_device_sm_qty > 0}
<p>You have also rented {$event_exhibit_obj?.leads_device_sm_qty} tablet(s) for using with the lead retrievals. You will be able to pick up your rental tablets at ISHLT's onsite registration.</p>
{:else}
<p>You have not rented any tablets for scanning. You can use your own device(s) with this service.</p>
{/if}
<p>
To save space while using this app you can hide this payment tab now that you have paid
for your licenses. This can be unhidden under the Conf(ig) tab if needed.
</p>
</div>
<p>To save space while using this app you can hide this payment tab now that you have paid for your licenses. This can be unhidden under the Conf(ig) tab if needed.</p>
</div>
<button
type="button"
on:click={() => {
let confirm_hide = confirm('You can unhide this later under the Config tab.');
if (confirm_hide) {
$events_loc.leads.show_option__paid_tab = false;
$events_loc.leads.tab[$events_slct.exhibit_id] = 'start';
}
}}
class="btn preset-tonal-primary"
title="This payment tab can be hidden once marked as paid."
>
<span class="fas fa-eye-slash m-1"></span>
Hide This Paid Tab?
</button>
{:else}
<h3 class="h4">Not Marked as Paid</h3>
<button
type="button"
on:click={() => {
let confirm_hide = confirm('You can unhide this later under the Config tab.');
if (confirm_hide) {
$events_loc.leads.show_option__paid_tab = false;
$events_loc.leads.tab[$events_slct.exhibit_id] = 'start';
}
}}
class="btn preset-tonal-primary"
title="This payment tab can be hidden once marked as paid."
>
<span class="fas fa-eye-slash m-1"></span>
Hide This Paid Tab?
</button>
<div class="border border-slate-500/10 p-2 preset-tonal-secondary">
<p>
Please select the number of licenses to purchase and if you need to rent any tablets for
scanning. As a reminder, you can use your own device (cell phone, tablet, laptop, etc) to
scan the QR codes on the badges of the attendees. Tablet rentals are limited in supply for
ISHLT 2024 in Prague and will be given out on a first come first served basis.
</p>
</div>
{:else}
<h3 class="h4">Not Marked as Paid</h3>
<script async src="https://js.stripe.com/v3/buy-button.js">
</script>
<div class="border border-slate-500/10 p-2 preset-tonal-secondary">
<p>Please select the number of licenses to purchase and if you need to rent any tablets for scanning. As a reminder, you can use your own device (cell phone, tablet, laptop, etc) to scan the QR codes on the badges of the attendees. Tablet rentals are limited in supply for ISHLT 2024 in Prague and will be given out on a first come first served basis.</p>
</div>
<div class="w-2/3">
<label>
Select number of licenses to purchase:<br />
<select
id="license_qty"
name="license_qty"
bind:value={$events_sess.stripe.license_qty}
class="select max-w-72"
>
<option value={1}> 1 user license - $120 </option>
<option value={3}> Up to 3 user licenses - $330 </option>
<option value={6}> Up to 6 user licenses - $660 </option>
<option value={10}> Up to 10 user licenses - $1,100 </option>
</select>
</label>
<p class="text-sm">
Each person associated with your exhibit needs a license to use the lead retrieval service
for exhibitors.
</p>
</div>
<script async
src="https://js.stripe.com/v3/buy-button.js">
</script>
<div class="w-2/3">
<label>
Select number of licenses to purchase:<br>
<select
id="license_qty"
name="license_qty"
bind:value={$events_sess.stripe.license_qty}
class="select max-w-72"
>
<option value={1}>
1 user license - $120
</option>
<option value={3}>
Up to 3 user licenses - $330
</option>
<option value={6}>
Up to 6 user licenses - $660
</option>
<option value={10}>
Up to 10 user licenses - $1,100
</option>
</select>
</label>
<p class="text-sm">Each person associated with your exhibit needs a license to use the lead retrieval service for exhibitors.</p>
</div>
<!-- <div>
<!-- <div>
CHK Do you need to rent tablets as well?
<input
type="checkbox"
@@ -187,9 +201,9 @@ $: if ($events_sess.stripe && $events_sess.stripe.license_qty >= 0 || $events_se
>
</div> -->
<!-- {#if $events_sess.stripe.rental_qty > 0} -->
<!-- <div> -->
<!-- Do you need to rent tablets as well?
<!-- {#if $events_sess.stripe.rental_qty > 0} -->
<!-- <div> -->
<!-- Do you need to rent tablets as well?
<input
type="checkbox"
name="rental_option"
@@ -206,7 +220,7 @@ $: if ($events_sess.stripe && $events_sess.stripe.license_qty >= 0 || $events_se
}}
> -->
<!-- <button on:click={() => {
<!-- <button on:click={() => {
console.log('License(s) Only');
$events_sess.stripe.rental_qty = 0;
}}
@@ -214,36 +228,39 @@ $: if ($events_sess.stripe && $events_sess.stripe.license_qty >= 0 || $events_se
>
License(s) Only
</button> -->
<!-- </div> -->
<!-- </div> -->
<div class="w-2/3">
<label>
Select number of tablets to rent:<br>
<select
id="rental_qty"
name="rental_qty"
bind:value={$events_sess.stripe.rental_qty}
class="select max-w-52"
>
<option value={0}>No tablet rentals - $0</option>
<option value={1}>1 tablet - $115</option>
<option value={2}>2 tablets - $230</option>
<option value={3}>3 tablets - $345</option>
<option value={4}>4 tablets - $460</option>
<option value={5}>5 tablets - $575</option>
<option value={6}>6 tablets - $690</option>
<option value={7}>7 tablets - $805</option>
<option value={8}>8 tablets - $920</option>
<option value={9}>9 tablets - $1,035</option>
<option value={10}>10 tablets - $1,150</option>
</select>
</label>
<p class="text-sm">You can use your own device(s) with this service. Renting tablets for scanning is not required.</p>
</div>
<div class="w-2/3">
<label>
Select number of tablets to rent:<br />
<select
id="rental_qty"
name="rental_qty"
bind:value={$events_sess.stripe.rental_qty}
class="select max-w-52"
>
<option value={0}>No tablet rentals - $0</option>
<option value={1}>1 tablet - $115</option>
<option value={2}>2 tablets - $230</option>
<option value={3}>3 tablets - $345</option>
<option value={4}>4 tablets - $460</option>
<option value={5}>5 tablets - $575</option>
<option value={6}>6 tablets - $690</option>
<option value={7}>7 tablets - $805</option>
<option value={8}>8 tablets - $920</option>
<option value={9}>9 tablets - $1,035</option>
<option value={10}>10 tablets - $1,150</option>
</select>
</label>
<p class="text-sm">
You can use your own device(s) with this service. Renting tablets for scanning is not
required.
</p>
</div>
<!-- {:else} -->
<!-- {:else} -->
<!-- <div>
<!-- <div>
BTN Do you need to rent tablets as well?
<button on:click={() => {
console.log('License(s) with Tablet Rental');
@@ -254,31 +271,43 @@ BTN Do you need to rent tablets as well?
License(s) with Tablet Rental
</button>
</div> -->
<!-- {/if} -->
<!-- {/if} -->
{#if $events_sess.stripe.btn_payment_id}
<div id="stripe_buy_button_container" class="w-2/3">
<stripe-buy-button
id="stripe_buy_button"
buy-button-id={$events_sess.stripe.btn_payment_id}
publishable-key={$events_sess.stripe.publishable_key}
client-reference-id={$events_sess.stripe.client_reference_id}
>
</stripe-buy-button>
<p class="text-sm">
You have selected to purchase {$events_sess.stripe.license_qty} user license(s) and rent
{$events_sess.stripe.rental_qty} tablet(s). Press the button above to pay by credit card,
debit card, or ACH direct debit.
</p>
<p class="text-sm preset-tonal-warning">
<strong>WARNING:</strong> Please be sure to double check and update the quantities on the
next page.
</p>
</div>
{/if}
{#if $events_sess.stripe.btn_payment_id}
<div id="stripe_buy_button_container" class="w-2/3">
<stripe-buy-button
id="stripe_buy_button"
buy-button-id={$events_sess.stripe.btn_payment_id}
publishable-key={$events_sess.stripe.publishable_key}
client-reference-id={$events_sess.stripe.client_reference_id}
<div class="border border-slate-500/10 p-2 preset-tonal-warning">
<p>
<strong>NOTE:</strong> Your payment will be reviewed and is not reflected immediately on
this page for your exhibit. It may take up to 2 business days for this to show as being
paid. If you have any questions or concerns please email
<a
href="mailto:exhibits@oneskyit.com"
class="font-medium text-blue-600 dark:text-blue-500 hover:underline"
>exhibits@oneskyit.com</a
>.
</p>
</div>
>
</stripe-buy-button>
<p class="text-sm">You have selected to purchase {$events_sess.stripe.license_qty} user license(s) and rent {$events_sess.stripe.rental_qty} tablet(s). Press the button above to pay by credit card, debit card, or ACH direct debit.</p>
<p class="text-sm preset-tonal-warning"><strong>WARNING:</strong> Please be sure to double check and update the quantities on the next page.</p>
</div>
{/if}
<div class="border border-slate-500/10 p-2 preset-tonal-warning">
<p><strong>NOTE:</strong> Your payment will be reviewed and is not reflected immediately on this page for your exhibit. It may take up to 2 business days for this to show as being paid. If you have any questions or concerns please email <a href="mailto:exhibits@oneskyit.com" class="font-medium text-blue-600 dark:text-blue-500 hover:underline">exhibits@oneskyit.com</a>.</p>
</div>
<!-- <div>
<!-- <div>
1 user license<br>
<stripe-buy-button
buy-button-id="buy_btn_1OvqWJ2gJkNsDuiNqMCWz5nG"
@@ -287,7 +316,7 @@ BTN Do you need to rent tablets as well?
</stripe-buy-button>
</div> -->
<!-- <div>
<!-- <div>
1 user license with tablet rental<br>
<stripe-buy-button
buy-button-id="buy_btn_1OvqVA2gJkNsDuiNhk9r8Io2"
@@ -296,7 +325,7 @@ BTN Do you need to rent tablets as well?
</stripe-buy-button>
</div> -->
<!-- <div>
<!-- <div>
Up to 3 user licenses<br>
<stripe-buy-button
buy-button-id="buy_btn_1OvrI22gJkNsDuiNXjBg3c4Y"
@@ -305,7 +334,7 @@ Up to 3 user licenses<br>
</stripe-buy-button>
</div> -->
<!-- <div>
<!-- <div>
Up to 3 user licenses with tablet rental<br>
<stripe-buy-button
buy-button-id="buy_btn_1OvrKa2gJkNsDuiNhSBCkNau"
@@ -314,9 +343,9 @@ Up to 3 user licenses with tablet rental<br>
</stripe-buy-button>
</div> -->
<!-- <hr> -->
<!-- <hr> -->
<!-- <div>
<!-- <div>
Up to 6 user licenses<br>
<stripe-buy-button
buy-button-id="buy_btn_1OvrWc2gJkNsDuiN7mnwvZNL"
@@ -325,7 +354,7 @@ Up to 6 user licenses<br>
</stripe-buy-button>
</div> -->
<!-- <div>
<!-- <div>
Up to 6 user licenses with tablet rental<br>
<stripe-buy-button
buy-button-id="buy_btn_1OvrXP2gJkNsDuiNZpWZs3Uy"
@@ -334,7 +363,7 @@ Up to 6 user licenses with tablet rental<br>
</stripe-buy-button>
</div> -->
<!-- <div>
<!-- <div>
Up to 10 user licenses<br>
<stripe-buy-button
buy-button-id="buy_btn_1OvrPM2gJkNsDuiNRCMHfSuz"
@@ -343,7 +372,7 @@ Up to 10 user licenses<br>
</stripe-buy-button>
</div> -->
<!-- <div>
<!-- <div>
Up to 10 user licenses with tablet rental<br>
<stripe-buy-button
buy-button-id="buy_btn_1OvrPs2gJkNsDuiN1nPkjPOM"
@@ -352,14 +381,12 @@ Up to 10 user licenses with tablet rental<br>
</stripe-buy-button>
</div> -->
<!-- </div> -->
{/if}
{:else}
<div class="preset-tonal-warning">Please go to the Main tab to login using the shared staff passcode for this exhibit. Then select a license to use.</div>
{/if}
<!-- </div> -->
{/if}
{:else}
<div class="preset-tonal-warning">
Please go to the Main tab to login using the shared staff passcode for this exhibit. Then
select a license to use.
</div>
{/if}
</section>

File diff suppressed because it is too large Load Diff