Lots of updates....
This commit is contained in:
@@ -44,6 +44,8 @@ let events_local_data_struct: key_val = {
|
||||
|
||||
// Lead Retrievals (Exhibit)
|
||||
'leads': {
|
||||
show_content__scan_requirements: true,
|
||||
|
||||
auto_view: true,
|
||||
|
||||
// The entered_passcode is the exhibit booths shared passcode for staff. This is used to initially access the lead retrieval service.
|
||||
|
||||
@@ -68,6 +68,8 @@ export let ae_app_local_data_struct: key_val = {
|
||||
'theme_name': 'wintry',
|
||||
|
||||
'classes__form': 'border border-surface-200 p-4 space-y-4 rounded-container-token',
|
||||
|
||||
'qr': {},
|
||||
},
|
||||
'mod': {
|
||||
'archives': {},
|
||||
|
||||
@@ -61,7 +61,7 @@ let ds_code_obj =
|
||||
};
|
||||
|
||||
let ae_ds_loc: Writable<key_val> = localStorageStore(`ae_ds__${ds_code}`, ds_code_obj);
|
||||
console.log(`ae_ Data Store ${ds_code} = `, $ae_ds_loc);
|
||||
// console.log(`ae_ Data Store ${ds_code} = `, $ae_ds_loc);
|
||||
|
||||
if (!$ae_ds_loc.id) {
|
||||
ds_loading_status = '-- loading --';
|
||||
@@ -115,7 +115,7 @@ async function load_data_store({
|
||||
log_lvl: 1
|
||||
})
|
||||
.then( function (ds_results) {
|
||||
console.log(`ae_ Data Store ${code} = `, ds_results);
|
||||
// console.log(`ae_ Data Store ${code} = `, ds_results);
|
||||
if (ds_results) {
|
||||
console.log(`Got a result for code ${code}`);
|
||||
if (!ds_results.data_store_id_random) {
|
||||
|
||||
@@ -63,7 +63,7 @@ export async function load({ params, url }) { // params, route, url
|
||||
|
||||
.then(function (site_domain_results) {
|
||||
if (site_domain_results) {
|
||||
console.log(`ae_ site_domain_results = `, site_domain_results);
|
||||
// console.log(`ae_ site_domain_results = `, site_domain_results);
|
||||
|
||||
let ae_api_tmp = get(ae_api);
|
||||
|
||||
@@ -219,7 +219,7 @@ export async function load({ params, url }) { // params, route, url
|
||||
.finally(function () {
|
||||
|
||||
let iframe = url.searchParams.get('iframe');
|
||||
console.log(`iframe = `, iframe);
|
||||
// console.log(`iframe = `, iframe);
|
||||
if (iframe == 'true') {
|
||||
data_struct['iframe'] = iframe;
|
||||
|
||||
|
||||
@@ -1,25 +1,23 @@
|
||||
<script lang="ts">
|
||||
/** @type {import('./$types').PageData} */
|
||||
export let data;
|
||||
console.log(`ae_ Svelte root +page data:`, data);
|
||||
// console.log(`ae_ Svelte root +page data:`, data);
|
||||
|
||||
import { onMount } from 'svelte';
|
||||
|
||||
import { PUBLIC_TESTING } from '$env/static/public';
|
||||
console.log(`AE Config - +page.svelte PUBLIC_TESTING:`, PUBLIC_TESTING);
|
||||
// console.log(`AE Config - +page.svelte PUBLIC_TESTING:`, PUBLIC_TESTING);
|
||||
|
||||
import Element_data_store from '$lib/element_data_store.svelte';
|
||||
|
||||
import { api } from '$lib/api';
|
||||
import { ae_loc, ae_sess, ae_api, slct, slct_trigger } from '$lib/ae_stores';
|
||||
import type { key_val } from '$lib/ae_stores';
|
||||
console.log($ae_loc, $ae_sess, $ae_api);
|
||||
// console.log($ae_loc, $ae_sess, $ae_api);
|
||||
|
||||
|
||||
onMount(() => {
|
||||
console.log('Root: +page.svelte');
|
||||
let url = window.location.href;
|
||||
console.log(url);
|
||||
console.log(`Root: +page.svelte; URL: ${window.location.href}`);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
@@ -30,8 +30,8 @@ export async function load({ params, parent, url }) { // route
|
||||
let submenu = {
|
||||
main: {name: 'Main', href: '/events_badges', access: false},
|
||||
manage: {name: 'Manage', href: '/events_badges/manage', access: 'administrator', disable: true, hide: true},
|
||||
review: {name: 'Review', href: '/events_badges/review', access: false, disable: false, hide: false},
|
||||
print: {name: 'Print', href: '/events_badges/print', access: 'trusted', disable: false, hide: false},
|
||||
review: {name: 'Review', href: '/events_badges/review', access: false, disable: true, hide: false},
|
||||
print: {name: 'Print', href: '/events_badges/print', access: 'trusted', disable: true, hide: false},
|
||||
view: {name: 'View', href: '/events_badges/view', access: 'trusted', hide: true}, // event_badge_id
|
||||
// new: {name: 'New', href: '/events_badges/new'},
|
||||
// sponsorships: {name: 'Sponsorships', href: '/sponsorships', disable: true, hide: true},
|
||||
|
||||
@@ -50,7 +50,11 @@ onMount(() => {
|
||||
|
||||
<section class="ae_events_badges md:container h-full mx-auto">
|
||||
|
||||
<h1 class="h2">Events - Badges</h1>
|
||||
<h2 class="h3">Badges for ISHLT 2024 ({$events_slct.event_id})</h2>
|
||||
|
||||
<h3 class="h4">Restricted Access</h3>
|
||||
<p>Accessing the badge printing for ISHLT 2024 is currently restricted</p>
|
||||
|
||||
|
||||
<Element_data_store
|
||||
ds_code="events__badges__overview"
|
||||
@@ -58,12 +62,10 @@ onMount(() => {
|
||||
for_type="event"
|
||||
for_id={$events_slct.event_id}
|
||||
display="block"
|
||||
class_li="variant-ghost-surface p-2"
|
||||
class_li="p-2"
|
||||
/>
|
||||
|
||||
<a href="/{$events_slct.event_id}">Event ID {$events_slct.event_id}</a>
|
||||
|
||||
<Element_data_store
|
||||
<!-- <Element_data_store
|
||||
ds_code="events__badges__example"
|
||||
ds_type="html"
|
||||
for_type="event"
|
||||
@@ -74,7 +76,7 @@ onMount(() => {
|
||||
class_li="variant-ghost-surface p-2"
|
||||
try_cache={true}
|
||||
show_edit={false}
|
||||
/>
|
||||
/> -->
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
@@ -173,7 +173,7 @@ function handle_check_event_exhibit_staff_passcode() {
|
||||
|
||||
class="flex flex-col items-center border-2 border-primary p-2">
|
||||
<!-- <h2>Exhibitor Lead Retrieval</h2> -->
|
||||
<div>Select your exhibit booth from the list and enter passcode you were given.</div>
|
||||
<div>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">
|
||||
<label for="exhibit_list" class="label">
|
||||
|
||||
@@ -8,7 +8,7 @@ export async function load({ params, parent, url }) { // route
|
||||
// console.log(`ae_events_leads +page.ts data.url:`, url);
|
||||
|
||||
let data = await parent();
|
||||
console.log(`ae_events_leads +page.ts data:`, data);
|
||||
// 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) {
|
||||
|
||||
@@ -3,6 +3,7 @@ export let data;
|
||||
console.log(`ae_events_leads exhibit [slug] +page.svelte data:`, data);
|
||||
|
||||
import { onMount } from 'svelte';
|
||||
import { goto, invalidate, pushState, replaceState } from '$app/navigation';
|
||||
|
||||
import type { key_val } from '$lib/ae_stores';
|
||||
import { ae_util } from '$lib/ae_utils';
|
||||
@@ -21,7 +22,15 @@ import { clipboard, FileDropzone, getModalStore, localStorageStore, ProgressRadi
|
||||
import Element_data_store from '$lib/element_data_store.svelte';
|
||||
import Element_qr_scanner from '$lib/element_qr_scanner.svelte';
|
||||
|
||||
import Leads_manage from './leads_manage.svelte';
|
||||
import Leads_payment from './leads_payment.svelte';
|
||||
|
||||
let param_slug_event_exhibit_id = data.params.slug;
|
||||
let url_passcode = data.url.searchParams.get('passcode');
|
||||
console.log(`ae_events_leads exhibit [slug] +page.svelte: param_slug_event_exhibit_id=${param_slug_event_exhibit_id}; passcode=${url_passcode}`);
|
||||
if (url_passcode) {
|
||||
$events_sess.leads.entered_passcode = url_passcode;
|
||||
}
|
||||
|
||||
let event_exhibit_obj = liveQuery(
|
||||
() => db_events.exhibits.get(param_slug_event_exhibit_id)
|
||||
@@ -78,6 +87,15 @@ onMount(() => {
|
||||
console.log(`No ID. Nothing to show. Try setting the ID again.`);
|
||||
$events_slct.exhibit_id = param_slug_event_exhibit_id;
|
||||
}
|
||||
|
||||
// We need to remove the url_passcode from the URL GET params after we use it. It should be safe to assume that onMount is a safe place to do this.
|
||||
if (url_passcode) {
|
||||
// console.log('Remove the passcode from the URL.');
|
||||
data.url.searchParams.delete('passcode');
|
||||
let new_url = data.url.toString()
|
||||
console.log(new_url);
|
||||
goto(new_url, {replaceState: true});
|
||||
}
|
||||
});
|
||||
// console.log(`$ae_loc = `, $ae_loc);
|
||||
|
||||
@@ -143,6 +161,13 @@ $: if ($events_trigger == 'load__event_exhibit_obj' && $events_slct.exhibit_id)
|
||||
let load_event_exhibit_obj = events_func.handle_load_ae_obj_id__exhibit({api_cfg: data.ae_api, exhibit_id: $events_slct.exhibit_id, try_cache: false})
|
||||
.then(function (result) {
|
||||
console.log(`load_event_exhibit_obj = `, result);
|
||||
|
||||
// Check if the license_li_json is an array and if not, convert it to an array.
|
||||
if (result.license_li_json && !Array.isArray(result.license_li_json)) {
|
||||
console.log('Convert license_li_json to an array.');
|
||||
result.license_li_json = [];
|
||||
}
|
||||
|
||||
$events_slct.exhibit_obj = result;
|
||||
|
||||
// let license_key = 'example@oneskyit.com';
|
||||
@@ -224,6 +249,9 @@ async function handle_submit_form_license_update(event) {
|
||||
|
||||
console.log('Removed license:', tmp_obj);
|
||||
} else if ($events_sess.leads.tmp_license.email && $events_sess.leads.tmp_license.full_name) {
|
||||
if (!Array.isArray(tmp_obj.license_li_json)) {
|
||||
tmp_obj.license_li_json = [];
|
||||
}
|
||||
tmp_obj.license_li_json.push($events_sess.leads.tmp_license);
|
||||
console.log('Add license:', tmp_obj);
|
||||
} else if ($events_sess.leads.tmp_license.index === -1) {
|
||||
@@ -368,7 +396,7 @@ async function handle_update__exhibit({
|
||||
obj_id: obj_id,
|
||||
fields: data,
|
||||
key: $ae_api.api_crud_super_key,
|
||||
log_lvl: 2
|
||||
log_lvl: 1
|
||||
})
|
||||
.then(async function (update__obj_result) {
|
||||
if (!update__obj_result) {
|
||||
@@ -507,20 +535,6 @@ function handle_qr_camera(event) {
|
||||
}
|
||||
|
||||
|
||||
// Updated 2022-04-22
|
||||
export let get_event_exhibit_tracking_export = async function get_event_exhibit_tracking_export({event_exhibit_id, file_type='CSV', return_file=true, filename=null, auto_download=false, params={}, log_lvl=0}) {
|
||||
console.log('*** stores_event_api.js: get_event_exhibit_tracking_export() ***');
|
||||
|
||||
const endpoint = `/event/exhibit/${event_exhibit_id}/tracking/export`;
|
||||
if (file_type == 'CSV' || file_type == 'Excel') {
|
||||
params['file_type'] = file_type;
|
||||
}
|
||||
params['return_file'] = true;
|
||||
|
||||
let event_exhibit_tracking_export_file_get_promise = await api.get_object({api_cfg: ae_api, endpoint: endpoint, params: params, return_blob: true, filename: filename, auto_download: auto_download, log_lvl: log_lvl});
|
||||
// console.log(event_exhibit_tracking_export_file_get_promise);
|
||||
return event_exhibit_tracking_export_file_get_promise;
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
@@ -574,6 +588,21 @@ export let get_event_exhibit_tracking_export = async function get_event_exhibit_
|
||||
border=""
|
||||
class="bg-surface-100-800-token w-full"
|
||||
>
|
||||
<Tab
|
||||
bind:group={$events_loc.leads.tab[$events_slct.exhibit_id]}
|
||||
name="tab_payment"
|
||||
value={'payment'}>
|
||||
<svelte:fragment slot="lead">
|
||||
{#if !$event_exhibit_obj.paid}
|
||||
<span class="fas fa-question text-red-500"></span>
|
||||
{:else}
|
||||
<span class="fas fa-check text-green-500"></span>
|
||||
{/if}
|
||||
<span class="fas fa-credit-card mx-1"></span>
|
||||
</svelte:fragment>
|
||||
Payment
|
||||
</Tab>
|
||||
|
||||
<Tab
|
||||
bind:group={$events_loc.leads.tab[$events_slct.exhibit_id]}
|
||||
name="tab_start"
|
||||
@@ -585,6 +614,34 @@ export let get_event_exhibit_tracking_export = async function get_event_exhibit_
|
||||
Main
|
||||
</Tab>
|
||||
|
||||
<!-- Add/Scan - For adding attendee leads by manually adding their ID or scanning their QR code. -->
|
||||
<Tab
|
||||
bind:group={$events_loc.leads.tab[$events_slct.exhibit_id]}
|
||||
name="tab_add_scan"
|
||||
value={'add_scan'}
|
||||
disabled={!$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' : ''}
|
||||
>
|
||||
<svelte:fragment slot="lead">
|
||||
<span class="fas fa-qrcode"></span>
|
||||
</svelte:fragment>
|
||||
Add/Scan
|
||||
</Tab>
|
||||
|
||||
<!-- Leads - For viewing and managing the leads that have been collected. -->
|
||||
<Tab
|
||||
bind:group={$events_loc.leads.tab[$events_slct.exhibit_id]}
|
||||
name="tab_leads"
|
||||
value={'leads'}
|
||||
disabled={!$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' : ''}
|
||||
>
|
||||
<svelte:fragment slot="lead">
|
||||
<span class="fas fa-users"></span>
|
||||
</svelte:fragment>
|
||||
Leads
|
||||
</Tab>
|
||||
|
||||
<!-- Manage - For changing the settings, exporting, and other. -->
|
||||
<Tab
|
||||
bind:group={$events_loc.leads.tab[$events_slct.exhibit_id]}
|
||||
@@ -598,19 +655,6 @@ export let get_event_exhibit_tracking_export = async function get_event_exhibit_
|
||||
</svelte:fragment>
|
||||
Manage
|
||||
</Tab>
|
||||
|
||||
<Tab
|
||||
bind:group={$events_loc.leads.tab[$events_slct.exhibit_id]}
|
||||
name="tab_add_scan"
|
||||
value={'add_scan'}
|
||||
disabled={!$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' : ''}
|
||||
>
|
||||
<svelte:fragment slot="lead">
|
||||
<span class="fas fa-qrcode"></span>
|
||||
</svelte:fragment>
|
||||
Add/Scan
|
||||
</Tab>
|
||||
</TabGroup>
|
||||
|
||||
|
||||
@@ -642,17 +686,17 @@ export let get_event_exhibit_tracking_export = async function get_event_exhibit_
|
||||
</button>
|
||||
{:else}
|
||||
<span class="fas fa-times text-red-500"></span>
|
||||
No license key selected.
|
||||
No license key selected
|
||||
{/if}
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
{#if $events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id] && $events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id].key}
|
||||
<p>
|
||||
<p class="border-2 border-primary p-2 variant-soft-secondary">
|
||||
You are logged in using the shared exhibit staff passcode and are using the license key for {$events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id].key}. Any leads you collect will be associated with this license key (email address).
|
||||
</p>
|
||||
{:else if $events_loc?.leads.auth_exhibit_kv[$events_slct.exhibit_id]}
|
||||
<p>To use the lead retrieval service, please select a license from the list below.</p>
|
||||
<p class="border-2 border-primary p-2 variant-soft-secondary">To use the lead retrieval service, please select a license from the list below. You may need to add one first.</p>
|
||||
{:else}
|
||||
<p>To access this exhibit you must enter the shared staff passcode that you were given. You will then be able to select a license and use the lead retrieval service from your device.</p>
|
||||
<label class="label variant-glass-warning p-2 px-4 m-2 rounded-full font-bold">Shared exhibit passcode:
|
||||
@@ -676,16 +720,17 @@ export let get_event_exhibit_tracking_export = async function get_event_exhibit_
|
||||
<h2 class="h3">License List (max {$event_exhibit_obj?.license_max})</h2>
|
||||
|
||||
|
||||
{#if $event_exhibit_obj?.license_li_json && $event_exhibit_obj?.license_li_json.length < $event_exhibit_obj?.license_max}
|
||||
{#if !Array.isArray($event_exhibit_obj.license_li_json) || (Array.isArray($event_exhibit_obj.license_li_json) && $event_exhibit_obj?.license_li_json.length < $event_exhibit_obj?.license_max)}
|
||||
<button
|
||||
class="btn btn-sm variant-soft-primary w-40"
|
||||
on:click={() => {
|
||||
// let tmp_obj = $event_exhibit_obj;
|
||||
$events_sess.leads.tmp_license = {
|
||||
// 'index': $event_exhibit_obj?.license_li_json.length, // This is the index of the new license in the list.
|
||||
'email': 'test+z@oneskyit.com',
|
||||
'full_name': 'Scott X',
|
||||
'passcode': 'abcdefg',
|
||||
'email': '', // test+z@oneskyit.com
|
||||
'full_name': '', // Scott X
|
||||
// The passcode should default to a random 5 digit number.
|
||||
'passcode': Math.random().toString(36).substring(2, 8),
|
||||
'max_reuse': 0,
|
||||
'updated_on': new Date().toISOString()
|
||||
};
|
||||
@@ -733,6 +778,7 @@ export let get_event_exhibit_tracking_export = async function get_event_exhibit_
|
||||
|
||||
<!-- <div class="ae_h_scrollfix"> -->
|
||||
|
||||
{#if Array.isArray($event_exhibit_obj.license_li_json) && $event_exhibit_obj.license_li_json.length > 0}
|
||||
<table class="table table-compact table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
@@ -939,6 +985,9 @@ export let get_event_exhibit_tracking_export = async function get_event_exhibit_
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
{:else}
|
||||
<div class="variant-soft-warning">No licenses found. Add a license above.</div>
|
||||
{/if} <!-- Array.isArray(result.license_li_json) -->
|
||||
<!-- </div> --> <!-- .ae_h_scrollfix -->
|
||||
|
||||
</form>
|
||||
@@ -950,176 +999,6 @@ export let get_event_exhibit_tracking_export = async function get_event_exhibit_
|
||||
</section> <!-- .tab__start -->
|
||||
|
||||
|
||||
<!-- BEGIN Tab: Manage -->
|
||||
{:else if $events_loc.leads.tab[$events_slct.exhibit_id] == 'manage'}
|
||||
|
||||
|
||||
<section class="tab__manage flex flex-col wrap justify-center items-center space-y-4 ae_h_scrollfix">
|
||||
|
||||
<h2 class="h3">
|
||||
<!-- <span class="fas fa-download"></span> -->
|
||||
Login and License
|
||||
</h2>
|
||||
|
||||
{#if $events_loc?.leads.auth_exhibit_kv[$events_slct.exhibit_id].key}
|
||||
|
||||
<div>
|
||||
<strong>Logged in and using license for:</strong>
|
||||
{#if $event_exhibit_obj?.license_li_json}
|
||||
<!-- <div class="flex flex-row wrap gap-1"> -->
|
||||
{#each $event_exhibit_obj?.license_li_json as license, index}
|
||||
{#if license.email === $events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id].key}
|
||||
<div class="flex flex-row items-center space-x-2">
|
||||
<span class="ae_label">Name:</span>
|
||||
<span class="ae_value">{license.full_name}</span>
|
||||
</div>
|
||||
{/if}
|
||||
{/each}
|
||||
<!-- </div> -->
|
||||
{/if}
|
||||
<div class="flex flex-row items-center space-x-2">
|
||||
<span class="ae_label">Email:</span>
|
||||
<span class="ae_value">{$events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id].key}
|
||||
</div>
|
||||
<div class="flex flex-row items-center space-x-2">
|
||||
<span class="ae_label">Started:</span>
|
||||
<span class="ae_value">{ae_util.iso_datetime_formatter($events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id].updated_on, 'datetime_long')}</span>
|
||||
</div>
|
||||
<!-- Show the full_name of the person associated with that license key email address. The license information is stored in an array. The license key is not the index number value in the array. Ideally I was planning to make the key the email address, not an array index number. -->
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-sm variant-soft-warning w-48"
|
||||
on:click={() => {
|
||||
$events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id].key = null;
|
||||
}}
|
||||
>
|
||||
<span class="fas fa-times mx-1"></span>
|
||||
Clear License
|
||||
</button>
|
||||
|
||||
<button
|
||||
type="button"
|
||||
on:click={() => {
|
||||
console.log('Log Out');
|
||||
$events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id] = null;
|
||||
}}
|
||||
title="Log out"
|
||||
class="btn btn-sm variant-soft-warning w-48"
|
||||
>
|
||||
<span class="fas fa-sign-out-alt mx-1"></span>
|
||||
Log Out
|
||||
</button>
|
||||
</div>
|
||||
|
||||
{:else if $events_loc?.leads.auth_exhibit_kv[$events_slct.exhibit_id]}
|
||||
<div class="variant-soft-warning">You are logged in using the shared passcode for the exhibit. You will want to select a license to fully use this lead retrieval service. Please go to the Main tab and select a license to use.</div>
|
||||
|
||||
<button
|
||||
type="button"
|
||||
on:click={() => {
|
||||
console.log('Log Out');
|
||||
$events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id] = null;
|
||||
}}
|
||||
title="Log out"
|
||||
class="btn btn-sm variant-soft-warning w-48"
|
||||
>
|
||||
<span class="fas fa-sign-out-alt mx-1"></span>
|
||||
Log Out
|
||||
</button>
|
||||
{:else}
|
||||
<div class="variant-soft-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}
|
||||
|
||||
|
||||
{#if $events_loc?.leads.auth_exhibit_kv[$events_slct.exhibit_id].key}
|
||||
|
||||
|
||||
<hr class="border w-full">
|
||||
|
||||
<h2 class="h3">
|
||||
<!-- <span class="fas fa-download"></span> -->
|
||||
Export Data
|
||||
</h2>
|
||||
|
||||
<p>Use this to export the leads data for this exhibit to an Excel file format. The data can be downloaded at anytime using the export button below.</p>
|
||||
<button
|
||||
type="button"
|
||||
on:click={() => {
|
||||
if (!confirm('Download exported data Excel file?')) {
|
||||
return false;
|
||||
}
|
||||
get_event_exhibit_tracking_export({ 'event_exhibit_id': $events_slct.exhibit_id, file_type: 'Excel', 'return_file': true, filename: `lead_retrieval_export_${$events_slct.exhibit_obj.name.replaceAll(' ', '_')}.xlsx`, auto_download: true, log_lvl: 2 });
|
||||
// .replace(' ', '_')
|
||||
|
||||
}}
|
||||
disabled={true}
|
||||
class="btn btn-sm variant-soft-primary w-48 mb-1 export_data_btn"
|
||||
title={`TEMPORARILY DISABLED: Download leads data for ${$events_slct.exhibit_obj.name}`}
|
||||
>
|
||||
<span class="fas fa-download mx-1"></span> Export Data
|
||||
</button>
|
||||
|
||||
{/if} <!-- $events_loc?.leads.auth_exhibit_kv[$events_slct.exhibit_id].key -->
|
||||
|
||||
|
||||
<hr class="border w-full">
|
||||
|
||||
<h2 class="h3">
|
||||
<!-- <span class="fas fa-cogs"></span> -->
|
||||
Additional Settings
|
||||
</h2>
|
||||
|
||||
{#if $events_loc?.leads.auth_exhibit_kv[$events_slct.exhibit_id]}
|
||||
|
||||
Turn on iframe mode:
|
||||
<button
|
||||
type="button"
|
||||
on:click={() => {
|
||||
console.log('Turn on iframe mode');
|
||||
$ae_loc.iframe = !$ae_loc.iframe;
|
||||
}}
|
||||
class="btn btn-sm variant-soft w-48"
|
||||
>
|
||||
<span class="fas fa-compress mx-1"></span>
|
||||
Turn {$ae_loc.iframe ? 'off' : 'on'} iframe mode
|
||||
</button>
|
||||
|
||||
Show or hide additional details:
|
||||
<button
|
||||
type="button"
|
||||
on:click={() => {
|
||||
console.log('Show/Hide Details');
|
||||
$events_loc.show_details = !$events_loc.show_details;
|
||||
}}
|
||||
class="btn btn-sm variant-soft w-48"
|
||||
>
|
||||
<span class="fas fa-eye mx-1"></span>
|
||||
Show/Hide Details
|
||||
</button>
|
||||
|
||||
<!-- {#if $events_loc?.leads.auth_exhibit_kv && $events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id]}
|
||||
<button
|
||||
type="button"
|
||||
on:click={() => {
|
||||
console.log('Log Out');
|
||||
$events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id] = null;
|
||||
}}
|
||||
title="Log out"
|
||||
class="btn variant-soft-primary w-48"
|
||||
>
|
||||
<span class="fas fa-sign-out-alt mx-1"></span>
|
||||
Log Out
|
||||
</button>
|
||||
<p>To use the lead retrieval service, please select a license from the list on the Main tab.</p>
|
||||
{/if} -->
|
||||
|
||||
{:else}
|
||||
<div>You must be logged in to view this tab.</div>
|
||||
{/if} <!-- $events_loc?.leads.auth_exhibit_kv && $events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id] -->
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<!-- BEGIN Tab: Add/Scan -->
|
||||
{:else if $events_loc.leads.tab[$events_slct.exhibit_id] == 'add_scan'}
|
||||
|
||||
@@ -1135,6 +1014,78 @@ export let get_event_exhibit_tracking_export = async function get_event_exhibit_
|
||||
<div class="variant-soft-warning">Please go to the Main tab and select a license to use.</div>
|
||||
{/if}
|
||||
|
||||
<div class="variant-soft-warning">This section is not enabled for ISHLT 2024 at this time. The ability to add a lead by scanning the attendee's QR code or by searching for their name, will be enabled before the ISHLT 2024 Annual Meeting in Prague.</div>
|
||||
|
||||
<p>
|
||||
<!-- This page is used to test QR scanning with your device. -->
|
||||
{#if $ae_loc.hub.qr.camera_status == 'unknown'}
|
||||
<strong>You will need to allow access to your device's camera when asked.</strong>
|
||||
{:else if $ae_loc.hub.qr.camera_status == 'denied'}
|
||||
<strong>You need to allow access to your device's camera. Currently this seems to be blocked or denied for this site.</strong>
|
||||
Please check your browser's permissions.
|
||||
{/if}
|
||||
</p>
|
||||
|
||||
|
||||
<span>
|
||||
<button
|
||||
class="btn btn_md variant-soft-primary mx-1 add_person_qr_btn"
|
||||
on:click={() => {
|
||||
// $slct.event_exhibit_tracking_id = null;
|
||||
// $slct.event_exhibit_tracking_obj = null;
|
||||
// show_add_qr = true;
|
||||
// qr_scan_obj = null;
|
||||
// event_exhibit_tracking_obj_create_promise = null;
|
||||
}}
|
||||
disabled={true}
|
||||
title="Scan a QR code to add a person to the leads list."
|
||||
>
|
||||
<span class="fas fa-qrcode mx-1"></span>
|
||||
Scan to Add Person
|
||||
</button>
|
||||
|
||||
<button
|
||||
class="btn btn_md variant-soft-primary mx-1 add_person_search_btn"
|
||||
on:click={() => {
|
||||
// $slct.event_exhibit_tracking_id = null;
|
||||
// $slct.event_exhibit_tracking_obj = null;
|
||||
// show_add_search = true;
|
||||
// qr_scan_obj = null;
|
||||
// event_exhibit_tracking_obj_create_promise = null;
|
||||
}}
|
||||
disabled={true}
|
||||
title="Search for a person to add to the leads list."
|
||||
>
|
||||
<span class="fas fa-search mx-1"></span>
|
||||
Search to Add Person
|
||||
</button>
|
||||
</span>
|
||||
|
||||
<span class="float-right">
|
||||
{#if ($events_loc.leads.show_content__scan_requirements)}
|
||||
<button class="btn btn-sm variant-soft-secondary" on:click={() => $events_loc.leads.show_content__scan_requirements=false}><span class="fas fa-info mx-1"></span> Hide Requirements</button>
|
||||
{:else if (!$events_loc.leads.show_content__scan_requirements)}
|
||||
<button class="btn btn-sm variant-soft-secondary" on:click={() => $events_loc.leads.show_content__scan_requirements=true}><span class="fas fa-info mx-1"></span> Requirements</button>
|
||||
{/if}
|
||||
</span>
|
||||
|
||||
{#if $events_loc.leads.show_content__scan_requirements}
|
||||
<div class="border-2 border-primary p-2 variant-soft-secondary">
|
||||
<p>You will need a device with a camera to scan the QR codes. You will also of course need one or more valid QR codes to scan.
|
||||
<!-- <button class="ae_btn btn_sm" on:click={() => show='qr_codes'}><span class="fas fa-qrcode"></span> Example QR Codes</button> -->
|
||||
</p>
|
||||
<ul class="list-disc list-inside">
|
||||
<li>Most laptops, workstations, Android phones/tablets, iPhones, and iPads are compatible</li>
|
||||
<li>The device must have a current (within the last 4 years) web browser such as Google Chrome, Mozilla Firefox, Apple's Safari, or Microsoft Edge. Opera is not yet fully supported.</li>
|
||||
<li>There is no Android or Apple app that needs to be installed!</li>
|
||||
<li>The device must have a camera for scanning or you will need to manually enter attendee badge IDs.</li>
|
||||
<li>The only permission you need to allow is access to your device's camera when asked.</li>
|
||||
</ul>
|
||||
</div>
|
||||
{:else}
|
||||
<!-- <button class="ae_btn btn_sm btn_info" on:click={() => show_requirements=true}><span class="fas fa-eye"></span> Requirements</button> -->
|
||||
{/if}
|
||||
|
||||
<!-- <div class=""> -->
|
||||
<Element_qr_scanner show_qr_scan_result={true} show_qr_manual_badge_id_entry_option={true} on:qr_scan_result={handle_qr_scan_result} on:qr_camera={handle_qr_camera} />
|
||||
<!-- </div> -->
|
||||
@@ -1149,8 +1100,33 @@ export let get_event_exhibit_tracking_export = async function get_event_exhibit_
|
||||
|
||||
</section>
|
||||
|
||||
{/if} <!-- $events_loc.leads.tab[$events_slct.exhibit_id] -->
|
||||
|
||||
<!-- BEGIN Tab: Leads -->
|
||||
{:else if $events_loc.leads.tab[$events_slct.exhibit_id] == 'leads'}
|
||||
|
||||
|
||||
<h2 class="h3">Leads for {$event_exhibit_obj.name}</h2>
|
||||
<div class="variant-soft-warning">This section is not currently enabled.</div>
|
||||
<!-- <Leads_list /> -->
|
||||
|
||||
|
||||
|
||||
<!-- BEGIN Tab: Manage -->
|
||||
{:else if $events_loc.leads.tab[$events_slct.exhibit_id] == 'manage'}
|
||||
|
||||
|
||||
<Leads_manage />
|
||||
|
||||
|
||||
<!-- BEGIN Tab: Payment -->
|
||||
{:else if $events_loc.leads.tab[$events_slct.exhibit_id] == 'payment'}
|
||||
|
||||
|
||||
<Leads_payment />
|
||||
|
||||
|
||||
{/if} <!-- $events_loc.leads.tab[$events_slct.exhibit_id] -->
|
||||
<!-- End of tab content -->
|
||||
|
||||
{/if} <!-- $events_slct.exhibit_id && $event_exhibit_obj -->
|
||||
|
||||
@@ -1288,7 +1264,7 @@ export let get_event_exhibit_tracking_export = async function get_event_exhibit_
|
||||
</div>
|
||||
|
||||
<div class="popover__status">
|
||||
Something text
|
||||
<!-- Something text -->
|
||||
{#await license_submit_results}
|
||||
<div class="modal-loading">
|
||||
<span class="fas fa-spinner fa-spin"></span>
|
||||
|
||||
198
src/routes/events_leads/exhibit/[slug]/leads_manage.svelte
Normal file
198
src/routes/events_leads/exhibit/[slug]/leads_manage.svelte
Normal file
@@ -0,0 +1,198 @@
|
||||
<script lang="ts">
|
||||
// export let data;
|
||||
// console.log(`ae_events_leads exhibit [slug] leads_manage.svelte data:`, data);
|
||||
|
||||
import { ae_util } from '$lib/ae_utils';
|
||||
import { liveQuery } from "dexie";
|
||||
import { db_events } from "$lib/db_events";
|
||||
import { ae_loc, ae_sess, ae_api, slct, slct_trigger } from '$lib/ae_stores';
|
||||
import { events_loc, events_sess, events_slct, events_trigger } from '$lib/ae_events_stores';
|
||||
|
||||
// let param_slug_event_exhibit_id = data.params.slug;
|
||||
|
||||
let event_exhibit_obj = liveQuery(
|
||||
() => db_events.exhibits.get($events_slct.exhibit_id)
|
||||
);
|
||||
|
||||
|
||||
// Updated 2022-04-22
|
||||
export let get_event_exhibit_tracking_export = async function get_event_exhibit_tracking_export({event_exhibit_id, file_type='CSV', return_file=true, filename=null, auto_download=false, params={}, log_lvl=0}) {
|
||||
console.log('*** stores_event_api.js: get_event_exhibit_tracking_export() ***');
|
||||
|
||||
const endpoint = `/event/exhibit/${event_exhibit_id}/tracking/export`;
|
||||
if (file_type == 'CSV' || file_type == 'Excel') {
|
||||
params['file_type'] = file_type;
|
||||
}
|
||||
params['return_file'] = true;
|
||||
|
||||
let event_exhibit_tracking_export_file_get_promise = await api.get_object({api_cfg: ae_api, endpoint: endpoint, params: params, return_blob: true, filename: filename, auto_download: auto_download, log_lvl: log_lvl});
|
||||
// console.log(event_exhibit_tracking_export_file_get_promise);
|
||||
return event_exhibit_tracking_export_file_get_promise;
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<section class="tab__manage flex flex-col wrap justify-center items-center space-y-4 ae_h_scrollfix">
|
||||
|
||||
<h2 class="h3">
|
||||
<!-- <span class="fas fa-download"></span> -->
|
||||
Login and License
|
||||
</h2>
|
||||
|
||||
{#if $events_loc?.leads.auth_exhibit_kv[$events_slct.exhibit_id].key}
|
||||
|
||||
<div>
|
||||
<strong>Logged in and using license for:</strong>
|
||||
{#if $event_exhibit_obj?.license_li_json}
|
||||
<!-- <div class="flex flex-row wrap gap-1"> -->
|
||||
{#each $event_exhibit_obj?.license_li_json as license, index}
|
||||
{#if license.email === $events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id].key}
|
||||
<div class="flex flex-row items-center space-x-2">
|
||||
<span class="ae_label">Name:</span>
|
||||
<span class="ae_value">{license.full_name}</span>
|
||||
</div>
|
||||
{/if}
|
||||
{/each}
|
||||
<!-- </div> -->
|
||||
{/if}
|
||||
<div class="flex flex-row items-center space-x-2">
|
||||
<span class="ae_label">Email:</span>
|
||||
<span class="ae_value">{$events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id].key}
|
||||
</div>
|
||||
<div class="flex flex-row items-center space-x-2">
|
||||
<span class="ae_label">Started:</span>
|
||||
<span class="ae_value">{ae_util.iso_datetime_formatter($events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id].updated_on, 'datetime_long')}</span>
|
||||
</div>
|
||||
<!-- Show the full_name of the person associated with that license key email address. The license information is stored in an array. The license key is not the index number value in the array. Ideally I was planning to make the key the email address, not an array index number. -->
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-sm variant-soft-warning w-48"
|
||||
on:click={() => {
|
||||
$events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id].key = null;
|
||||
}}
|
||||
>
|
||||
<span class="fas fa-times mx-1"></span>
|
||||
Clear License
|
||||
</button>
|
||||
|
||||
<button
|
||||
type="button"
|
||||
on:click={() => {
|
||||
console.log('Log Out');
|
||||
$events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id] = null;
|
||||
}}
|
||||
title="Log out"
|
||||
class="btn btn-sm variant-soft-warning w-48"
|
||||
>
|
||||
<span class="fas fa-sign-out-alt mx-1"></span>
|
||||
Log Out
|
||||
</button>
|
||||
</div>
|
||||
|
||||
{:else if $events_loc?.leads.auth_exhibit_kv[$events_slct.exhibit_id]}
|
||||
<div class="variant-soft-warning">You are logged in using the shared passcode for the exhibit. You will want to select a license to fully use this lead retrieval service. Please go to the Main tab and select a license to use.</div>
|
||||
|
||||
<button
|
||||
type="button"
|
||||
on:click={() => {
|
||||
console.log('Log Out');
|
||||
$events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id] = null;
|
||||
}}
|
||||
title="Log out"
|
||||
class="btn btn-sm variant-soft-warning w-48"
|
||||
>
|
||||
<span class="fas fa-sign-out-alt mx-1"></span>
|
||||
Log Out
|
||||
</button>
|
||||
{:else}
|
||||
<div class="variant-soft-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}
|
||||
|
||||
|
||||
{#if $events_loc?.leads.auth_exhibit_kv[$events_slct.exhibit_id].key}
|
||||
|
||||
|
||||
<hr class="border w-full">
|
||||
|
||||
<h2 class="h3">
|
||||
<!-- <span class="fas fa-download"></span> -->
|
||||
Export Data
|
||||
</h2>
|
||||
|
||||
<p>Use this to export the leads data for this exhibit to an Excel file format. The data can be downloaded at anytime using the export button below.</p>
|
||||
<button
|
||||
type="button"
|
||||
on:click={() => {
|
||||
if (!confirm('Download exported data Excel file?')) {
|
||||
return false;
|
||||
}
|
||||
get_event_exhibit_tracking_export({ 'event_exhibit_id': $events_slct.exhibit_id, file_type: 'Excel', 'return_file': true, filename: `lead_retrieval_export_${$events_slct.exhibit_obj.name.replaceAll(' ', '_')}.xlsx`, auto_download: true, log_lvl: 2 });
|
||||
// .replace(' ', '_')
|
||||
|
||||
}}
|
||||
disabled={true}
|
||||
class="btn btn-sm variant-soft-primary w-48 mb-1 export_data_btn"
|
||||
title={`TEMPORARILY DISABLED: Download leads data for ${$events_slct.exhibit_obj.name}`}
|
||||
>
|
||||
<span class="fas fa-download mx-1"></span> Export Data
|
||||
</button>
|
||||
|
||||
{/if} <!-- $events_loc?.leads.auth_exhibit_kv[$events_slct.exhibit_id].key -->
|
||||
|
||||
|
||||
<hr class="border w-full">
|
||||
|
||||
<h2 class="h3">
|
||||
<!-- <span class="fas fa-cogs"></span> -->
|
||||
Additional Settings
|
||||
</h2>
|
||||
|
||||
{#if $events_loc?.leads.auth_exhibit_kv[$events_slct.exhibit_id]}
|
||||
|
||||
Turn on iframe mode:
|
||||
<button
|
||||
type="button"
|
||||
on:click={() => {
|
||||
console.log('Turn on iframe mode');
|
||||
$ae_loc.iframe = !$ae_loc.iframe;
|
||||
}}
|
||||
class="btn btn-sm variant-soft w-48"
|
||||
>
|
||||
<span class="fas fa-compress mx-1"></span>
|
||||
Turn {$ae_loc.iframe ? 'off' : 'on'} iframe mode
|
||||
</button>
|
||||
|
||||
Show or hide additional details:
|
||||
<button
|
||||
type="button"
|
||||
on:click={() => {
|
||||
console.log('Show/Hide Details');
|
||||
$events_loc.show_details = !$events_loc.show_details;
|
||||
}}
|
||||
class="btn btn-sm variant-soft w-48"
|
||||
>
|
||||
<span class="fas fa-eye mx-1"></span>
|
||||
Show/Hide Details
|
||||
</button>
|
||||
|
||||
<!-- {#if $events_loc?.leads.auth_exhibit_kv && $events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id]}
|
||||
<button
|
||||
type="button"
|
||||
on:click={() => {
|
||||
console.log('Log Out');
|
||||
$events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id] = null;
|
||||
}}
|
||||
title="Log out"
|
||||
class="btn variant-soft-primary w-48"
|
||||
>
|
||||
<span class="fas fa-sign-out-alt mx-1"></span>
|
||||
Log Out
|
||||
</button>
|
||||
<p>To use the lead retrieval service, please select a license from the list on the Main tab.</p>
|
||||
{/if} -->
|
||||
|
||||
{:else}
|
||||
<div>You must be logged in to view this tab.</div>
|
||||
{/if} <!-- $events_loc?.leads.auth_exhibit_kv && $events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id] -->
|
||||
|
||||
</section>
|
||||
124
src/routes/events_leads/exhibit/[slug]/leads_payment.svelte
Normal file
124
src/routes/events_leads/exhibit/[slug]/leads_payment.svelte
Normal file
@@ -0,0 +1,124 @@
|
||||
<script lang="ts">
|
||||
// export let data;
|
||||
// console.log(`ae_events_leads exhibit [slug] leads_payment.svelte data:`, data);
|
||||
|
||||
import { ae_util } from '$lib/ae_utils';
|
||||
import { liveQuery } from "dexie";
|
||||
import { db_events } from "$lib/db_events";
|
||||
import { ae_loc, ae_sess, ae_api, slct, slct_trigger } from '$lib/ae_stores';
|
||||
import { events_loc, events_sess, events_slct, events_trigger } from '$lib/ae_events_stores';
|
||||
|
||||
// let param_slug_event_exhibit_id = data.params.slug;
|
||||
|
||||
let event_exhibit_obj = liveQuery(
|
||||
() => db_events.exhibits.get($events_slct.exhibit_id)
|
||||
);
|
||||
|
||||
|
||||
</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>
|
||||
|
||||
{#if $events_loc?.leads.auth_exhibit_kv[$events_slct.exhibit_id]}
|
||||
{#if $event_exhibit_obj?.paid}
|
||||
<h3 class="h4">Paid</h3>
|
||||
{:else}
|
||||
<h3 class="h4">Not Paid</h3>
|
||||
|
||||
<script async
|
||||
src="https://js.stripe.com/v3/buy-button.js">
|
||||
</script>
|
||||
|
||||
<!-- <div class="fle"> -->
|
||||
|
||||
<div>
|
||||
1 user license<br>
|
||||
<stripe-buy-button
|
||||
buy-button-id="buy_btn_1OvqWJ2gJkNsDuiNqMCWz5nG"
|
||||
publishable-key="pk_live_zqaWNDfak2eDHeqnRiyaJcFi"
|
||||
>
|
||||
</stripe-buy-button>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
1 user license with tablet rental<br>
|
||||
<stripe-buy-button
|
||||
buy-button-id="buy_btn_1OvqVA2gJkNsDuiNhk9r8Io2"
|
||||
publishable-key="pk_live_zqaWNDfak2eDHeqnRiyaJcFi"
|
||||
>
|
||||
</stripe-buy-button>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
Up to 3 user licenses<br>
|
||||
<stripe-buy-button
|
||||
buy-button-id="buy_btn_1OvrI22gJkNsDuiNXjBg3c4Y"
|
||||
publishable-key="pk_live_zqaWNDfak2eDHeqnRiyaJcFi"
|
||||
>
|
||||
</stripe-buy-button>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
Up to 3 user licenses with tablet rental<br>
|
||||
<stripe-buy-button
|
||||
buy-button-id="buy_btn_1OvrKa2gJkNsDuiNhSBCkNau"
|
||||
publishable-key="pk_live_zqaWNDfak2eDHeqnRiyaJcFi"
|
||||
>
|
||||
</stripe-buy-button>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<div>
|
||||
Up to 6 user licenses<br>
|
||||
<stripe-buy-button
|
||||
buy-button-id="buy_btn_1OvrWc2gJkNsDuiN7mnwvZNL"
|
||||
publishable-key="pk_live_zqaWNDfak2eDHeqnRiyaJcFi"
|
||||
>
|
||||
</stripe-buy-button>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
Up to 6 user licenses with tablet rental<br>
|
||||
<stripe-buy-button
|
||||
buy-button-id="buy_btn_1OvrXP2gJkNsDuiNZpWZs3Uy"
|
||||
publishable-key="pk_live_zqaWNDfak2eDHeqnRiyaJcFi"
|
||||
>
|
||||
</stripe-buy-button>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
Up to 10 user licenses<br>
|
||||
<stripe-buy-button
|
||||
buy-button-id="buy_btn_1OvrPM2gJkNsDuiNRCMHfSuz"
|
||||
publishable-key="pk_live_zqaWNDfak2eDHeqnRiyaJcFi"
|
||||
>
|
||||
</stripe-buy-button>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
Up to 10 user licenses with tablet rental<br>
|
||||
<stripe-buy-button
|
||||
buy-button-id="buy_btn_1OvrPs2gJkNsDuiN1nPkjPOM"
|
||||
publishable-key="pk_live_zqaWNDfak2eDHeqnRiyaJcFi"
|
||||
>
|
||||
</stripe-buy-button>
|
||||
</div>
|
||||
|
||||
<!-- </div> -->
|
||||
|
||||
{/if}
|
||||
|
||||
{:else}
|
||||
<div class="variant-soft-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>
|
||||
@@ -13,10 +13,10 @@ export async function load({ params, url }) { // route
|
||||
// console.log(`Svelte Events Speakers layout.ts data = url:`, url);
|
||||
|
||||
let ae_loc_tmp = get(ae_loc);
|
||||
console.log(`ae_loc = `, ae_loc_tmp);
|
||||
// console.log(`ae_loc = `, ae_loc_tmp);
|
||||
|
||||
let ds_code_li: null|key_val = ae_loc_tmp.ds;
|
||||
console.log(`ae_ ds_code_li = `, ds_code_li);
|
||||
// console.log(`ae_ ds_code_li = `, ds_code_li);
|
||||
let ds_code: null|string = null;
|
||||
let ds_type: null|string = null;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user