The new menu for the session page is working well. Time for clean up.

This commit is contained in:
Scott Idem
2024-08-01 15:43:39 -04:00
parent 2fca5b2c3b
commit cf9f914412
7 changed files with 644 additions and 514 deletions

View File

@@ -141,6 +141,8 @@ let events_local_data_struct: key_val = {
show_content__session_search_help: true,
show_content__presenter_page_help: true,
show_menu__session: null,
show_report__presenters_agree: false,
show_report__recent_files: false,

View File

@@ -15,7 +15,7 @@ string_snippets['classes__core_menu__button'] = 'btn btn-sm mx-1 variant-soft-te
string_snippets['classes__core_menu__button_highlight'] = 'btn btn-sm mx-1 variant-filled-tertiary text-info-300 hover:text-info-800';
string_snippets['classes__core_menu__button_warning'] = 'btn btn-sm mx-1 variant-soft-warning text-info-300 hover:text-info-800';
string_snippets['classes__events_pres_mgmt_menu'] = 'flex flex-col items-center space-y-1 border border-blue-200 rounded-md py-1 px-2 hover:bg-blue-100';
string_snippets['classes__events_pres_mgmt_menu'] = 'flex flex-col items-center space-y-1 border border-blue-200 rounded-md py-1 px-2 hover:bg-blue-100 transition-all duration-700 hover:duration-300';
string_snippets['classes__events_pres_mgmt_menu__button'] = 'btn btn-sm mx-1 variant-soft-tertiary text-info-300 hover:text-info-800';
string_snippets['classes__events_pres_mgmt_menu__button_highlight'] = 'btn btn-sm mx-1 variant-filled-tertiary text-info-300 hover:text-info-800';

View File

@@ -170,31 +170,6 @@ onMount(() => {
<!-- This is a hack. I can not get the LiveQuery to work with specific presentation IDs. It only works with the session ID. I need to figure out how to get the presenters for the specific presentation. -->
<!-- {#if event_presenter_obj.event_presentation_id_random == event_presentation_obj.event_presentation_id_random} -->
<li>
<!-- <button
type="button"
disabled={!($ae_loc.trusted_access || $events_loc.auth__kv.session[$events_slct.event_session_id]) && (!$events_loc.auth__kv.presenter[event_presenter_obj.event_presenter_id_random] || !event_presenter_obj.agree)}
on:click={
() => {
console.log('View presenter details');
$events_slct.event_presentation_id = event_presenter_obj.event_presentation_id_random;
$events_slct.event_presentation_obj = $lq__event_presentation_obj;
$events_slct.event_presenter_id = event_presenter_obj.event_presenter_id_random;
$events_slct.event_presenter_obj = event_presenter_obj;
$events_sess.pres_mgmt.show_content__presenter_start = event_presenter_obj.event_presenter_id_random;
}
}
class="btn variant-ghost-primary hover:variant-filled-primary font-bold min-w-64 my-0.5"
class:btn-sm={display_mode != 'default'}
title="Person ID: {event_presenter_obj.person_id_random}; Email: {event_presenter_obj.email}"
>
<span class="fas fa-user mx-1"></span>
<span class="text-center grow">
{event_presenter_obj.full_name}
</span>
</button> -->
<a
href="/events_pres_mgmt/presenter/{event_presenter_obj.event_presenter_id_random}"
class="btn variant-ghost-primary hover:variant-filled-primary font-bold min-w-64 my-0.5"
@@ -240,7 +215,7 @@ onMount(() => {
}
);
}}
class="btn variant-ghost-secondary hover:variant-filled-secondary my-0.5"
class="btn variant-ghost-secondary hover:variant-filled-secondary my-0.5 transition-all hover:transition-all"
class:btn-sm={display_mode != 'default'}
title="Email the access link to the presenter"
>

View File

@@ -46,6 +46,7 @@ let lq__event_presenter_obj = liveQuery(
// Functions and Logic
</script>
<svelte:head>
<title>
Presenter: {ae_util.shorten_string({ string: $lq__event_presenter_obj?.full_name, max_length: 20, begin_length: 10, end_length: 4 })}

View File

@@ -25,6 +25,7 @@ import { events_loc, events_sess, events_slct, events_trigger, events_trig_kv }
import { events_func } from '$lib/ae_events_functions';
import Session_view from './../../session_view.svelte';
import Sign_in_out from './../../sign_in_out.svelte';
import { browser } from '$app/environment';
if (browser) {
@@ -80,373 +81,130 @@ if (!$events_sess.pres_mgmt) {
$events_sess.pres_mgmt.show_content__agree_text = false;
$events_sess.pres_mgmt.show_content__presenter_start = false;
// let event_obj = liveQuery(
// () => db_events.events.get($events_slct.event_id)
// // () => db_events.events.get(param_slug_event_id)
// // () => db_events.events.toArray()
// // () => db_events.events
// // .where('id_random')
// // .equals($events_slct.event_id)
// // // .orderBy('name')
// // // .offset(10).limit(5)
// // .toArray()
// );
let lq__event_session_obj = liveQuery(
() => db_events.sessions.get($events_slct.event_session_id)
);
// let lq__event_presentation_obj_li = liveQuery(
// () => db_events.presentations
// // .where({event_session_id_random: $events_slct.event_session_id})
// .where('event_session_id_random')
// .equals($events_slct.event_session_id)
// .sortBy('name')
// // This works, but does it need to be async?
// // async () => await db_events.presentations
// // .where('event_session_id_random')
// // .equals($events_slct.event_session_id)
// // .sortBy('name')
// );
// let lq__event_presentation_obj = liveQuery(
// () => db_events.presentations.get($events_slct.event_presentation_id)
// );
// let lq__event_presenter_obj = liveQuery(
// () => db_events.presenters.get($events_slct.event_presenter_id)
// );
// $events_slct.event_presenter_obj = $lq__event_presenter_obj;
// We will filter out the presenters based on the presentation ID when they are rendered below.
// let lq__event_presenter_obj_li = liveQuery(
// () => db_events.presenters
// .where('event_session_id_random')
// .equals($events_slct.event_session_id)
// // Why does the slct presentation ID not seem to work?
// // .where('event_presentation_id_random')
// // .equals($events_slct.event_presentation_id)
// // .equals($events_slct.event_presentation_id?? '')
// .sortBy('full_name')
// );
// let lq__event_file_obj_li = liveQuery(
// () => db_events.files.where('event_session_id_random').equals($events_slct.event_session_id).toArray()
// );
$slct.person_obj_kv = {}; // This is intended for the POC lookup list when generated.
// Load the Event Obj with ID based on the slug param.
// $events_slct.event_id = param_slug_event_id;
// console.log('Selected Event ID:', $events_slct.event_id);
// $events_trigger = 'load__event_obj';
// let license_submit_results: Promise<any>|key_val;
// if (!$events_loc.leads.tab) {
// $events_loc.leads.tab = {};
// $events_loc.leads.tab[$events_slct.event_id] = 'start';
// }
// if (!$events_loc.leads.auth_exhibit_kv) {
// $events_loc.leads.auth_exhibit_kv = {};
// }
// if ($events_loc.leads.auth_exhibit_kv && $events_loc.leads.auth_exhibit_kv[$events_slct.event_id]) {
// console.log('Logged in using shared exhibit staff passcode.');
// if ($events_loc.leads.auth_exhibit_kv[$events_slct.event_id].key) {
// console.log(`Using the license key: ${$events_loc.leads.auth_exhibit_kv[$events_slct.event_id].key}`);
// } else {
// console.log('License key (email) not used.');
// $events_loc.leads.tab[$events_slct.event_id] = 'start';
// }
// } else {
// console.log('Not logged in using shared exhibit staff passcode.');
// $events_loc.leads.tab[$events_slct.event_id] = 'start';
// }
onMount(() => {
console.log('Events Session [slug]: +page.svelte');
// if (!$events_slct.event_id) {
// console.log(`No ID! Nothing to show. Try setting the ID again.`);
// $events_slct.event_id = $events_slct.event_id;
// let url_person_id = data.url.searchParams.get('person_id');
// let url_person_pass = data.url.searchParams.get('person_pass');
// let url_presentation_id = data.url.searchParams.get('presentation_id');
// let url_presenter_id = data.url.searchParams.get('presenter_id');
// let url_session_id = data.url.searchParams.get('session_id');
// // This should be turned into a function to correctly authenticate the person and allow them access to their presentations and presenter details.
// if (url_person_pass) {
// console.log(`ae_events_pres_mgmt session [slug] +page.svelte: event_session_id=${$events_slct.event_session_id}; person_id=${url_person_id}; person_pass=${url_person_pass}; presentation_id=${url_presentation_id}; presenter_id=${url_presenter_id}`);
// // Using temporary session values first.
// $events_sess.auth__entered_key = url_person_id;
// $events_sess.auth__entered_passcode = url_person_pass;
// $events_sess.auth__person.id = url_person_id;
// $events_sess.auth__person.presentation_id = url_presentation_id;
// $events_sess.auth__person.presenter_id = url_presenter_id;
// $events_sess.auth__person.session_id = url_session_id; // For POC or LCI Champions for sessions. Do not set for a presenter!
// $events_sess.auth__kv.person[url_person_id] = true;
// $events_sess.auth__kv.session[$events_slct.event_session_id] = true; // For POC or LCI Champions for sessions. Do not set for a presenter!
// $events_sess.auth__kv.presentation[url_presentation_id] = true;
// $events_sess.auth__kv.presenter[url_presenter_id] = true;
// // We need to set the selected presentation and presenter objects based on the respective IDs.
// if (url_presentation_id && url_presenter_id) {
// $events_slct.event_presentation_id = url_presentation_id;
// $events_slct.event_presenter_id = url_presenter_id;
// }
// // console.log('Remove the passcode from the URL.');
// // data.url.searchParams.delete('person_id');
// // data.url.searchParams.delete('person_pass');
// // data.url.searchParams.delete('presentation_id');
// // data.url.searchParams.delete('presenter_id');
// // data.url.searchParams.delete('session_id');
// // let new_url = data.url.toString()
// // console.log(new_url);
// // goto(new_url, {replaceState: true});
// if (url_presenter_id) {
// presenter_sign_in();
// }
// if (url_session_id) {
// session_sign_in();
// }
// }
// if (!$events_slct.event_session_id) {
// console.log(`No Session ID! Nothing to show. Try setting the Session ID again.`);
// $events_slct.event_session_id = $events_slct.event_session_id;
// }
let url_person_id = data.url.searchParams.get('person_id');
let url_person_pass = data.url.searchParams.get('person_pass');
let url_presentation_id = data.url.searchParams.get('presentation_id');
let url_presenter_id = data.url.searchParams.get('presenter_id');
let url_session_id = data.url.searchParams.get('session_id');
// This should be turned into a function to correctly authenticate the person and allow them access to their presentations and presenter details.
if (url_person_pass) {
console.log(`ae_events_pres_mgmt session [slug] +page.svelte: event_session_id=${$events_slct.event_session_id}; person_id=${url_person_id}; person_pass=${url_person_pass}; presentation_id=${url_presentation_id}; presenter_id=${url_presenter_id}`);
// Using temporary session values first.
$events_sess.auth__entered_key = url_person_id;
$events_sess.auth__entered_passcode = url_person_pass;
$events_sess.auth__person.id = url_person_id;
$events_sess.auth__person.presentation_id = url_presentation_id;
$events_sess.auth__person.presenter_id = url_presenter_id;
$events_sess.auth__person.session_id = url_session_id; // For POC or LCI Champions for sessions. Do not set for a presenter!
$events_sess.auth__kv.person[url_person_id] = true;
$events_sess.auth__kv.session[$events_slct.event_session_id] = true; // For POC or LCI Champions for sessions. Do not set for a presenter!
$events_sess.auth__kv.presentation[url_presentation_id] = true;
$events_sess.auth__kv.presenter[url_presenter_id] = true;
// We need to set the selected presentation and presenter objects based on the respective IDs.
if (url_presentation_id && url_presenter_id) {
$events_slct.event_presentation_id = url_presentation_id;
$events_slct.event_presenter_id = url_presenter_id;
}
// console.log('Remove the passcode from the URL.');
// data.url.searchParams.delete('person_id');
// data.url.searchParams.delete('person_pass');
// data.url.searchParams.delete('presentation_id');
// data.url.searchParams.delete('presenter_id');
// data.url.searchParams.delete('session_id');
// let new_url = data.url.toString()
// console.log(new_url);
// goto(new_url, {replaceState: true});
if (url_presenter_id) {
presenter_sign_in();
}
if (url_session_id) {
session_sign_in();
}
}
});
function presenter_sign_in() {
console.log('Presenter sign in with URL values');
// function presenter_sign_in() {
// console.log('Presenter sign in with URL values');
$ae_loc.authenticated_access = true;
$ae_loc.access_type = 'authenticated';
// $ae_loc.authenticated_access = true;
// $ae_loc.access_type = 'authenticated';
$events_loc.auth__person.id = $events_sess.auth__entered_key; // person_id
$events_loc.auth__person.entered_key = $events_sess.auth__entered_key; // also person_id in this case
$events_loc.auth__person.email = 'test@example.com';
$events_loc.auth__person.full_name = 'Test Person';
// $events_loc.auth__person.id = $events_sess.auth__entered_key; // person_id
// $events_loc.auth__person.entered_key = $events_sess.auth__entered_key; // also person_id in this case
// $events_loc.auth__person.email = 'test@example.com';
// $events_loc.auth__person.full_name = 'Test Person';
$events_loc.auth__kv.person[$events_sess.entered_key] = true;
$events_loc.auth__kv.session[$events_slct.event_session_id] = false; // Set to false for presenters.
$events_loc.auth__kv.presentation[$events_sess.auth__person.presentation_id] = true;
$events_loc.auth__kv.presenter[$events_sess.auth__person.presenter_id] = true;
// $events_loc.auth__kv.person[$events_sess.entered_key] = true;
// $events_loc.auth__kv.session[$events_slct.event_session_id] = false; // Set to false for presenters.
// $events_loc.auth__kv.presentation[$events_sess.auth__person.presentation_id] = true;
// $events_loc.auth__kv.presenter[$events_sess.auth__person.presenter_id] = true;
// Setting again here... just because for now.
$events_slct.event_presentation_id = $events_sess.auth__person.presentation_id;
$events_slct.event_presenter_id = $events_sess.auth__person.presenter_id;
}
function session_sign_in() {
console.log('Session sign in with URL values');
$ae_loc.authenticated_access = true;
$ae_loc.access_type = 'authenticated';
$events_loc.auth__person.id = $events_sess.auth__entered_key; // person_id
$events_loc.auth__person.entered_key = $events_sess.auth__entered_key; // also person_id in this case
$events_loc.auth__person.email = 'test@example.com';
$events_loc.auth__person.full_name = 'Test Person';
$events_loc.auth__kv.person[$events_sess.entered_key] = true;
$events_loc.auth__kv.session[$events_slct.event_session_id] = true;
$events_loc.auth__kv.presentation[$events_sess.auth__person.presentation_id] = false; // Set to false for session POC (LCI Champions).
$events_loc.auth__kv.presenter[$events_sess.auth__person.presenter_id] = false; // Set to false for session POC (LCI Champions).
// Setting again here... just because for now.
// $events_slct.event_presentation_id = $events_sess.auth__person.presentation_id;
// $events_slct.event_presenter_id = $events_sess.auth__person.presenter_id;
}
function sign_out() {
$ae_loc.authenticated_access = false;
$ae_loc.access_type = 'anonymous';
$events_loc.auth__person = {
id: null,
email: null,
full_name: null,
entered_key: null,
entered_passcode: null,
};
$events_loc.auth__kv = {
session: {},
presentation: {},
presenter: {},
person: {},
};
}
// $: if ($slct_trigger == 'load__event_file_obj_li') {
// console.log(`load__event_file_obj_li event_session_id=${$slct.account_id}`);
// $slct_trigger = null;
// let ae_params = {
// qry__enabled: 'all',
// qry__hidden: 'all',
// qry__limit: 50
// }
// events_func.handle_load_ae_obj_li__event_file({
// api_cfg: $ae_api,
// for_obj_type: 'event_session',
// for_obj_id: $events_slct.event_session_id,
// params: ae_params,
// try_cache: false
// });
// // Setting again here... just because for now.
// $events_slct.event_presentation_id = $events_sess.auth__person.presentation_id;
// $events_slct.event_presenter_id = $events_sess.auth__person.presenter_id;
// }
// $: if ($slct_trigger == 'load__event_presenter_obj_li') {
// console.log(`load__event_presenter_obj_li event_session_id=${$slct.account_id}`);
// function session_sign_in() {
// console.log('Session sign in with URL values');
// $slct_trigger = null;
// $ae_loc.authenticated_access = true;
// $ae_loc.access_type = 'authenticated';
// events_func.handle_load_ae_obj_li__event_presenter({
// api_cfg: $ae_api,
// event_presentation_id: $events_slct.event_presentation_id,
// try_cache: false
// });
// $events_loc.auth__person.id = $events_sess.auth__entered_key; // person_id
// $events_loc.auth__person.entered_key = $events_sess.auth__entered_key; // also person_id in this case
// $events_loc.auth__person.email = 'test@example.com';
// $events_loc.auth__person.full_name = 'Test Person';
// $events_loc.auth__kv.person[$events_sess.entered_key] = true;
// $events_loc.auth__kv.session[$events_slct.event_session_id] = true;
// $events_loc.auth__kv.presentation[$events_sess.auth__person.presentation_id] = false; // Set to false for session POC (LCI Champions).
// $events_loc.auth__kv.presenter[$events_sess.auth__person.presenter_id] = false; // Set to false for session POC (LCI Champions).
// // Setting again here... just because for now.
// // $events_slct.event_presentation_id = $events_sess.auth__person.presentation_id;
// // $events_slct.event_presenter_id = $events_sess.auth__person.presenter_id;
// }
// function sign_out() {
// $ae_loc.authenticated_access = false;
// $ae_loc.access_type = 'anonymous';
// function send_init_confirm_email(
// {
// to_email,
// to_name,
// person_id,
// person_passcode,
// presentation_id,
// presenter_id,
// presentation_name
// }: {
// to_email: string,
// to_name: string,
// person_id: string,
// person_passcode: string,
// presentation_id: string,
// presenter_id: string,
// presentation_name: string
// }
// ) {
// console.log(`*** send_init_confirm_email() *** to ${to_email}.`);
// // let new_passcode = Math.floor(Math.random() * 900000) + 100000
// // to_email = 'test+agree@oneskyit.com';
// let sign_in_url = encodeURI(`${data.url.origin}/events_pres_mgmt/session/${$events_slct.event_session_id}?person_id=${person_id}&person_pass=${person_passcode}&presentation_id=${presentation_id}&presenter_id=${presenter_id}`)
// let subject = `LCI Congress 2024 - Pres Mgmt Hub Sign In Link for ${$lq__event_session_obj?.name} (ID: ${$events_slct.event_session_id})`;
// let body_html = `
// <div>${to_name},
// <p>Your link to sign into the presentation management hub for LCI Congress 2024 is below. If you did not request this, please delete and ignore this email. If you need to make any changes or updates to your submission, you may use this link again later.</p>
// </div>
// <div>
// <strong>26th Annual Lean Construction Congress (2024)</strong>:<br>
// <p>
// Session Name: ${$lq__event_session_obj?.name}<br>
// Session ID: ${$lq__event_session_obj?.event_session_id_random}<br>
// Presentation Name: ${presentation_name}<br>
// Presentation ID: ${presentation_id}
// </p>
// <p>Use this link to view or update your LCI 2024 presentation information.<br>
// Copy and paste link: <a href="${sign_in_url}">${sign_in_url}</a></p>
// </div>`;
// api.send_email({
// api_cfg: $ae_api,
// from_email: 'noreply+presmgmt@oneskyit.com',
// from_name: 'LCI 2024 Pres Mgmt Hub',
// to_email: to_email,
// subject: subject,
// body_html: body_html,
// });
// $events_loc.auth__person = {
// id: null,
// email: null,
// full_name: null,
// entered_key: null,
// entered_passcode: null,
// };
// $events_loc.auth__kv = {
// session: {},
// presentation: {},
// presenter: {},
// person: {},
// };
// }
// function send_sign_in_poc_email(
// {
// to_email,
// to_name,
// person_id,
// person_passcode,
// session_id,
// }: {
// to_email: string,
// to_name: string,
// person_id: string,
// person_passcode: string,
// session_id: string,
// }
// ) {
// console.log(`*** send_sign_in_poc_email() *** to ${to_email}.`);
// // to_email = 'test+agree@oneskyit.com';
// let sign_in_url = encodeURI(`${data.url.origin}/events_pres_mgmt/session/${$events_slct.event_session_id}?person_id=${person_id}&person_pass=${person_passcode}&session_id=${session_id}`);
// let subject = `LCI Congress 2024 - Pres Mgmt Hub Sign In Link for ${$lq__event_session_obj?.name} (ID: ${$events_slct.event_session_id})`;
// let body_html = `
// <div>${to_name},
// <p>Your link to sign into the presentation management hub as a session Champion for LCI Congress 2024 is below. If you did not request this, please delete and ignore this email. If you need to make any changes or updates to your submission, you may use this link again later.</p>
// </div>
// <div>
// <strong>26th Annual Lean Construction Congress (2024)</strong>:<br>
// <p>
// Session Name: ${$lq__event_session_obj?.name}<br>
// Session ID: ${$lq__event_session_obj?.event_session_id_random}
// </p>
// <p>Use this link to view or update your LCI 2024 session information.<br>
// Copy and paste link: <a href="${sign_in_url}">${sign_in_url}</a></p>
// </div>`;
// api.send_email({
// api_cfg: $ae_api,
// from_email: 'noreply+presmgmt@oneskyit.com',
// from_name: 'LCI 2024 Pres Mgmt Hub',
// to_email: to_email,
// subject: subject,
// body_html: body_html,
// });
// }
$: if ($lq__event_session_obj) {
// Generate a QR code for the object ID.
// ae_promises.generate_qr_code_obj_id = core_func.generate_qr_code({api_cfg: $ae_api, account_id: $slct.account_id, qr_type: 'obj', qr_id: $lq__event_session_obj?.event_session_id_random, obj_type: 'event_session', obj_id: $lq__event_session_obj?.event_session_id_random});
// Generate a QR code for the URL.
let qr_id_url = `${$lq__event_session_obj?.event_session_id_random}_url`;
// URL for this page (be sure to URL encode it):
let url_str = `${$ae_loc.url_origin}/events_pres_mgmt/session/${$lq__event_session_obj.event_session_id_random}`;
url_str = encodeURI(url_str);
ae_promises.generate_qr_code_url = core_func.generate_qr_code({api_cfg: $ae_api, account_id: $slct.account_id, qr_type: 'str', qr_id: qr_id_url, str: url_str});
}
</script>
<svelte:head>
<title>
Session: {ae_util.shorten_string({string: $lq__event_session_obj?.name, max_length: 12})} ({$lq__event_session_obj?.event_session_id}) - Pres Mgmt - {$events_loc?.title}
@@ -458,33 +216,227 @@ $: if ($lq__event_session_obj) {
class="ae_events_pres_mgmt_event_session md:container h-full mx-auto flex flex-col space-y-4 pt-0 pb-8"
>
<!-- New standard page specific menu 2024-08-01 -->
<div
class="pres_mgmt__session_menu {ae_snip.classes__events_pres_mgmt_menu}"
class:border-none={!$events_loc.pres_mgmt.show_content__session_help}
class:border-none={!$events_loc.pres_mgmt.show_menu__session}
>
<div>
<a href="/events_pres_mgmt/event/{$events_slct.event_session_obj.event_id_random}" class="{ae_snip.classes__events_pres_mgmt_menu__button}">
<span class="fas fa-arrow-left mx-1"></span>
Back to Session Search
</a>
<!-- The menu button options -->
<div
class="flex flex-row items-center justify-around w-full">
<button
type="button"
on:click={() => {
$events_loc.pres_mgmt.show_content__session_help = !$events_loc.pres_mgmt.show_content__session_help;
}}
class="{ae_snip.classes__events_pres_mgmt_menu__button}"
title="Help and information about the session"
<span
class="ae_menu__navigation_options"
>
<span class="fas fa-question-circle mx-1"></span>
{#if $events_loc.pres_mgmt.show_content__session_help}
Hide
{:else}
Show
<a href="/events_pres_mgmt/event/{$events_slct.event_session_obj.event_id_random}" class="{ae_snip.classes__events_pres_mgmt_menu__button}">
<span class="fas fa-arrow-left mx-1"></span>
Back to Session Search
</a>
</span>
<span
class="ae_menu__object_options"
>
<button
type="button"
on:click={() => {
if ($events_loc.pres_mgmt.show_menu__session == 'options') {
$events_loc.pres_mgmt.show_menu__session = null;
} else {
$events_loc.pres_mgmt.show_menu__session = 'options';
}
// $events_loc.pres_mgmt.show_menu__session = !$events_loc.pres_mgmt.show_menu__session;
}}
class="{ae_snip.classes__events_pres_mgmt_menu__button}"
title="Options for the session"
>
<span class="fas fa-cog mx-1"></span>
{#if $events_loc.pres_mgmt.show_menu__session == 'options'}
Hide
{:else}
Show
{/if}
Options
</button>
<button
type="button"
on:click={() => {
if ($events_loc.pres_mgmt.show_menu__session == 'help') {
$events_loc.pres_mgmt.show_menu__session = null;
} else {
$events_loc.pres_mgmt.show_menu__session = 'help';
}
// $events_loc.pres_mgmt.show_menu__session = !$events_loc.pres_mgmt.show_menu__session;
}}
class="{ae_snip.classes__events_pres_mgmt_menu__button}"
title="Help and information about the session"
>
<span class="fas fa-question-circle mx-1"></span>
{#if $events_loc.pres_mgmt.show_menu__session == 'help'}
Hide
{:else}
Show
{/if}
Help?
</button>
</span>
<span
class="ae_menu__action_options"
>
<!-- The Sign_in_out component is usually just a button for Sign Out if they are signed in as a POC or presenter. -->
<Sign_in_out data={data} />
</span>
</div> <!-- End of the menu button options -->
<!-- The expanded menu area for information and options -->
<div
class="flex flex-row items-center justify-around w-full"
class:hidden={$events_loc.pres_mgmt.show_menu__session != 'options'}
>
<Element_ae_crud
trigger_patch={ae_triggers.priority}
api_cfg={$ae_api}
object_type={'event_session'}
object_id={$lq__event_session_obj?.event_session_id_random}
field_name={'priority'}
field_type={'button'}
field_value={ae_tmp.value__priority}
allow_null={true}
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:`, e.detail);
events_func.handle_load_ae_obj_id__event_session({api_cfg: $ae_api, event_session_id: $lq__event_session_obj?.event_session_id_random, log_lvl: 1});
}}
>
{@html $lq__event_session_obj?.priority ? '<span class="fas fa-star m-1"></span> High Priority' : '<span class="far fa-star m-1"></span> Priority not set'}
<button
on:click={() => {
ae_tmp.value__priority = !$lq__event_session_obj?.priority;
// $events_slct.exhibit_tracking_obj.priority = !$lq__event_session_obj?.priority;
ae_triggers.priority = true;
}}
class="btn btn-sm variant-soft-warning"
>
{@html ($lq__event_session_obj?.priority ? '<span class="fas fa-arrow-down m-1"></span> Not Priority?' : '<span class="fas fa-star m-1"></span> High?')}
</button>
</Element_ae_crud>
<Element_ae_crud
trigger_patch={ae_triggers.hide}
api_cfg={$ae_api}
object_type={'event_session'}
object_id={$lq__event_session_obj?.event_session_id_random}
field_name={'hide'}
field_type={'button'}
field_value={ae_tmp.value__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:`, e.detail);
events_func.handle_load_ae_obj_id__event_session({api_cfg: $ae_api, event_session_id: $lq__event_session_obj?.event_session_id_random, log_lvl: 1});
}}
>
{($lq__event_session_obj?.hide ? 'Hidden' : 'Not Hidden')}
<button
on:click={() => {
ae_tmp.value__hide = !$lq__event_session_obj?.hide;
// $events_slct.exhibit_tracking_obj.hide = !$lq__event_session_obj?.hide;
ae_triggers.hide = true;
}}
class="btn btn-sm variant-soft-warning"
>
{@html ($lq__event_session_obj?.hide ? '<span class="fas fa-eye m-1"></span> Unhide?' : '<span class="fas fa-eye-slash m-1"></span> Hide?')}
</button>
</Element_ae_crud>
<!-- Enable/Disable -->
<Element_ae_crud
trigger_patch={ae_triggers.enable}
api_cfg={$ae_api}
object_type={'event_session'}
object_id={$lq__event_session_obj?.event_session_id_random}
field_name={'enable'}
field_type={'button'}
field_value={ae_tmp.value__enable}
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:`, e.detail);
events_func.handle_load_ae_obj_id__event_session({api_cfg: $ae_api, event_session_id: $lq__event_session_obj?.event_session_id_random, log_lvl: 1})
.then(function (load_results) {
// Maybe reload page?
// window.location.reload();
});
}}
>
{($lq__event_session_obj?.enable ? 'Enabled' : 'Disabled')}
<button
on:click={() => {
ae_tmp.value__enable = !$lq__event_session_obj?.enable;
// $events_slct.exhibit_tracking_obj.hide = !$lq__event_session_obj?.hide;
ae_triggers.enable = true;
}}
class="btn btn-sm variant-soft-warning"
>
{@html ($lq__event_session_obj?.enable ? '<span class="fas fa-toggle-on m-1"></span> Disable?' : '<span class="fas fa-toggle-off m-1"></span> Enable?')}
</button>
</Element_ae_crud>
<!-- Sort -->
<!-- Group -->
{#if $ae_loc.access_type && $ae_loc.access_type != 'anonymous' && $ae_loc.access_type != 'authenticated'}
{#if $ae_loc.edit_mode}
<button
on:click={() => {
$ae_loc.edit_mode = false;
}}
class="btn btn-sm variant-soft-success"
>
<span class="fas fa-toggle-on mx-1"></span>
Edit Mode On
</button>
{:else}
<button
on:click={() => {
$ae_loc.edit_mode = true;
}}
class="btn btn-sm variant-soft-warning"
>
<span class="fas fa-toggle-off mx-1"></span>
Edit Mode?
</button>
{/if}
{/if}
Help?
</button>
</div>
<Element_data_store
@@ -496,29 +448,30 @@ $: if ($lq__event_session_obj) {
class_li="bg-yellow-100 p-2 rounded-md border border-yellow-200"
show_edit={false}
show_edit_btn={true}
hide={!$events_loc.pres_mgmt.show_content__session_help}
hide={$events_loc.pres_mgmt.show_menu__session != 'help'}
/>
<div>
<button
type="button"
on:click={() => {
$events_loc.pres_mgmt.show_content__session_help = !$events_loc.pres_mgmt.show_content__session_help;
$events_loc.pres_mgmt.show_menu__session = !$events_loc.pres_mgmt.show_menu__session;
}}
class="btn btn-sm mx-1 variant-ghost-error hover:variant-filled-error"
class:hidden={!$events_loc.pres_mgmt.show_content__session_help}
title="Help and information about the session search"
class:hidden={!$events_loc.pres_mgmt.show_menu__session}
title="Collapse the expanded menu"
>
<span class="fas fa-question-circle mx-1"></span>
{#if $events_loc.pres_mgmt.show_content__session_help}
<span class="fas fa-chevron-up mx-1"></span>
{#if $events_loc.pres_mgmt.show_menu__session}
Hide
<!-- Collapse -->
{:else}
Show
{/if}
Help?
<!-- Menu? -->
</button>
</div>
</div>
</div> <!-- End of the new standard page specific menu -->
{#if !$lq__event_session_obj}
<span class="fas fa-spinner fa-spin mx-1"></span>
@@ -534,6 +487,57 @@ $: if ($lq__event_session_obj) {
</section>
{#if $events_sess.pres_mgmt?.show_form__sign_in}
<div class="ae_quick_modal_container">
<section class="ae_quick_popover">
<div class="flex flex-col items-center">
<!-- <div class="h-4 p-10"> -->
<!-- </div> -->
<section class="ae_modal_scrollfix">
<button
on:click={
() => {
$events_sess.pres_mgmt.show_content__agree_text = null;
}
}
class="btn btn-md variant-soft-secondary hover:variant-filled-secondary float-right"
>
<span class="fas fa-times mx-1"></span>
Close
</button>
</section>
<!-- <div class="h-12"> -->
<button
on:click={
() => {
$events_sess.pres_mgmt.show_content__agree_text = null;
}
}
class="btn btn-md variant-soft-secondary hover:variant-filled-secondary"
>
<span class="fas fa-times mx-1"></span>
Close
</button>
<!-- </div> -->
</div>
</section>
</div>
{/if}
<style lang="postcss">
/* Use the div.ae_quick_modal_container to block background clicks when using the section.ae_quick_popover. */

View File

@@ -69,47 +69,47 @@ onMount(() => {
});
function presenter_sign_in() {
console.log('Presenter sign in with URL values');
// function presenter_sign_in() {
// console.log('Presenter sign in with URL values');
$ae_loc.authenticated_access = true;
$ae_loc.access_type = 'authenticated';
// $ae_loc.authenticated_access = true;
// $ae_loc.access_type = 'authenticated';
$events_loc.auth__person.id = $events_sess.auth__entered_key; // person_id
$events_loc.auth__person.entered_key = $events_sess.auth__entered_key; // also person_id in this case
$events_loc.auth__person.email = 'test@example.com';
$events_loc.auth__person.full_name = 'Test Person';
// $events_loc.auth__person.id = $events_sess.auth__entered_key; // person_id
// $events_loc.auth__person.entered_key = $events_sess.auth__entered_key; // also person_id in this case
// $events_loc.auth__person.email = 'test@example.com';
// $events_loc.auth__person.full_name = 'Test Person';
$events_loc.auth__kv.person[$events_sess.entered_key] = true;
$events_loc.auth__kv.session[$events_slct.event_session_id] = false; // Set to false for presenters.
$events_loc.auth__kv.presentation[$events_sess.auth__person.presentation_id] = true;
$events_loc.auth__kv.presenter[$events_sess.auth__person.presenter_id] = true;
// $events_loc.auth__kv.person[$events_sess.entered_key] = true;
// $events_loc.auth__kv.session[$events_slct.event_session_id] = false; // Set to false for presenters.
// $events_loc.auth__kv.presentation[$events_sess.auth__person.presentation_id] = true;
// $events_loc.auth__kv.presenter[$events_sess.auth__person.presenter_id] = true;
// Setting again here... just because for now.
$events_slct.event_presentation_id = $events_sess.auth__person.presentation_id;
$events_slct.event_presenter_id = $events_sess.auth__person.presenter_id;
}
// // Setting again here... just because for now.
// $events_slct.event_presentation_id = $events_sess.auth__person.presentation_id;
// $events_slct.event_presenter_id = $events_sess.auth__person.presenter_id;
// }
function session_sign_in() {
console.log('Session sign in with URL values');
// function session_sign_in() {
// console.log('Session sign in with URL values');
$ae_loc.authenticated_access = true;
$ae_loc.access_type = 'authenticated';
// $ae_loc.authenticated_access = true;
// $ae_loc.access_type = 'authenticated';
$events_loc.auth__person.id = $events_sess.auth__entered_key; // person_id
$events_loc.auth__person.entered_key = $events_sess.auth__entered_key; // also person_id in this case
$events_loc.auth__person.email = 'test@example.com';
$events_loc.auth__person.full_name = 'Test Person';
// $events_loc.auth__person.id = $events_sess.auth__entered_key; // person_id
// $events_loc.auth__person.entered_key = $events_sess.auth__entered_key; // also person_id in this case
// $events_loc.auth__person.email = 'test@example.com';
// $events_loc.auth__person.full_name = 'Test Person';
$events_loc.auth__kv.person[$events_sess.entered_key] = true;
$events_loc.auth__kv.session[$events_slct.event_session_id] = true;
$events_loc.auth__kv.presentation[$events_sess.auth__person.presentation_id] = false; // Set to false for session POC (LCI Champions).
$events_loc.auth__kv.presenter[$events_sess.auth__person.presenter_id] = false; // Set to false for session POC (LCI Champions).
// $events_loc.auth__kv.person[$events_sess.entered_key] = true;
// $events_loc.auth__kv.session[$events_slct.event_session_id] = true;
// $events_loc.auth__kv.presentation[$events_sess.auth__person.presentation_id] = false; // Set to false for session POC (LCI Champions).
// $events_loc.auth__kv.presenter[$events_sess.auth__person.presenter_id] = false; // Set to false for session POC (LCI Champions).
// Setting again here... just because for now.
// $events_slct.event_presentation_id = $events_sess.auth__person.presentation_id;
// $events_slct.event_presenter_id = $events_sess.auth__person.presenter_id;
}
// // Setting again here... just because for now.
// // $events_slct.event_presentation_id = $events_sess.auth__person.presentation_id;
// // $events_slct.event_presenter_id = $events_sess.auth__person.presenter_id;
// }
function sign_out() {
$ae_loc.authenticated_access = false;
@@ -734,7 +734,7 @@ $: if ($lq__event_session_obj) {
</span>
{/if}
{#if $events_loc.auth__person?.id}
<!-- {#if $events_loc.auth__person?.id}
<button
type="button"
class="btn btn-sm variant-soft-warning hover:variant-ghost-warning"
@@ -746,9 +746,10 @@ $: if ($lq__event_session_obj) {
<span class="fas fa-times mx-1"></span>
Sign Out (Clear Session)
</button>
{/if}
{/if} -->
{:else}
<div
class="text-xl text-red-500 font-bold text-center p-1 m-1 border border-red-200 rounded-md bg-red-100"
>
@@ -761,92 +762,6 @@ $: if ($lq__event_session_obj) {
</p>
</div>
{#if ($events_sess.auth__person.presenter_id) || ($events_sess.auth__person.session_id)}
<div
class="border border-gray-200 p-2 rounded-md m-2 text-center space-y-2"
>
<div
class="text-sm text-gray-500"
>
Use the link that was sent to your email address to sign in or enter your key and passcode to sign in.
</div>
<div>
<input
type="text"
class="input max-w-36"
placeholder="Key"
value={$events_sess.auth__entered_key ?? ''}
on:input={(e) => $events_sess.auth__entered_key = e.target.value}
>
<input
type="text"
class="input max-w-36"
placeholder="Passcode"
value={$events_sess.auth__entered_passcode ?? ''}
on:input={(e) => $events_sess.auth__entered_passcode = e.target.value}
>
<button
class="btn btn-md variant-ghost-primary"
on:click={() => {
console.log('Sign in with URL values');
if ($events_sess.auth__person.presenter_id) {
presenter_sign_in();
} else if ($events_sess.auth__person.session_id) {
session_sign_in();
}
// This needs to be moved to a function!
// $events_loc.auth__person.id = $events_sess.auth__entered_key; // person_id
// $events_loc.auth__person.entered_key = $events_sess.auth__entered_key; // also person_id in this case
// $events_loc.auth__person.email = 'test@example.com';
// $events_loc.auth__person.full_name = 'Test Person';
// $events_loc.auth__kv.person[$events_sess.entered_key] = true;
// $events_loc.auth__kv.session[$events_slct.event_session_id] = true;
// $events_loc.auth__kv.presentation[$events_sess.auth__person.presentation_id] = true;
// $events_loc.auth__kv.presenter[$events_sess.auth__person.presenter_id] = true;
// Setting again here... just because for now.
// $events_slct.event_presentation_id = $events_sess.auth__person.presentation_id;
// $events_slct.event_presenter_id = $events_sess.auth__person.presenter_id;
}}
>
<span class="fas fa-sign-in-alt mx-1"></span>
Sign In
</button>
</div>
<div
class="text-sm text-gray-500"
>
For:
session: {$events_sess.auth__person.session_id}
presentation: {$events_sess.auth__person.presentation_id}
presenter: {$events_sess.auth__person.presenter_id}
<br>
{$lq__event_presentation_obj?.name ? `Name: "${$lq__event_presentation_obj.name}"` : '-- not set --'}
</div>
{#if $events_loc.auth__person?.id}
<button
type="button"
class="btn btn-sm variant-soft-warning"
on:click={() => {
sign_out();
alert('You have been signed out.');
}}
>
<span class="fas fa-times mx-1"></span>
Sign Out
</button>
{/if}
</div>
{/if}
{/if}
</div>

View File

@@ -0,0 +1,233 @@
<script lang="ts">
// /** @type {import('./$types').PageData} */
export let data: any;
import { onMount } from 'svelte';
import { browser } from '$app/environment';
import { goto } from '$app/navigation';
import { ae_snip, ae_loc, ae_sess, ae_api, ae_trig, slct, slct_trigger } from '$lib/ae_stores';
import { events_loc, events_sess, events_slct, events_trigger, events_trig_kv } from '$lib/ae_events_stores';
if (browser) {
// onMount(() => {
console.log('Browser environment detected.');
let url_person_id = data.url.searchParams.get('person_id');
let url_person_pass = data.url.searchParams.get('person_pass');
let url_presentation_id = data.url.searchParams.get('presentation_id');
let url_presenter_id = data.url.searchParams.get('presenter_id');
let url_session_id = data.url.searchParams.get('session_id');
// This should be turned into a function to correctly authenticate the person and allow them access to their presentations and presenter details.
if (url_person_pass) {
console.log(`ae_events_pres_mgmt session [slug] +page.svelte: event_session_id=${$events_slct.event_session_id}; person_id=${url_person_id}; person_pass=${url_person_pass}; presentation_id=${url_presentation_id}; presenter_id=${url_presenter_id}`);
// Using temporary session values first.
$events_sess.auth__entered_key = url_person_id;
$events_sess.auth__entered_passcode = url_person_pass;
$events_sess.auth__person.id = url_person_id;
$events_sess.auth__person.presentation_id = url_presentation_id;
$events_sess.auth__person.presenter_id = url_presenter_id;
$events_sess.auth__person.session_id = url_session_id; // For POC or LCI Champions for sessions. Do not set for a presenter!
$events_sess.auth__kv.person[url_person_id] = true;
$events_sess.auth__kv.session[$events_slct.event_session_id] = true; // For POC or LCI Champions for sessions. Do not set for a presenter!
$events_sess.auth__kv.presentation[url_presentation_id] = true;
$events_sess.auth__kv.presenter[url_presenter_id] = true;
// We need to set the selected presentation and presenter objects based on the respective IDs.
if (url_presentation_id && url_presenter_id) {
$events_slct.event_presentation_id = url_presentation_id;
$events_slct.event_presenter_id = url_presenter_id;
}
console.log('Remove the passcode from the URL.');
data.url.searchParams.delete('person_id');
data.url.searchParams.delete('person_pass');
data.url.searchParams.delete('presentation_id');
data.url.searchParams.delete('presenter_id');
data.url.searchParams.delete('session_id');
let new_url = data.url.toString()
console.log(new_url);
goto(new_url, {replaceState: false});
if (url_presenter_id) {
presenter_sign_in();
}
if (url_session_id) {
session_sign_in();
}
}
// });
}
// For session point of contact (moderator, chair, LCI Champions).
function session_sign_in() {
console.log('Session sign in with URL values');
$ae_loc.authenticated_access = true;
$ae_loc.access_type = 'authenticated';
$events_loc.auth__person.id = $events_sess.auth__entered_key; // person_id
$events_loc.auth__person.entered_key = $events_sess.auth__entered_key; // also person_id in this case
$events_loc.auth__person.email = 'test@example.com';
$events_loc.auth__person.full_name = 'Test Person';
$events_loc.auth__kv.person[$events_sess.entered_key] = true;
$events_loc.auth__kv.session[$events_slct.event_session_id] = true;
$events_loc.auth__kv.presentation[$events_sess.auth__person.presentation_id] = false; // Set to false for session POC (LCI Champions).
$events_loc.auth__kv.presenter[$events_sess.auth__person.presenter_id] = false; // Set to false for session POC (LCI Champions).
// Setting again here... just because for now.
// $events_slct.event_presentation_id = $events_sess.auth__person.presentation_id;
// $events_slct.event_presenter_id = $events_sess.auth__person.presenter_id;
}
// For presenters within a session presentation.
function presenter_sign_in() {
console.log('Presenter sign in with URL values');
$ae_loc.authenticated_access = true;
$ae_loc.access_type = 'authenticated';
$events_loc.auth__person.id = $events_sess.auth__entered_key; // person_id
$events_loc.auth__person.entered_key = $events_sess.auth__entered_key; // also person_id in this case
$events_loc.auth__person.email = 'test@example.com';
$events_loc.auth__person.full_name = 'Test Person';
$events_loc.auth__kv.person[$events_sess.entered_key] = true;
$events_loc.auth__kv.session[$events_slct.event_session_id] = false; // Set to false for presenters.
$events_loc.auth__kv.presentation[$events_sess.auth__person.presentation_id] = true;
$events_loc.auth__kv.presenter[$events_sess.auth__person.presenter_id] = true;
// Setting again here... just because for now.
$events_slct.event_presentation_id = $events_sess.auth__person.presentation_id;
$events_slct.event_presenter_id = $events_sess.auth__person.presenter_id;
}
function sign_out() {
$ae_loc.authenticated_access = false;
$ae_loc.access_type = 'anonymous';
$events_loc.auth__person = {
id: null,
email: null,
full_name: null,
entered_key: null,
entered_passcode: null,
};
$events_loc.auth__kv = {
session: {},
presentation: {},
presenter: {},
person: {},
};
$events_sess.auth__person.presenter_id = null;
// $events_sess.auth__person.presentation_id = null;
$events_sess.auth__person.session_id = null;
}
</script>
<span>
{#if $events_loc.auth__person?.id}
<button
type="button"
class="btn btn-sm variant-soft-warning"
on:click={() => {
sign_out();
alert('You have been signed out.');
}}
>
<span class="fas fa-times mx-1"></span>
Sign Out
</button>
{:else if $events_sess.auth__person.presenter_id || $events_sess.auth__person.session_id}
<div
class="border border-gray-200 p-2 rounded-md m-2 text-center space-y-2"
>
<div
class="text-sm text-gray-500"
>
Use the link that was sent to your email address to sign in or enter your key and passcode to sign in.
</div>
<div>
<input
type="text"
class="input max-w-36"
placeholder="Key"
value={$events_sess.auth__entered_key ?? ''}
on:input={(e) => $events_sess.auth__entered_key = e.target.value}
>
<input
type="text"
class="input max-w-36"
placeholder="Passcode"
value={$events_sess.auth__entered_passcode ?? ''}
on:input={(e) => $events_sess.auth__entered_passcode = e.target.value}
>
<button
class="btn btn-md variant-ghost-primary"
on:click={() => {
console.log('Sign in with URL values');
if ($events_sess.auth__person.presenter_id) {
presenter_sign_in();
} else if ($events_sess.auth__person.session_id) {
session_sign_in();
}
// This needs to be moved to a function!
// $events_loc.auth__person.id = $events_sess.auth__entered_key; // person_id
// $events_loc.auth__person.entered_key = $events_sess.auth__entered_key; // also person_id in this case
// $events_loc.auth__person.email = 'test@example.com';
// $events_loc.auth__person.full_name = 'Test Person';
// $events_loc.auth__kv.person[$events_sess.entered_key] = true;
// $events_loc.auth__kv.session[$events_slct.event_session_id] = true;
// $events_loc.auth__kv.presentation[$events_sess.auth__person.presentation_id] = true;
// $events_loc.auth__kv.presenter[$events_sess.auth__person.presenter_id] = true;
// Setting again here... just because for now.
// $events_slct.event_presentation_id = $events_sess.auth__person.presentation_id;
// $events_slct.event_presenter_id = $events_sess.auth__person.presenter_id;
}}
>
<span class="fas fa-sign-in-alt mx-1"></span>
Sign In
</button>
</div>
<div
class="text-sm text-gray-500"
>
For:
session: {$events_sess.auth__person.session_id}
presentation: {$events_sess.auth__person.presentation_id}
presenter: {$events_sess.auth__person.presenter_id}
<br>
<!-- {$lq__event_presentation_obj?.name ? `Name: "${$lq__event_presentation_obj.name}"` : '-- not set --'} -->
</div>
<!-- {#if $events_loc.auth__person?.id}
<button
type="button"
class="btn btn-sm variant-soft-warning"
on:click={() => {
sign_out();
alert('You have been signed out.');
}}
>
<span class="fas fa-times mx-1"></span>
Sign Out
</button>
{/if} -->
</div>
{/if}
</span>