296 lines
9.8 KiB
Svelte
296 lines
9.8 KiB
Svelte
<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'));
|
|
|
|
import { onMount } from 'svelte';
|
|
import { goto, invalidate, pushState, replaceState } from '$app/navigation';
|
|
|
|
import { ae_util } from '$lib/ae_utils';
|
|
import { api } from '$lib/api';
|
|
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';
|
|
|
|
import Element_data_store from '$lib/element_data_store.svelte';
|
|
|
|
|
|
let event_exhibit_obj_li = liveQuery(
|
|
// () => db_events.exhibits.toArray()
|
|
() => db_events.exhibits
|
|
.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()
|
|
);
|
|
|
|
// This should probably be moved
|
|
// if (data.url.searchParams.get('event_id')) {
|
|
// $events_slct.event_id = data.url.searchParams.get('event_id');
|
|
// } else if (data.ae_loc.site_cfg_json.slct__event_id) {
|
|
// $events_slct.event_id = data.ae_loc.site_cfg_json.slct__event_id;
|
|
// } else if ($events_loc.default__event_id) {
|
|
// $events_slct.event_id = $events_loc.default__event_id;
|
|
// } else if ($events_slct.event_id) {
|
|
// console.log(`Event ID already set:`, $events_slct.event_id);
|
|
// } else {
|
|
// console.log(`No Event ID set.`);
|
|
// }
|
|
|
|
// 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);
|
|
|
|
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);
|
|
// }
|
|
});
|
|
|
|
|
|
$: if ($events_loc.leads.auth_exhibit_kv && $events_slct.exhibit_obj && $events_slct.exhibit_obj.event_exhibit_id_random && $events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_obj.event_exhibit_id_random]) {
|
|
disable_open_lead_retrieval_btn = false;
|
|
disable_reset_passcode_btn = false;
|
|
|
|
$events_sess.leads.open_href = `/events_leads/exhibit/${$events_slct.exhibit_obj.id_random}`;
|
|
|
|
if ($events_loc.leads.auto_view) {
|
|
goto($events_sess.leads.open_href, {invalidateAll: true});
|
|
}
|
|
} else {
|
|
disable_open_lead_retrieval_btn = true;
|
|
disable_reset_passcode_btn = true;
|
|
}
|
|
|
|
|
|
$: if ($events_sess.leads.entered_passcode && $events_sess.leads.entered_passcode >= 5) {
|
|
// disable_open_lead_retrieval_btn = false;
|
|
// Convert the passcode to a string before checking it.
|
|
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();
|
|
}
|
|
|
|
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.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;
|
|
|
|
// 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;
|
|
}
|
|
|
|
$events_sess.leads.entered_passcode = null;
|
|
$events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id] = {
|
|
key: null,
|
|
updated_on: new Date().toISOString()
|
|
};
|
|
|
|
// 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 open_exhibit_tracking(event_exhibit_id_random) {
|
|
// console.log(`open_exhibit_tracking() event_exhibit_id_random=${event_exhibit_id_random}`);
|
|
|
|
// if (!event_exhibit_id_random) {
|
|
// console.log('No event exhibit ID provided.');
|
|
// return null;
|
|
// }
|
|
|
|
// if ($events_loc.leads.auto_view) {
|
|
// goto($events_sess.leads.open_href, {invalidateAll: true});
|
|
// } else {
|
|
// }
|
|
// }
|
|
</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>
|
|
|
|
<Element_data_store
|
|
ds_code="events__leads__overview"
|
|
ds_type="html"
|
|
for_type="event"
|
|
for_id={$events_slct.event_id}
|
|
display="block"
|
|
class_li="variant-ghost-secondary 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>
|
|
{#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>
|
|
</li>
|
|
{/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>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">
|
|
<!-- <span class="label">Exhibit List:</span> -->
|
|
<select
|
|
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="container_group m-2">
|
|
|
|
<input
|
|
type="number"
|
|
bind:value={$events_sess.leads.entered_passcode}
|
|
class="input w-40 m-1"
|
|
placeholder="Exhibit passcode"
|
|
/>
|
|
|
|
<button
|
|
type="submit"
|
|
disabled={disable_open_lead_retrieval_btn}
|
|
class="btn variant-ghost-primary m-1 open_lead_retrieval_btn"
|
|
>
|
|
<span class="fas fa-arrow-right mx-1"></span> Open Exhibitor Lead Retrieval
|
|
</button>
|
|
|
|
<!-- <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>
|
|
|
|
{#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" />
|
|
|
|
<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 variant-ghost-warning reset_passcode_btn"
|
|
>
|
|
<span class="fas fa-undo mx-1"></span> Reset Passcode
|
|
</button>
|
|
</span>
|
|
</div>
|
|
{/if}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<!-- <button
|
|
type="button"
|
|
on:click={() => {
|
|
console.log(`Goto Button Clicked`);
|
|
// goto($events_sess.leads.open_href, {invalidateAll: true});
|
|
goto('?key=value');
|
|
}}
|
|
class="btn variant-filled-secondary"
|
|
>
|
|
Test Goto Button
|
|
</button> -->
|
|
|
|
|
|
{/if}
|
|
|
|
<!-- <Element_data_store
|
|
ds_code="events__leads__example"
|
|
ds_type="html"
|
|
for_type="event"
|
|
for_id={$events_slct.event_id}
|
|
ds_name="Default: Events Leads Example"
|
|
store="local"
|
|
display="block"
|
|
class_li="variant-ghost-surface p-2"
|
|
try_cache={true}
|
|
show_edit={false}
|
|
/> -->
|
|
|
|
</section>
|
|
|
|
|
|
<style lang="postcss">
|
|
</style>
|