|
|
|
|
@@ -15,7 +15,9 @@ import { ae_loc, ae_sess, ae_api, ae_trig, slct, slct_trigger } from '$lib/ae_st
|
|
|
|
|
import { events_loc, events_sess, events_slct, events_trigger } from '$lib/ae_events_stores';
|
|
|
|
|
|
|
|
|
|
import Element_qr_scanner from '$lib/element_qr_scanner.svelte';
|
|
|
|
|
import { goto } from '$app/navigation';
|
|
|
|
|
import Element_ae_crud from '$lib/element_ae_crud.svelte';
|
|
|
|
|
|
|
|
|
|
import { goto } from '$app/navigation';
|
|
|
|
|
|
|
|
|
|
// 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_badge_li = liveQuery(
|
|
|
|
|
@@ -37,15 +39,22 @@ $ae_loc.site_domain = data.url.origin;
|
|
|
|
|
$events_loc.show_edit__event_badge_obj = false;
|
|
|
|
|
$events_loc.show_view__event_badge_obj = false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// These will likely be used for patch/update triggers. Maybe delete?
|
|
|
|
|
let ae_triggers: key_val = {};
|
|
|
|
|
|
|
|
|
|
let ae_event_badge_get_promise: Promise<any>;
|
|
|
|
|
let ae_event_obj_get_promise;
|
|
|
|
|
|
|
|
|
|
if ($events_slct.event_id) {
|
|
|
|
|
console.log('Selected Event ID:', $events_slct.event_id);
|
|
|
|
|
$events_trigger = 'load__event_badge_obj_li';
|
|
|
|
|
// $events_trigger = 'load__event_badge_obj_li';
|
|
|
|
|
// $events_trigger = 'load__event_obj';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Reset this to an empty array.
|
|
|
|
|
$events_slct.badge_obj_li = [];
|
|
|
|
|
|
|
|
|
|
// ISHLT 2024 badge type codes
|
|
|
|
|
let badge_type_code_li = [{"code":"current_member","name":"Member"},{"code":"inactive_member","name":"Non-Member"},{"code":"current_member_trainee","name":"Trainee Member"},{"code":"inactive_member_trainee","name":"Trainee Non-Member"},{"code":"ex_all","name":"Exhibitor All Access"},{"code":"ex_booth","name":"Exhibitor Booth Staff"},{"code":"hftx","name":"HFTX Master Academy"},{"code":"mcs","name":"MCS Master Academy"},{"code":"pediatric","name":"Pediatric"},{"code":"guest","name":"Guest"},{"code":"staff","name":"Staff"},{"code":"volunteer","name":"Volunteer"},{"code":"test","name":"Test"}];
|
|
|
|
|
|
|
|
|
|
@@ -131,13 +140,14 @@ async function handle_load_ae_obj_id__event_badge({event_badge_id, try_cache=fal
|
|
|
|
|
|
|
|
|
|
// Updated 2024-03-06 late
|
|
|
|
|
$: if ($events_trigger == 'load__event_badge_obj_li' && $events_slct.event_id) {
|
|
|
|
|
console.log(`handle_load_ae_obj_id__event() $events_slct.event_id=${$events_slct.event_id} api_cfg=`, $ae_api);
|
|
|
|
|
console.log(`load__event_badge_obj_li() $events_slct.event_id=${$events_slct.event_id}`);
|
|
|
|
|
|
|
|
|
|
$events_trigger = null;
|
|
|
|
|
|
|
|
|
|
if (!$events_sess.badges.fulltext_search_qry_str) {
|
|
|
|
|
$events_sess.badges.fulltext_search_qry_str = '';
|
|
|
|
|
}
|
|
|
|
|
if (!$events_sess.badges.fulltext_search_qry_str || $events_sess?.badges.fulltext_search_qry_str.length <= 1 ) {
|
|
|
|
|
$events_slct.badge_obj_li = [];
|
|
|
|
|
// $events_sess.badges.fulltext_search_qry_str = '';
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
let type_code = $events_sess.badges.search_badge_type_code;
|
|
|
|
|
|
|
|
|
|
@@ -157,9 +167,25 @@ $: if ($events_trigger == 'load__event_badge_obj_li' && $events_slct.event_id) {
|
|
|
|
|
console.log(`"${search_str}"`);
|
|
|
|
|
|
|
|
|
|
let params = {
|
|
|
|
|
'qry__enabled': 'enabled',
|
|
|
|
|
'qry__hidden': 'not_hidden',
|
|
|
|
|
'qry__limit': 35,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($ae_loc.administrator_access) {
|
|
|
|
|
params['qry__enabled'] = 'all';
|
|
|
|
|
params['qry__hidden'] = 'all';
|
|
|
|
|
params['qry__limit'] = 150;
|
|
|
|
|
} else if ($ae_loc.trusted_access) {
|
|
|
|
|
params['qry__enabled'] = 'enabled';
|
|
|
|
|
params['qry__hidden'] = 'all';
|
|
|
|
|
params['qry__limit'] = 75;
|
|
|
|
|
} else {
|
|
|
|
|
params['qry__enabled'] = 'enabled';
|
|
|
|
|
params['qry__hidden'] = 'not_hidden';
|
|
|
|
|
params['qry__limit'] = 35;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($events_sess.status_qry__search == 'loading') {
|
|
|
|
|
console.log('*** $events_sess.status_qry__search == loading ***');
|
|
|
|
|
|
|
|
|
|
@@ -205,6 +231,8 @@ $: if ($events_trigger == 'load__event_badge_obj_li' && $events_slct.event_id) {
|
|
|
|
|
$events_sess.status_qry__search = 'done';
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} // end if search string is valid
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -299,11 +327,15 @@ function handle_qr_camera(event) {
|
|
|
|
|
class="ae_events_badges_review md:container h-full mx-auto"
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
{#if $ae_loc.ds.hub__page__events_badges__create_info_header}
|
|
|
|
|
{@html $ae_loc.ds.hub__page__events_badges__create_info_header}
|
|
|
|
|
<!-- {#if $ae_loc.ds.hub__page__events_badges__create_info_header} -->
|
|
|
|
|
{#if $ae_loc.iframe}
|
|
|
|
|
<span class="flex flex-row items-center justify-center">
|
|
|
|
|
<img src={$ae_loc.site_cfg_json.header_image_path} alt="header" class="w-auto max-h-20 m-2" />
|
|
|
|
|
<h1 class="h3 text-center m-2">Review & Print<br>Your Badge</h1>
|
|
|
|
|
</span>
|
|
|
|
|
{:else}
|
|
|
|
|
<header>
|
|
|
|
|
<h1 class="h2">Badge Review - Search</h1>
|
|
|
|
|
<h1 class="h2 text-center">Badge Review and Print</h1>
|
|
|
|
|
</header>
|
|
|
|
|
{/if}
|
|
|
|
|
|
|
|
|
|
@@ -311,10 +343,11 @@ function handle_qr_camera(event) {
|
|
|
|
|
|
|
|
|
|
{#if $events_sess.badges.show_form__search}
|
|
|
|
|
<form
|
|
|
|
|
class="form flex-grow flex flex-row flex-wrap gap-1 justify-center items-center w-full"
|
|
|
|
|
on:submit|preventDefault={() => {
|
|
|
|
|
$events_trigger = 'load__event_badge_obj_li';
|
|
|
|
|
}}
|
|
|
|
|
autocomplete="off"
|
|
|
|
|
class="form flex-grow flex flex-row flex-wrap gap-1 justify-center items-center w-full"
|
|
|
|
|
>
|
|
|
|
|
{#if $ae_loc.trusted_access && badge_type_code_li}
|
|
|
|
|
<div class="search_by_badge_type_code">
|
|
|
|
|
@@ -352,12 +385,15 @@ function handle_qr_camera(event) {
|
|
|
|
|
id="badge_fulltext_search_qry_str"
|
|
|
|
|
name="fulltext_search_qry_str"
|
|
|
|
|
bind:value={$events_sess.badges.fulltext_search_qry_str}
|
|
|
|
|
class="input text-1xl hover:text-3xl font-bold font-mono w-96 transition-all"
|
|
|
|
|
class="input text-1xl hover:text-3xl font-bold font-mono w-96 hover:w-2/5 transition-all"
|
|
|
|
|
on:keyup={() => {
|
|
|
|
|
if ($events_sess.badges.fulltext_search_qry_str.length >= 3) {
|
|
|
|
|
$events_trigger = 'load__event_badge_obj_li';
|
|
|
|
|
}
|
|
|
|
|
}}
|
|
|
|
|
autofocus
|
|
|
|
|
suggest="off"
|
|
|
|
|
data-lpignore="true"
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -508,7 +544,10 @@ function handle_qr_camera(event) {
|
|
|
|
|
<tbody>
|
|
|
|
|
{#each $events_slct.badge_obj_li as badge_obj}
|
|
|
|
|
<!-- {#each $lq__event_badge_li as badge_obj} -->
|
|
|
|
|
<tr class="">
|
|
|
|
|
<tr
|
|
|
|
|
class:hidden={(badge_obj.print_count >= 1 || badge_obj.hide) && !$ae_loc.trusted_access}
|
|
|
|
|
class:fade_50={(badge_obj.print_count >= 1 || badge_obj.hide) && $ae_loc.trusted_access}
|
|
|
|
|
>
|
|
|
|
|
<td class="">
|
|
|
|
|
<button
|
|
|
|
|
class="btn btn-xl text-xl variant-ghost-secondary hover:variant-glass-secondary w-96 overflow-hidden transition-all"
|
|
|
|
|
@@ -526,7 +565,11 @@ function handle_qr_camera(event) {
|
|
|
|
|
>
|
|
|
|
|
<span class="flex flex-row justify-between items-center w-full">
|
|
|
|
|
<span>
|
|
|
|
|
<span class="fas fa-id-badge mx-1"></span>
|
|
|
|
|
{#if badge_obj.hide}
|
|
|
|
|
<span class="fas fa-eye-slash mx-1"></span>
|
|
|
|
|
{:else}
|
|
|
|
|
<span class="fas fa-id-badge mx-1"></span>
|
|
|
|
|
{/if}
|
|
|
|
|
{#if badge_obj.print_count >= 1}
|
|
|
|
|
<!-- Show a green checkmark -->
|
|
|
|
|
<span class="fas fa-check text-green-500"></span>
|
|
|
|
|
@@ -583,7 +626,95 @@ function handle_qr_camera(event) {
|
|
|
|
|
</div>
|
|
|
|
|
</td>
|
|
|
|
|
<td class="">
|
|
|
|
|
<div class="flex flex-row items-center justify-between">
|
|
|
|
|
<span title={badge_obj.registration_type}>{badge_obj.badge_type}</span>
|
|
|
|
|
|
|
|
|
|
<div>
|
|
|
|
|
<Element_ae_crud
|
|
|
|
|
trigger_patch={ae_triggers.print_count}
|
|
|
|
|
api_cfg={$ae_api}
|
|
|
|
|
object_type={'event_badge'}
|
|
|
|
|
object_id={badge_obj.event_badge_id_random}
|
|
|
|
|
field_name={'print_count'}
|
|
|
|
|
field_type={'text'}
|
|
|
|
|
field_value={badge_obj.print_count}
|
|
|
|
|
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__badge({api_cfg: $ae_api, badge_id: $events_slct.badge_id});
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
<!-- {@html (badge_obj.print_count ? `<span class="fas fa-users m-1"></span> ${badge_obj.print_count}` : '<span class="fas fa-users m-1"></span> 0')} -->
|
|
|
|
|
{#if $ae_loc.administrator_access}
|
|
|
|
|
<span class="fas fa-print m-1"></span>
|
|
|
|
|
<input
|
|
|
|
|
type="number" min="0" max="10" step="1"
|
|
|
|
|
bind:value={badge_obj.print_count}
|
|
|
|
|
|
|
|
|
|
class="input text-sm w-16 m-1"
|
|
|
|
|
/>
|
|
|
|
|
<button
|
|
|
|
|
type="button"
|
|
|
|
|
on:click={() => {
|
|
|
|
|
// badge_obj.print_count = 0;
|
|
|
|
|
ae_triggers.print_count = true;
|
|
|
|
|
}}
|
|
|
|
|
class="btn btn-sm variant-soft-warning"
|
|
|
|
|
>
|
|
|
|
|
<span class="fas fa-save m-1"></span>
|
|
|
|
|
Save
|
|
|
|
|
</button>
|
|
|
|
|
{/if}
|
|
|
|
|
</Element_ae_crud>
|
|
|
|
|
|
|
|
|
|
<Element_ae_crud
|
|
|
|
|
trigger_patch={ae_triggers.hide}
|
|
|
|
|
api_cfg={$ae_api}
|
|
|
|
|
object_type={'event_badge'}
|
|
|
|
|
object_id={badge_obj?.event_badge_id_random}
|
|
|
|
|
field_name={'hide'}
|
|
|
|
|
field_type={'button'}
|
|
|
|
|
field_value={badge_obj.hide}
|
|
|
|
|
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__badge({api_cfg: $ae_api, badge_id: badge_obj.badge_id_random});
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
<!-- {#if $ae_loc.trusted_access}
|
|
|
|
|
{(badge_obj?.hide ? 'Hidden' : 'Not Hidden')}
|
|
|
|
|
{/if} -->
|
|
|
|
|
<button
|
|
|
|
|
on:click={() => {
|
|
|
|
|
// $events_slct.badge_obj = badge_obj;
|
|
|
|
|
badge_obj.hide = !badge_obj?.hide;
|
|
|
|
|
ae_triggers.hide = true;
|
|
|
|
|
}}
|
|
|
|
|
class="btn btn-sm variant-soft-warning"
|
|
|
|
|
class:hidden={!$ae_loc.trusted_access}
|
|
|
|
|
>
|
|
|
|
|
{#if $ae_loc.trusted_access}
|
|
|
|
|
{@html (badge_obj?.hide ? '<span class="fas fa-eye m-1"></span> Unhide?' : '<span class="fas fa-eye-slash m-1"></span> Hide?')}
|
|
|
|
|
{:else}
|
|
|
|
|
<!-- Users see this as the "Archive" option button -->
|
|
|
|
|
{@html (badge_obj?.hide ? '<span class="fas fa-archive m-1"></span> Unarchive' : '<span class="fas fa-archive m-1"></span> Archive')}
|
|
|
|
|
{/if}
|
|
|
|
|
</button>
|
|
|
|
|
</Element_ae_crud>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
{/each}
|
|
|
|
|
@@ -591,9 +722,15 @@ function handle_qr_camera(event) {
|
|
|
|
|
</table>
|
|
|
|
|
</section>
|
|
|
|
|
{:else}
|
|
|
|
|
<div class="alert alert-info">
|
|
|
|
|
No badges found.
|
|
|
|
|
<div class="text-xl variant-filled-success font-bold p-2">
|
|
|
|
|
Type your name, email, or affiliations and results will start to appear automatically.
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{#if $events_sess.badges.fulltext_search_qry_str && $events_sess.badges.fulltext_search_qry_str.length > 5}
|
|
|
|
|
<div class="text-xl variant-filled-warning font-bold p-2">
|
|
|
|
|
No badges found. Please change your search.
|
|
|
|
|
</div>
|
|
|
|
|
{/if}
|
|
|
|
|
{/if}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|