diff --git a/src/lib/element_qr_scanner backup.svelte b/src/lib/element_qr_scanner backup.svelte
new file mode 100644
index 00000000..25f8e88d
--- /dev/null
+++ b/src/lib/element_qr_scanner backup.svelte
@@ -0,0 +1,543 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {#if scanning_status == 'not_started' }
+ Start Scanning
+
+ Scanning stopped
+
+ {:else if scanning_status == 'paused' && show_pause_btn}
+ Resume
+ Scanning paused
+ {:else if scanning_status == 'scanning'}
+
+
+
+ Stop
+
+ {#if show_pause_btn}
+ Pause
+ {/if}
+
+
+
+
+ Scanning for QR code...
+
+
+ {/if}
+
+
+
+
+
+ {#if show_qr_manual_text_entry_option}
+
+ {#if show_qr_manual_entry}
+
Enter text
+
+
Submit Text
+
+
+
+
+
+
+ {:else}
+
show_qr_manual_entry=true} class="btn btn-md variant-soft-warning"> Enter Text
+ {/if}
+
+ {/if}
+
+ {#if show_qr_manual_badge_id_entry_option}
+
+ {#if show_qr_manual_entry}
+
+ {:else}
+ show_qr_manual_entry=true} class="btn btn-md variant-soft-secondary m-1"> Enter Badge ID
+ {/if}
+
+ {/if}
+
+ {#if show_qr_scan_result && qr_scan_result}
+
+ Raw Result:
+ {qr_scan_result}
+
+ {/if}
+
+
+
+
+
+
diff --git a/src/lib/element_qr_scanner.svelte b/src/lib/element_qr_scanner.svelte
index 25f8e88d..b2bce7d1 100644
--- a/src/lib/element_qr_scanner.svelte
+++ b/src/lib/element_qr_scanner.svelte
@@ -5,8 +5,6 @@ import { createEventDispatcher, onDestroy, onMount } from 'svelte';
import {Html5Qrcode, Html5QrcodeScannerState, Html5QrcodeSupportedFormats} from 'html5-qrcode';
// *** Import Aether core variables and functions
-import { api } from '$lib/api';
-import { ae_api } from '$lib/ae_stores';
// *** Import Aether core components
// import Element_input from './element_input.svelte';
@@ -37,9 +35,6 @@ let qr_entered_badge_id: null|string = null;
let show_qr_manual_entry: null|boolean = null;
let disable_submit_badge_id_btn: boolean = true;
-let user_media_status = 'not_requested';
-
-
// let max_results: number = 50;
const dispatch = createEventDispatcher();
@@ -58,52 +53,36 @@ let qr_scan_cfg = { fps: qr_fps, qrbox: qr_viewfinder_width }; // 275 seems good
onMount(() => {
console.log('** Element Mounted: ** QR Scanner');
- // NOTE: We only want to trigger the scanning to start after the page has fully loaded.
+ // NOTE: This can only be done after the page has fully loaded. At least that is what my tests have shown so far. -2022-12-02
+ if (start_qr_scanner) {
+ handle_start_qr_scanning();
+ }
+
navigator.mediaDevices.getUserMedia({video: true})
.then(successCallback, errorCallback);
-
- // NOTE: This can only be done after the page has fully loaded.
- // if (start_qr_scanner) {
- // handle_start_qr_scanning();
- // }
});
-onDestroy(async () => {
+onDestroy(() => {
console.log('** Element Destroyed: ** QR Scanner');
qr_scan_result = null;
qr_found_text = null;
- await handle_stop_qr_scanning();
+ handle_stop_qr_scanning();
});
var successCallback = function(error: any) {
console.log('Camera access allowed');
- user_media_status = 'allowed';
-
- // let subject = 'Camera Access Allowed';
- // let message = error;
- // send_init_confirm_email(subject, message);
dispatch('qr_camera', {
status: 'allowed',
});
-
- // NOTE: This can only be done after the page has fully loaded.
- if (start_qr_scanner) {
- handle_start_qr_scanning();
- }
};
var errorCallback = function(error: any) {
if (error.name == 'NotAllowedError') {
console.log('Camera access not allowed!');
- user_media_status = 'denied';
-
- // let subject = 'Camera Access Denied';
- // let message = error;
- // send_init_confirm_email(subject, message);
dispatch('qr_camera', {
status: 'denied',
@@ -121,24 +100,16 @@ var errorCallback = function(error: any) {
// }
-async function handle_start_qr_scanning() {
+function handle_start_qr_scanning() {
console.log('*** handle_start_qr_scanning() ***');
- if (user_media_status == 'denied') {
- console.log('Camera access not allowed!');
- return;
- } else if (user_media_status == 'not_requested') {
- console.log('Camera access not requested yet!');
- return;
- }
-
qr_scan_result = null;
qr_found_text = null;
if (html5_qr_code) {
console.log('html5_qr_code object found. Clearing and creating new Html5Qrcode...');
// html5_qr_code.clear();
- // document.getElementById('qr_scanner_viewfinder').classList.remove('d_none');
+ document.getElementById('qr_scanner_viewfinder').classList.remove('d_none');
html5_qr_code = new Html5Qrcode(
'qr_scanner_viewfinder', { formatsToSupport: [ Html5QrcodeSupportedFormats.QR_CODE ] }
@@ -150,37 +121,21 @@ async function handle_start_qr_scanning() {
);
}
- if (html5_qr_code.getState() == Html5QrcodeScannerState.NOT_STARTED) {
- // console.log('Scanner is not started');
+ // if (html5_qr_code.getState() == Html5QrcodeScannerState.NOT_STARTED) {
+ // // console.log('Scanner is not started');
+ // } else {
+ // console.log('Scanner is already started');
+ // return;
+ // }
- return await html5_qr_code.start({ facingMode: qr_facing_mode }, qr_scan_cfg, handle_qr_scan_success, handle_qr_scan_error)
- .then((ignore: any) => {
- console.log('Scanning has started');
- scanning_status = 'scanning';
-
- // let subject = 'QR Scanning Started';
- // let message = ignore;
- // send_init_confirm_email(subject, message);
-
- return true;
- }).catch((err) => {
- console.log('There was an error while trying to start the QR scanner');
- scanning_status = 'start_error';
-
- let subject = 'QR Scanning Start Error';
- let message = err;
- send_init_confirm_email(subject, message);
-
- return false;
- });
-
-
- } else {
- console.log('Scanner is already started');
- return;
- }
-
-
+ html5_qr_code.start({ facingMode: qr_facing_mode }, qr_scan_cfg, handle_qr_scan_success, handle_qr_scan_error).then((ignore: any) => {
+ console.log('Scanning has started');
+ scanning_status = 'scanning';
+ return true;
+ }).catch((err) => {
+ console.log('There was an error while trying to start the QR scanner');
+ return false;
+ });
}
@@ -206,46 +161,28 @@ function handle_resume_qr_scanning() {
}
-async function handle_stop_qr_scanning() {
- start_qr_scanner = false;
-
- if (!html5_qr_code) {
- console.log('html5_qr_code object found. Nothing to stop?');
- return false;
- }
-
- let state = html5_qr_code.getState();
- console.log('html5_qr_code state:', state);
-
- if (state == Html5QrcodeScannerState.NOT_STARTED) {
+function handle_stop_qr_scanning() {
+ if (html5_qr_code && html5_qr_code.getState() == Html5QrcodeScannerState.NOT_STARTED) {
console.log('Scanner is not started');
return;
}
- if (state == Html5QrcodeScannerState.PAUSED || state == Html5QrcodeScannerState.SCANNING) {
- console.log('Scanner is not started');
- await html5_qr_code.stop()
- scanning_status = 'not_started';
- return;
- }
-
- await html5_qr_code.clear();
- return true;
+ // qr_scan_result = null;
+ // qr_found_text = null;
// html5_qr_code.pause();
- // return html5_qr_code.stop()
- // .then((ignore) => {
- // console.log('Scanning has stopped');
- // // document.getElementById('qr_scanner_viewfinder').classList.add('d_none');
- // scanning_status = 'not_started';
- // }).then((ignore) => {
- // // html5_qr_code = null;
- // // html5_qr_code.clear();
- // }).catch((err) => {
- // console.log('There was an error while trying to stop the scanning');
- // return false;
- // });
+ html5_qr_code.stop().then((ignore) => {
+ console.log('Scanning has stopped');
+ document.getElementById('qr_scanner_viewfinder').classList.add('d_none');
+ scanning_status = 'not_started';
+ }).then((ignore) => {
+ // html5_qr_code = null;
+ html5_qr_code.clear();
+ }).catch((err) => {
+ console.log('There was an error while trying to stop the scanning');
+ return false;
+ });
// html5_qr_code = null;
}
@@ -267,7 +204,29 @@ function handle_qr_scan_success(decoded_text, decoded_result) {
});
// handle_pause_qr_scanning();
+
handle_stop_qr_scanning();
+
+ // html5_qr_code.stop().then((ignore) => {
+ // console.log('Scanning has stopped');
+ // scanning_status = 'not_started';
+ // document.getElementById('qr_scanner_viewfinder').classList.add('d_none');
+
+ // qr_scan_result = decoded_text;
+ // qr_found_text = decoded_text;
+
+ // dispatch('qr_scan_result', {
+ // result: qr_scan_result,
+ // entry_method: 'QR',
+ // });
+
+ // // qr_scan_result = null;
+ // // qr_found_text = null;
+ // return true;
+ // }).catch((err) => {
+ // console.log('There was an error while trying to stop the scanning');
+ // return false;
+ // });
}
@@ -318,46 +277,6 @@ function handle_qr_manual_entry() {
qr_scan_result = null;
qr_entered_text = null;
}
-
-
-
-
-
-function send_init_confirm_email(subject, message) {
- console.log(`*** send_init_confirm_email() *** ${subject}`);
-
- let to_email = 'scott.idem+skdev@oneskyit.com';
-
- // let origin_url = encodeURI(`${data.url.origin}`);
-
- let full_subject = `${subject} Aether QR Scanner Debugging`;
-
- let body_html = `
-
Scott,
-
This is an automatic debug email from the Aether QR scanner.
-
-
-
-
-
- Message:
-
- ${JSON.stringify(message)}
-
-
- `;
-
- api.send_email({
- api_cfg: $ae_api,
- from_email: 'noreply+ae_qr_debug@oneskyit.com',
- from_name: 'AE QR Debug',
- to_email: to_email,
- subject: full_subject,
- body_html: body_html,
- });
-}
-
-
diff --git a/src/routes/events_leads/exhibit/[slug]/leads_add_scan backup.svelte b/src/routes/events_leads/exhibit/[slug]/leads_add_scan backup.svelte
new file mode 100644
index 00000000..5211c92c
--- /dev/null
+++ b/src/routes/events_leads/exhibit/[slug]/leads_add_scan backup.svelte
@@ -0,0 +1,871 @@
+
+
+
+
+
+
+{#if $events_sess.leads.show_form__search}
+
+
+
+
+
+
+
+ {#if $event_badge_obj_li}
+
+
+
+
{$events_slct.badge_obj_li.length} results found
+
+ {#each $events_slct.badge_obj_li as event_badge_obj_v2, index}
+
+
+
{
+ // if (confirm(`Add ${event_badge_obj_v2.full_name} <${event_badge_obj_v2.email}> to the leads list?`)) {
+ // } else {
+ // return false;
+ // }
+ // console.log(`Add ${event_badge_obj_v2.full_name} ${event_badge_obj_v2.email} to the leads list`);
+
+ $events_sess.leads.show_confirm__add_lead[index] = true;
+ }}
+ disabled={!$ae_loc.trusted_access && 2==4}
+ title="Add {event_badge_obj_v2.full_name} to the leads list?"
+ class="btn btn-md variant-soft-primary mx-1"
+ >
+
+ Add
+
+
+
+
+ {#if $events_sess.leads.show_confirm__add_lead[index]}
+
+
+
+
+
+ Are you sure you want to add {event_badge_obj_v2.full_name} to the leads list?
+ Badge ID: {event_badge_obj_v2.event_badge_id_random}
+
+ {
+ console.log(`Do not add ${event_badge_obj_v2.full_name} ${event_badge_obj_v2.email} to the leads list`);
+
+ $events_sess.leads.show_confirm__add_lead[index] = false;
+ }}
+ >
+
+ No
+
+
+ {
+ console.log(`Add ${event_badge_obj_v2.full_name} ${event_badge_obj_v2.email} to the leads list`);
+
+ // TEMPORARY: For testing and development
+ // if (!$ae_loc.trusted_access) {
+ // console.log('You do not have permission to add this person to the leads list.');
+ // return false;
+ // }
+ // TEMPORARY: For testing and development
+
+ events_func.handle_create_ae_obj__exhibit_tracking({api_cfg: $ae_api, exhibit_id: $events_slct.exhibit_id, event_badge_id: event_badge_obj_v2.event_badge_id_random, external_person_id: $events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id].key, })
+ .then((result) => {
+ console.log(result);
+ let exhibit_tracking_id = null;
+ let exhibit_tracking_obj = {};
+ if (result) {
+ exhibit_tracking_id = result.event_exhibit_tracking_id_random;
+ exhibit_tracking_obj = result;
+
+ $events_slct.exhibit_tracking_id = exhibit_tracking_id;
+ $events_slct.exhibit_tracking_obj = exhibit_tracking_obj;
+
+ $events_sess.leads.show_confirm__add_lead[index] = false;
+ } else {
+ console.log('This badge ID has probably already been added to the lead list for this exhibit.');
+
+ // Need to look the old record up and set it to not hidden.
+ // events_func.handle_update_ae_obj_id_crud({api_cfg: $ae_api, object_type: 'event_exhibit_tracking', object_id: $events_slct.exhibit_tracking_id, field_name: 'hide', new_field_value: false})
+
+ $events_sess.leads.show_confirm__add_lead[index] = false;
+ }
+
+ if ($events_loc.leads.auto_view) {
+ $events_sess.leads.show_form__search = false;
+ $events_sess.leads.show_form__scan = false;
+
+ // $events_slct.exhibit_tracking_id = exhibit_tracking_id;
+ // $events_slct.exhibit_tracking_obj = exhibit_tracking_id;
+
+ $events_loc.leads.tab[$events_slct.exhibit_id] = 'leads';
+
+ $events_sess.leads.show_form__view_lead = $events_slct.exhibit_tracking_id;
+ }
+ });
+
+ // $events_sess.leads.show_confirm__add_lead[index] = false;
+ }}
+ >
+
+ Yes
+
+
+
+
+
+
+ {/if}
+
+
+
+
+
+ {#if $event_exhibit_obj?.priority || $ae_loc.trusted_access}
+ {event_badge_obj_v2.full_name}
+ {:else}
+
+ {event_badge_obj_v2.full_name ? event_badge_obj_v2.full_name.substring(0, 1) + '...' : 'Hidden'}
+
+ {/if}
+
+
+
+ {#if $event_exhibit_obj?.priority || $ae_loc.trusted_access}
+ {event_badge_obj_v2.affiliations}
+ {:else}
+
+ {event_badge_obj_v2.affiliations ? event_badge_obj_v2.affiliations.substring(0, 3) + '...' : 'Hidden'}
+
+ {/if}
+
+
+ {#if $event_exhibit_obj?.priority || $ae_loc.trusted_access}
+
+
+ {event_badge_obj_v2.email}
+ {:else}
+
+
+ {event_badge_obj_v2.email ? event_badge_obj_v2.email.substring(0, 1) + '...@example.com' : 'Hidden'}
+
+ {/if}
+
+
+
+
+
+ {/each}
+
+
+
+
+
+
+ {:else}
+
No results yet
+ {/if}
+
+
+
+
+
+
+
+
+{/if}
+
+
+
+
+
+
+{#if $events_sess.leads.show_form__scan}
+
+
+
+
+
+
+
+
+
+
+
+
+ {@html $events_sess.leads.qr_scan_result ?? 'No results yet'}
+
+
+
+
+
+
+ {#if $events_sess.leads.show_confirm__add_lead[$events_slct.badge_id] && $event_badge_obj}
+
+
+
+
+
+ Are you sure you want to add {$event_badge_obj.full_name} to the leads list?
+ Badge ID: {$event_badge_obj.event_badge_id_random}
+
+ {
+ console.log(`Do not add ${$event_badge_obj.full_name} ${$event_badge_obj.email} to the leads list`);
+
+ $events_sess.leads.show_confirm__add_lead[$events_slct.badge_id] = false;
+
+ $events_slct.badge_id = null;
+ $events_slct.badge_obj = null;
+
+ // $events_slct = $events_slct;
+ // $events_sess = $events_sess;
+ }}
+ >
+
+ No
+
+
+ {
+ console.log(`Add ${event_badge_obj.full_name} ${event_badge_obj.email} to the leads list`);
+
+ // TEMPORARY: For testing and development
+ // if (!$ae_loc.trusted_access) {
+ // console.log('You do not have permission to add this person to the leads list.');
+ // return false;
+ // }
+ // TEMPORARY: For testing and development
+
+ events_func.handle_create_ae_obj__exhibit_tracking({api_cfg: $ae_api, exhibit_id: $events_slct.exhibit_id, event_badge_id: $events_slct.badge_id, external_person_id: $events_loc.leads.auth_exhibit_kv[$events_slct.exhibit_id].key, })
+ .then((result) => {
+ console.log(result);
+ let exhibit_tracking_id = null;
+ let exhibit_tracking_obj = {};
+ if (result) {
+ exhibit_tracking_id = result.event_exhibit_tracking_id_random;
+ exhibit_tracking_obj = result;
+
+ $events_slct.exhibit_tracking_id = exhibit_tracking_id;
+ $events_slct.exhibit_tracking_obj = exhibit_tracking_obj;
+ } else {
+ console.log('This badge ID has probably already been added to the lead list for this exhibit.');
+
+ // Need to look the old record up and set it to not hidden.
+ }
+ $events_sess.leads.show_confirm__add_lead[$events_slct.badge_id] = false;
+
+ // $events_sess.leads.show_confirm__add_lead[$events_slct.badge_id] = false;
+ $events_slct.badge_id = null;
+ $events_slct.badge_obj = null;
+
+ if ($events_loc.leads.auto_view) {
+ $events_sess.leads.show_form__search = false;
+ $events_sess.leads.show_form__scan = false;
+
+ $events_loc.leads.tab[$events_slct.exhibit_id] = 'leads';
+
+ $events_sess.leads.show_form__view_lead = $events_slct.exhibit_tracking_id;
+ }
+ });
+
+ // $events_sess.leads.show_confirm__add_lead[$events_slct.badge_id] = false;
+ }}
+ >
+
+ Yes
+
+
+
+
+
+
+ {/if}
+
+
+
+
+
+
+
+
+{/if}
+
+
+
diff --git a/src/routes/events_leads/exhibit/[slug]/leads_add_scan.svelte b/src/routes/events_leads/exhibit/[slug]/leads_add_scan.svelte
index 5211c92c..3bdb9a45 100644
--- a/src/routes/events_leads/exhibit/[slug]/leads_add_scan.svelte
+++ b/src/routes/events_leads/exhibit/[slug]/leads_add_scan.svelte
@@ -799,26 +799,25 @@ function handle_qr_camera(event) {