Stuck and done for the night
This commit is contained in:
@@ -41,8 +41,6 @@ async function handle_load_ae_obj_id__event({api_cfg, event_id, try_cache=false}
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Updated 2024-03-06
|
// Updated 2024-03-06
|
||||||
async function handle_load_ae_obj_li__badge({api_cfg, event_id, params={}, try_cache=true}: {api_cfg: any, event_id: any, params: any, try_cache?: boolean}) {
|
async function handle_load_ae_obj_li__badge({api_cfg, event_id, params={}, try_cache=true}: {api_cfg: any, event_id: any, params: any, try_cache?: boolean}) {
|
||||||
console.log(`*** handle_load_ae_obj_li__badge() *** event_id=${event_id}`);
|
console.log(`*** handle_load_ae_obj_li__badge() *** event_id=${event_id}`);
|
||||||
@@ -123,6 +121,68 @@ async function handle_load_ae_obj_li__badge({api_cfg, event_id, params={}, try_c
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
async function handle_search__event_badge({api_cfg, event_id, fulltext_search_qry_str, params={}, try_cache=true}) {
|
||||||
|
console.log(`*** handle_search__event_badge() *** event_id=${event_id}`);
|
||||||
|
|
||||||
|
let enabled: string = (params.qry__enabled ?? 'enabled'); // all, disabled, enabled
|
||||||
|
let hidden: string = (params.qry__hidden ?? 'not_hidden'); // all, hidden, not_hidden
|
||||||
|
let limit: number = (params.qry__limit ?? 25); // 99
|
||||||
|
let offset: number = (params.qry__offset ?? 0); // 0
|
||||||
|
|
||||||
|
let params_json: key_val = {};
|
||||||
|
if (fulltext_search_qry_str && fulltext_search_qry_str.length > 2) {
|
||||||
|
params_json['ft_qry'] = {
|
||||||
|
'default_qry_str': fulltext_search_qry_str,
|
||||||
|
// 'location_address_json_ext': fulltext_search_qry_str, // JSON extracted text DB field
|
||||||
|
// 'contact_li_json_ext': fulltext_search_qry_str, // JSON extracted text DB field
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// $events_sess.badges.status_qry__search = 'loading';
|
||||||
|
ae_promises.search__event_badge = await api.get_ae_obj_li_for_obj_id_crud({
|
||||||
|
api_cfg: api_cfg,
|
||||||
|
obj_type: 'event_badge',
|
||||||
|
for_obj_type: 'event',
|
||||||
|
for_obj_id: event_id,
|
||||||
|
use_alt_table: false, // NOTE: This will use the table_name_alt value instead of the table_name value in the API config.
|
||||||
|
use_alt_base: false, // NOTE: This will use the base_name_alt value instead of the base_name value in the API config.
|
||||||
|
enabled: enabled,
|
||||||
|
hidden: hidden,
|
||||||
|
order_by_li: {'priority': 'DESC', 'sort': 'DESC', 'updated_on': 'DESC', 'created_on': 'DESC'},
|
||||||
|
// order_by_li: {'priority': 'DESC', 'sort': 'DESC', 'created_on': 'DESC', 'updated_on': 'DESC'},
|
||||||
|
limit: limit,
|
||||||
|
offset: offset,
|
||||||
|
params_json: params_json,
|
||||||
|
params: params,
|
||||||
|
log_lvl: 1
|
||||||
|
})
|
||||||
|
|
||||||
|
.then(function (badge_obj_li_get_result) {
|
||||||
|
// console.log('Badge list:', badge_obj_li_get_result);
|
||||||
|
if (badge_obj_li_get_result) {
|
||||||
|
// $slct.badge_obj_li = badge_obj_li_get_result;
|
||||||
|
handle_db_save_ae_obj_li__badge({obj_type: 'event_badge', obj_li: badge_obj_li_get_result});
|
||||||
|
return badge_obj_li_get_result;
|
||||||
|
} else {
|
||||||
|
// $slct.badge_obj_li = [];
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(function (error) {
|
||||||
|
console.log('No results returned or failed.', error);
|
||||||
|
})
|
||||||
|
.finally(function () {
|
||||||
|
// $events_sess.badges.status_qry__search = 'done';
|
||||||
|
|
||||||
|
// console.log('Badge list:', badge_obj_li_get_result);
|
||||||
|
// return badge_obj_li_get_result;
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log('ae_promises.search__event_badge:', ae_promises.search__event_badge);
|
||||||
|
return ae_promises.search__event_badge;
|
||||||
|
}
|
||||||
|
|
||||||
async function handle_load_ae_obj_id__exhibit({api_cfg, exhibit_id, try_cache=false}) {
|
async function handle_load_ae_obj_id__exhibit({api_cfg, exhibit_id, try_cache=false}) {
|
||||||
console.log(`*** handle_load_ae_obj_id__exhibit() *** exhibit_id=${exhibit_id}`);
|
console.log(`*** handle_load_ae_obj_id__exhibit() *** exhibit_id=${exhibit_id}`);
|
||||||
|
|
||||||
@@ -532,6 +592,7 @@ function handle_db_save_ae_obj_li__exhibitor_tracking({obj_type, obj_li}) {
|
|||||||
let export_obj = {
|
let export_obj = {
|
||||||
handle_load_ae_obj_id__event: handle_load_ae_obj_id__event,
|
handle_load_ae_obj_id__event: handle_load_ae_obj_id__event,
|
||||||
handle_load_ae_obj_li__badge: handle_load_ae_obj_li__badge,
|
handle_load_ae_obj_li__badge: handle_load_ae_obj_li__badge,
|
||||||
|
handle_search__event_badge: handle_search__event_badge,
|
||||||
handle_load_ae_obj_id__exhibit: handle_load_ae_obj_id__exhibit,
|
handle_load_ae_obj_id__exhibit: handle_load_ae_obj_id__exhibit,
|
||||||
handle_load_ae_obj_li__exhibit: handle_load_ae_obj_li__exhibit,
|
handle_load_ae_obj_li__exhibit: handle_load_ae_obj_li__exhibit,
|
||||||
handle_load_ae_obj_li__exhibit_tracking: handle_load_ae_obj_li__exhibit_tracking,
|
handle_load_ae_obj_li__exhibit_tracking: handle_load_ae_obj_li__exhibit_tracking,
|
||||||
|
|||||||
@@ -140,9 +140,12 @@ export class MySubClassedDexie extends Dexie {
|
|||||||
super('ae_events_db');
|
super('ae_events_db');
|
||||||
this.version(1).stores({
|
this.version(1).stores({
|
||||||
// badges: '++id, full_name, email' // Primary key and indexed props
|
// badges: '++id, full_name, email' // Primary key and indexed props
|
||||||
badges: 'id_random, event_badge_id_random, full_name, full_name_override, email, email_override, affiliations, affiliations_override, badge_type, badge_type_code, badge_type_code_override, badge_type_override, external_event_id, external_id, external_person_id, enable, hide, priority, sort, group, notes, created_on, updated_on',
|
badges: `
|
||||||
exhibits: 'id_random, event_exhibit_id_random, code, name, description, staff_passcode, data_json, license_max, license_li_json, cfg_json, enable, hide, priority, sort, group, notes, created_on, updated_on',
|
id_random, event_badge_id_random, event_id_random, full_name, full_name_override, email, email_override, affiliations, affiliations_override, badge_type, badge_type_code, badge_type_code_override, badge_type_override, external_event_id, external_id, external_person_id, enable, hide, priority, sort, group, notes, created_on, updated_on`,
|
||||||
exhibit_tracking: 'id_random, event_exhibit_tracking_id_random, event_exhibit_id_random, event_badge_id_random, event_person_id_random, exhibitor_notes, responses_json, data_json, event_badge_full_name, event_badge_email, enable, hide, priority, sort, group, notes, created_on, updated_on'
|
exhibits: `
|
||||||
|
id_random, event_exhibit_id_random, code, name, description, staff_passcode, data_json, license_max, license_li_json, cfg_json, enable, hide, priority, sort, group, notes, created_on, updated_on, [priority+name]`,
|
||||||
|
exhibit_tracking: `
|
||||||
|
id_random, event_exhibit_tracking_id_random, event_exhibit_id_random, event_badge_id_random, event_person_id_random, exhibitor_notes, responses_json, data_json, event_badge_full_name, event_badge_email, enable, hide, priority, sort, group, notes, created_on, updated_on`
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ storePopup.set({ computePosition, autoUpdate, flip, shift, offset, arrow });
|
|||||||
|
|
||||||
import { api } from '$lib/api';
|
import { api } from '$lib/api';
|
||||||
import { ae_loc, ae_sess, ae_api, slct, slct_trigger } from '$lib/ae_stores';
|
import { ae_loc, ae_sess, ae_api, slct, slct_trigger } from '$lib/ae_stores';
|
||||||
|
import { events_loc, events_slct } from '$lib/ae_events_stores';
|
||||||
import type { key_val } 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);
|
||||||
|
|
||||||
@@ -60,6 +61,21 @@ import Element_app_cfg from '$lib/element_app_cfg.svelte';
|
|||||||
import Element_data_store from '$lib/element_data_store.svelte';
|
import Element_data_store from '$lib/element_data_store.svelte';
|
||||||
|
|
||||||
|
|
||||||
|
if (data.url.searchParams.get('event_id')) {
|
||||||
|
$events_slct.event_id = data.url.searchParams.get('event_id');
|
||||||
|
$events_loc.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;
|
||||||
|
$events_loc.event_id = data.ae_loc.site_cfg_json.slct__event_id;
|
||||||
|
} else if ($events_slct.event_id) {
|
||||||
|
console.log(`Event ID already set:`, $events_slct.event_id);
|
||||||
|
$events_loc.event_id = $events_slct.event_id;
|
||||||
|
} else if (data.ae_loc.default__event_id) {
|
||||||
|
$events_slct.event_id = data.ae_loc.default__event_id;
|
||||||
|
$events_loc.event_id = data.ae_loc.default__event_id;
|
||||||
|
} else {
|
||||||
|
console.log(`No Event ID set.`);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
|
|||||||
@@ -24,23 +24,24 @@ let event_exhibit_obj_li = liveQuery(
|
|||||||
// .equals('99999')
|
// .equals('99999')
|
||||||
.above(0)
|
.above(0)
|
||||||
.sortBy('name') // Use sortBy() instead of orderBy(). toArray() is also not needed???
|
.sortBy('name') // Use sortBy() instead of orderBy(). toArray() is also not needed???
|
||||||
|
// .sortBy('[priority+name]')
|
||||||
// .orderBy('name')
|
// .orderBy('name')
|
||||||
// .offset(10).limit(5)
|
// .offset(10).limit(5)
|
||||||
// .toArray()
|
// .toArray()
|
||||||
);
|
);
|
||||||
|
|
||||||
// This should probably be moved
|
// This should probably be moved
|
||||||
if (data.url.searchParams.get('event_id')) {
|
// if (data.url.searchParams.get('event_id')) {
|
||||||
$events_slct.event_id = 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) {
|
// } else if (data.ae_loc.site_cfg_json.slct__event_id) {
|
||||||
$events_slct.event_id = 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) {
|
// } else if ($events_loc.default__event_id) {
|
||||||
$events_slct.event_id = $events_loc.default__event_id;
|
// $events_slct.event_id = $events_loc.default__event_id;
|
||||||
} else if ($events_slct.event_id) {
|
// } else if ($events_slct.event_id) {
|
||||||
console.log(`Event ID already set:`, $events_slct.event_id);
|
// console.log(`Event ID already set:`, $events_slct.event_id);
|
||||||
} else {
|
// } else {
|
||||||
console.log(`No Event ID set.`);
|
// console.log(`No Event ID set.`);
|
||||||
}
|
// }
|
||||||
|
|
||||||
// export let event_exhibit_staff_passcode: string = '';
|
// export let event_exhibit_staff_passcode: string = '';
|
||||||
let disable_open_lead_retrieval_btn: boolean = true;
|
let disable_open_lead_retrieval_btn: boolean = true;
|
||||||
|
|||||||
@@ -7,31 +7,67 @@ import { liveQuery } from "dexie";
|
|||||||
import { db_events } from "$lib/db_events";
|
import { db_events } from "$lib/db_events";
|
||||||
import { ae_loc, ae_sess, ae_api, slct, slct_trigger } from '$lib/ae_stores';
|
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 { events_loc, events_sess, events_slct, events_trigger } from '$lib/ae_events_stores';
|
||||||
|
import { events_func } from '$lib/ae_events_functions';
|
||||||
|
|
||||||
import Element_qr_scanner from '$lib/element_qr_scanner.svelte';
|
import Element_qr_scanner from '$lib/element_qr_scanner.svelte';
|
||||||
|
|
||||||
// let param_slug_event_exhibit_id = data.params.slug;
|
// let param_slug_event_exhibit_id = data.params.slug;
|
||||||
|
console.log(`ae_events_leads exhibit [slug] leads_add_scan.svelte:`, $events_slct);
|
||||||
let event_exhibit_obj = liveQuery(
|
let event_exhibit_obj = liveQuery(
|
||||||
() => db_events.exhibits.get($events_slct.exhibit_id)
|
() => db_events.exhibits.get($events_slct.exhibit_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$events_sess.leads.entered_search_str = 'Albert Einstein';
|
||||||
|
// $events_sess.leads.entered_search_str = 'Albert Einstein';
|
||||||
|
|
||||||
|
let tmp_search_terms = $events_sess.leads.entered_search_str.split(' ')
|
||||||
|
|
||||||
|
// Version 2: This does not work yet
|
||||||
|
let event_badge_obj_li = liveQuery(
|
||||||
|
// () => db_events.exhibits.toArray()
|
||||||
|
() => db_events.badges
|
||||||
|
// .where({event_exhibit_id_random: $events_slct.exhibit_id, enable: true, hide: false})
|
||||||
|
// .where({event_id_random: $events_loc.event_id})
|
||||||
|
.where('event_id_random').equals($events_loc.event_id)
|
||||||
|
// .where('event_id_random').equals($events_slct.event_id)
|
||||||
|
.or('full_name').equalsIgnoreCase($events_sess.leads.entered_search_str)
|
||||||
|
// .and('full_name').anyOfIgnoreCase([$events_sess.leads.entered_search_str, 'Sasa Vukelic'])
|
||||||
|
// .where('full_name').anyOfIgnoreCase(tmp_search_terms)
|
||||||
|
// .and('enable').equals(true)
|
||||||
|
.sortBy('full_name') // Use sortBy() instead of orderBy(). toArray() is also not needed???
|
||||||
|
// .toArray()
|
||||||
|
|
||||||
|
// , full_name: 'Susan'
|
||||||
|
// Scott Idem
|
||||||
|
// Albert Einstein
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// We are using Dexie.js for the database. This liveQuery should only show records that match the event_id and contain the search string.
|
||||||
|
// Version 3: This does not work yet
|
||||||
|
let event_badge_obj_li_v3 = liveQuery(
|
||||||
|
// () => db_events.exhibits.toArray()
|
||||||
|
() => db_events.badges
|
||||||
|
.where({event_exhibit_id_random: $events_slct.exhibit_id, full_name: $events_sess.leads.entered_search_str})
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
let search_submit_results: Promise<any>|key_val;
|
let search_submit_results: Promise<any>|key_val;
|
||||||
let scan_submit_results: Promise<any>|key_val;
|
let scan_submit_results: Promise<any>|key_val;
|
||||||
|
|
||||||
function handle_submit_form_search(event) {
|
async function handle_submit_form_search(event) {
|
||||||
console.log('*** handle_submit_form_search() ***');
|
console.log('*** handle_submit_form_search() ***', event);
|
||||||
console.log(event);
|
|
||||||
|
|
||||||
$events_sess.leads.submit_status__search = 'submitting';
|
$events_sess.leads.submit_status__search = 'submitting';
|
||||||
|
|
||||||
let search_str = $events_sess.leads.entered_search_str;
|
let search_str = $events_sess.leads.entered_search_str.trim();
|
||||||
console.log(search_str);
|
console.log(search_str);
|
||||||
|
|
||||||
// search_submit_results = handle_search_for_person(search_str);
|
search_submit_results = await events_func.handle_search__event_badge({api_cfg: $ae_api, event_id: $event_exhibit_obj.event_id_random, fulltext_search_qry_str: search_str});
|
||||||
console.log(search_submit_results);
|
console.log(search_submit_results);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function handle_qr_scan_result(event) {
|
function handle_qr_scan_result(event) {
|
||||||
console.log('*** handle_qr_scan_result() ***');
|
console.log('*** handle_qr_scan_result() ***');
|
||||||
|
|
||||||
@@ -230,13 +266,44 @@ function handle_qr_camera(event) {
|
|||||||
flex-col
|
flex-col
|
||||||
gap-4
|
gap-4
|
||||||
justify-stretch
|
justify-stretch
|
||||||
min-h-full
|
max-h-full
|
||||||
min-w-full
|
min-w-full
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<header class="popover__header flex gap-1 justify-between items-center p-1 border-b">
|
<header class="popover__header flex gap-1 justify-between items-center p-1 border-b">
|
||||||
<h2 class="h3">Search</h2>
|
<h2 class="h3">Search</h2>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="">
|
||||||
|
<form
|
||||||
|
id="form__search_text"
|
||||||
|
class="form flex flex-row gap-2 justify-center items-center w-full"
|
||||||
|
on:submit|preventDefault={handle_submit_form_search}
|
||||||
|
>
|
||||||
|
|
||||||
|
<!-- This is the plain text search field for looking up attendees based on their name, email, etc. -->
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
name="entered_search_string"
|
||||||
|
placeholder="Search for attendee"
|
||||||
|
bind:value={$events_sess.leads.entered_search_str}
|
||||||
|
required
|
||||||
|
class="input max-w-56"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<button
|
||||||
|
type="submit"
|
||||||
|
class="btn variant-ghost-primary"
|
||||||
|
>
|
||||||
|
<span class="fas fa-search mx-1"></span>
|
||||||
|
Search
|
||||||
|
</button>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="popover__actions">
|
<div class="popover__actions">
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
@@ -251,32 +318,28 @@ function handle_qr_camera(event) {
|
|||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<section class="popover__content grow flex flex-col gap-4 items-center">
|
<section class="popover__content grow flex flex-col gap-4 items-center ae_modal_scrollfix">
|
||||||
<form
|
|
||||||
id="form__search_text"
|
|
||||||
class="form flex flex-row gap-2 justify-center items-center w-full"
|
|
||||||
on:submit|preventDefault={handle_submit_form_search}
|
|
||||||
>
|
|
||||||
|
|
||||||
<!-- This is the plain text search field for looking up attendees based on their name, email, etc. -->
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
name="entered_search_string"
|
|
||||||
placeholder="Search for attendee"
|
|
||||||
bind:value={$events_sess.leads.entered_search_str}
|
|
||||||
required
|
|
||||||
class="input max-w-56"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<button
|
<div class="ae_events__badge_li">
|
||||||
type="submit"
|
{#if $event_badge_obj_li}
|
||||||
class="btn variant-ghost-primary"
|
{#each $event_badge_obj_li as event_badge_obj, index}
|
||||||
>
|
<div class="ae_events__badge_li__item">
|
||||||
<span class="fas fa-search mx-1"></span>
|
<span class="ae_events__badge_li__item__name">
|
||||||
Search
|
{event_badge_obj.full_name}
|
||||||
</button>
|
</span>
|
||||||
|
<span class="ae_events__badge_li__item__email">
|
||||||
|
<a href="mailto:{event_badge_obj.email}">{event_badge_obj.email}</a>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
{/each}
|
||||||
|
{:else}
|
||||||
|
<div class="variant-soft-warning">No results yet</div>
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</form>
|
|
||||||
</section> <!-- .popover__content -->
|
</section> <!-- .popover__content -->
|
||||||
|
|
||||||
<footer class="popover__footer flex gap-1 justify-between items-center p-1 border-t">
|
<footer class="popover__footer flex gap-1 justify-between items-center p-1 border-t">
|
||||||
@@ -355,7 +418,7 @@ function handle_qr_camera(event) {
|
|||||||
flex-col
|
flex-col
|
||||||
gap-4
|
gap-4
|
||||||
justify-stretch
|
justify-stretch
|
||||||
min-h-full
|
max-h-full
|
||||||
min-w-full
|
min-w-full
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
@@ -377,7 +440,7 @@ function handle_qr_camera(event) {
|
|||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<section class="popover__content grow flex flex-col gap-4 items-center">
|
<section class="popover__content grow flex flex-col gap-4 items-center ae_modal_scrollfix">
|
||||||
|
|
||||||
|
|
||||||
<!-- <div class=""> -->
|
<!-- <div class=""> -->
|
||||||
|
|||||||
Reference in New Issue
Block a user