Work on the Launcher and how a "group" presenter is shown.
This commit is contained in:
@@ -4,7 +4,9 @@ export let data: any;
|
|||||||
let log_lvl = 0;
|
let log_lvl = 0;
|
||||||
|
|
||||||
import { onMount } from 'svelte';
|
import { onMount } from 'svelte';
|
||||||
|
import { sineIn } from 'svelte/easing';
|
||||||
import { liveQuery } from "dexie";
|
import { liveQuery } from "dexie";
|
||||||
|
import { Drawer, Footer } from 'flowbite-svelte';
|
||||||
import { ae_util } from '$lib/ae_utils';
|
import { ae_util } from '$lib/ae_utils';
|
||||||
import { db_events } from "$lib/db_events";
|
import { db_events } from "$lib/db_events";
|
||||||
import { ae_snip, ae_loc, ae_sess, ae_api, ae_trig, slct, slct_trigger } from '$lib/ae_stores';
|
import { ae_snip, ae_loc, ae_sess, ae_api, ae_trig, slct, slct_trigger } from '$lib/ae_stores';
|
||||||
@@ -115,13 +117,23 @@ console.log(`BROWSER Events - [event_id] launcher +layout.svelte start`);
|
|||||||
</title>
|
</title>
|
||||||
</svelte:head>
|
</svelte:head>
|
||||||
|
|
||||||
|
<div class="static max-w-screen-xl m-auto border border-gray-200 dark:border-gray-600 mt-12 mb-12">
|
||||||
|
|
||||||
|
|
||||||
{#if !$lq__event_obj}
|
{#if !$lq__event_obj}
|
||||||
<div class="flex flex-row items-center justify-center">
|
<div class="flex flex-row items-center justify-center">
|
||||||
<span class="fas fa-spinner fa-spin mx-1"></span>
|
<span class="fas fa-spinner fa-spin mx-1"></span>
|
||||||
<span>Loading...</span>
|
<span>Loading...</span>
|
||||||
</div>
|
</div>
|
||||||
{:else}
|
{:else}
|
||||||
<header id="Main-Header" class="flex flex-row items-center justify-evenly">
|
<header
|
||||||
|
id="Main-Header"
|
||||||
|
class="
|
||||||
|
absolute top-0 start-0 z-20 w-full p-1
|
||||||
|
flex flex-row items-center justify-evenly bg-slate-200
|
||||||
|
m-auto
|
||||||
|
"
|
||||||
|
>
|
||||||
<h3 class="h4 text-center italic">Æ Presentation Launcher</h3>
|
<h3 class="h4 text-center italic">Æ Presentation Launcher</h3>
|
||||||
<h2 class="h3 text-center">{$lq__event_obj?.name}</h2>
|
<h2 class="h3 text-center">{$lq__event_obj?.name}</h2>
|
||||||
<h3 class="h4 text-center italic">{$lq__event_location_obj?.name}
|
<h3 class="h4 text-center italic">{$lq__event_location_obj?.name}
|
||||||
@@ -139,7 +151,7 @@ console.log(`BROWSER Events - [event_id] launcher +layout.svelte start`);
|
|||||||
container h-full min-w-full w-full
|
container h-full min-w-full w-full
|
||||||
flex flex-row flex-wrap sm:flex-nowrap gap-0
|
flex flex-row flex-wrap sm:flex-nowrap gap-0
|
||||||
justify-center
|
justify-center
|
||||||
py-1 px-2 pb-16
|
py-1 px-2
|
||||||
bg-gray-100
|
bg-gray-100
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
@@ -154,6 +166,7 @@ console.log(`BROWSER Events - [event_id] launcher +layout.svelte start`);
|
|||||||
border-r border-gray-200
|
border-r border-gray-200
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
|
|
||||||
<!-- {#await $events_slct.id_li__event_location}
|
<!-- {#await $events_slct.id_li__event_location}
|
||||||
Loading location list... a
|
Loading location list... a
|
||||||
{:then event_location_obj_li} -->
|
{:then event_location_obj_li} -->
|
||||||
@@ -181,6 +194,17 @@ console.log(`BROWSER Events - [event_id] launcher +layout.svelte start`);
|
|||||||
{/if} -->
|
{/if} -->
|
||||||
<!-- {/await} -->
|
<!-- {/await} -->
|
||||||
<!-- Root: slct Location ID: {$events_slct.event_location_id ?? '-- not set --'} -->
|
<!-- Root: slct Location ID: {$events_slct.event_location_id ?? '-- not set --'} -->
|
||||||
|
|
||||||
|
<div class="absolute top-0 left-0 z-20 text-center">
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
on:click={() => ($events_loc.launcher.hide_drawer__cfg = false)}
|
||||||
|
class="btn btn-sm p-0.5 variant-soft-error hover:variant-filled-error"
|
||||||
|
>
|
||||||
|
<span class="fas fa-biohazard"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section
|
<section
|
||||||
@@ -192,6 +216,7 @@ console.log(`BROWSER Events - [event_id] launcher +layout.svelte start`);
|
|||||||
max-w-full
|
max-w-full
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
|
|
||||||
<!-- {#if $events_trigger == 'load__event_session_obj' && $events_slct.event_session_id}
|
<!-- {#if $events_trigger == 'load__event_session_obj' && $events_slct.event_session_id}
|
||||||
<Event_launcher_session_view
|
<Event_launcher_session_view
|
||||||
slct_event_session_id={$events_slct.event_session_id}
|
slct_event_session_id={$events_slct.event_session_id}
|
||||||
@@ -223,9 +248,170 @@ console.log(`BROWSER Events - [event_id] launcher +layout.svelte start`);
|
|||||||
>
|
>
|
||||||
</Event_launcher_session_view>
|
</Event_launcher_session_view>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<slot />
|
<slot />
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<Footer
|
||||||
|
class="
|
||||||
|
absolute bottom-0 start-0 z-20 w-full p-1
|
||||||
|
md:flex md:items-center md:justify-between
|
||||||
|
text-base hover:text-lg
|
||||||
|
shadow
|
||||||
|
bg-gray-200 border-t border-gray-200
|
||||||
|
dark:bg-gray-800 dark:border-gray-600
|
||||||
|
opacity-50 hover:opacity-100
|
||||||
|
transition-all duration-1000
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<div>
|
||||||
|
[Help]
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
[Session Name]
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
[Online/Offline]
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
[Recording]
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
[Date and Time]
|
||||||
|
</div>
|
||||||
|
</Footer>
|
||||||
|
|
||||||
|
|
||||||
|
<Drawer
|
||||||
|
bgColor="bg-blue"
|
||||||
|
placement="left"
|
||||||
|
transitionType="fly"
|
||||||
|
transitionParams={
|
||||||
|
{
|
||||||
|
x: -320,
|
||||||
|
duration: 200,
|
||||||
|
easing: sineIn
|
||||||
|
}
|
||||||
|
}
|
||||||
|
width={'min-w-96 w-1/2 max-w-screen-lg'}
|
||||||
|
bind:hidden={$events_loc.launcher.hide_drawer__cfg}
|
||||||
|
id="sidebar1"
|
||||||
|
>
|
||||||
|
|
||||||
|
<div class="flex flex-row items-center justify-between">
|
||||||
|
<h2
|
||||||
|
class="text-center mb-4 text-base font-semibold text-gray-500 dark:text-gray-400"
|
||||||
|
>
|
||||||
|
Launcher Configuration
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<button
|
||||||
|
on:click={() => ($events_loc.launcher.hide_drawer__cfg = true)}
|
||||||
|
class="pb-4 pl-4 dark:text-white"
|
||||||
|
>
|
||||||
|
<span class="fas fa-times"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h3
|
||||||
|
class="text-center mb-4 text-sm font-semibold"
|
||||||
|
>
|
||||||
|
Controller
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
<h3
|
||||||
|
class="text-center mb-4 text-sm font-semibold"
|
||||||
|
>
|
||||||
|
Screen Saver
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
<h3
|
||||||
|
class="text-center mb-4 text-sm font-semibold"
|
||||||
|
>
|
||||||
|
App Modes
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
<h3
|
||||||
|
class="text-center mb-4 text-sm font-semibold"
|
||||||
|
>
|
||||||
|
Local Config Refresh
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<div class="text-center">
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
on:click={() => ($events_loc.launcher.hide_drawer__debug = false)}
|
||||||
|
class="btn btn-sm p-1 variant-soft-error hover:variant-filled-error"
|
||||||
|
>
|
||||||
|
<span class="fas fa-bug"></span>
|
||||||
|
<!-- Debug -->
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<div class="grid grid-cols-2 gap-4">
|
||||||
|
<button
|
||||||
|
class="btn btn-sm variant-ghost-tertiary hover:variant-filled-tertiary"
|
||||||
|
>Test 1</button>
|
||||||
|
<button
|
||||||
|
class="btn btn-sm variant-ghost-tertiary hover:variant-filled-tertiary"
|
||||||
|
>Test 2</button>
|
||||||
|
</div>
|
||||||
|
</Drawer>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<Drawer
|
||||||
|
activateClickOutside={false}
|
||||||
|
backdrop={false}
|
||||||
|
class="bg-red-100 opacity-75 hover:opacity-95 transition-all duration-1000"
|
||||||
|
placement="bottom"
|
||||||
|
transitionType="fly"
|
||||||
|
transitionParams={
|
||||||
|
{
|
||||||
|
y: 320,
|
||||||
|
duration: 200,
|
||||||
|
easing: sineIn
|
||||||
|
}
|
||||||
|
}
|
||||||
|
width={'min-h-96 h-1/2'}
|
||||||
|
bind:hidden={$events_loc.launcher.hide_drawer__debug}
|
||||||
|
id="sidebar2"
|
||||||
|
>
|
||||||
|
<div class="flex flex-row items-center justify-between">
|
||||||
|
<h2
|
||||||
|
class="text-center mb-4 text-base font-semibold text-gray-500 dark:text-gray-400"
|
||||||
|
>
|
||||||
|
Debug
|
||||||
|
</h2>
|
||||||
|
<button on:click={() => ($events_loc.launcher.hide_drawer__debug = true)} class="mb-4 dark:text-white">
|
||||||
|
<span class="fas fa-times"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<!-- Show the launcher configuration in JSON format -->
|
||||||
|
<pre class="text-xs">
|
||||||
|
{JSON.stringify($events_loc.launcher, null, 2)}
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</Drawer>
|
||||||
@@ -13,7 +13,7 @@ import { events_func } from '$lib/ae_events_functions';
|
|||||||
|
|
||||||
// export let slct_event_presentation_id: string;
|
// export let slct_event_presentation_id: string;
|
||||||
// export let slct_event_presenter_id: string;
|
// export let slct_event_presenter_id: string;
|
||||||
export let lq__event_presenter_obj: any;
|
export let lq__event_presenter_obj: any; // This is not actually the LiveQuery object. This was pulled from the list of presenters for a presentation. With Svelte 5 this should not matter.
|
||||||
|
|
||||||
let ae_promises: key_val = {
|
let ae_promises: key_val = {
|
||||||
get_li__event_file: null,
|
get_li__event_file: null,
|
||||||
@@ -32,8 +32,15 @@ let lq__event_file_obj_li = liveQuery(
|
|||||||
|
|
||||||
|
|
||||||
<strong>
|
<strong>
|
||||||
<span class="fas fa-user"></span>
|
{#if lq__event_presenter_obj?.given_name && lq__event_presenter_obj?.given_name != 'Group' }
|
||||||
{#if lq__event_presenter_obj?.full_name }{lq__event_presenter_obj?.full_name}{:else }{lq__event_presenter_obj?.given_name}{/if }
|
<span class="fas fa-user"></span>
|
||||||
|
{lq__event_presenter_obj?.full_name}
|
||||||
|
{:else if lq__event_presenter_obj?.given_name == 'Group'}
|
||||||
|
<span class="fas fa-users"></span>
|
||||||
|
{lq__event_presenter_obj?.affiliations}
|
||||||
|
{:else}
|
||||||
|
--not set--
|
||||||
|
{/if }
|
||||||
</strong>
|
</strong>
|
||||||
|
|
||||||
{#if !lq__event_presenter_obj?.file_count}
|
{#if !lq__event_presenter_obj?.file_count}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import { db_events } from "$lib/db_events";
|
|||||||
import { ae_snip, ae_loc, ae_sess, ae_api, ae_trig, slct, slct_trigger } from '$lib/ae_stores';
|
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';
|
import { events_loc, events_sess, events_slct, events_trigger, events_trig_kv } from '$lib/ae_events_stores';
|
||||||
import { events_func } from '$lib/ae_events_functions';
|
import { events_func } from '$lib/ae_events_functions';
|
||||||
|
import { ae_util } from '$lib/ae_utils';
|
||||||
|
|
||||||
// Exports
|
// Exports
|
||||||
export let container_class_li: string|Array<string> = [];
|
export let container_class_li: string|Array<string> = [];
|
||||||
@@ -103,16 +104,29 @@ let lq__event_presentation_obj = liveQuery(
|
|||||||
>
|
>
|
||||||
<a
|
<a
|
||||||
href="/events_pres_mgmt/presenter/{event_presenter_obj.event_presenter_id_random}"
|
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"
|
class="btn variant-ghost-primary hover:variant-filled-primary font-bold min-w-64 max-w-96 my-0.5 overflow-hidden"
|
||||||
class:btn-sm={display_mode != 'default'}
|
class:btn-sm={display_mode != 'default'}
|
||||||
title="Person ID: {event_presenter_obj.person_id_random}; Email: {event_presenter_obj.email}"
|
title="Person ID: {event_presenter_obj.person_id_random}; Email: {event_presenter_obj.email}"
|
||||||
>
|
>
|
||||||
<span class="fas fa-user m-0.5"></span>
|
{#if event_presenter_obj?.given_name && event_presenter_obj?.given_name != 'Group' }
|
||||||
|
<span class="fas fa-user m-0.5"></span>
|
||||||
|
{:else if event_presenter_obj?.given_name == 'Group'}
|
||||||
|
<span class="fas fa-users m-0.5"></span>
|
||||||
|
{:else}
|
||||||
|
<span class="fas fa-user-slash m-0.5"></span>
|
||||||
|
{/if }
|
||||||
{#if event_presenter_obj.priority}
|
{#if event_presenter_obj.priority}
|
||||||
<span class="fas fa-star text-yellow-500 text-xs m-0.5"></span>
|
<span class="fas fa-star text-yellow-500 text-xs m-0.5"></span>
|
||||||
{/if}
|
{/if}
|
||||||
<span class="text-center grow">
|
<span class="text-center grow">
|
||||||
{event_presenter_obj.full_name}
|
|
||||||
|
{#if event_presenter_obj?.given_name && event_presenter_obj?.given_name != 'Group' }
|
||||||
|
{event_presenter_obj?.full_name}
|
||||||
|
{:else if event_presenter_obj?.given_name == 'Group'}
|
||||||
|
{ae_util.shorten_string({string: event_presenter_obj?.affiliations, max_length: 25})}
|
||||||
|
{:else}
|
||||||
|
--not set--
|
||||||
|
{/if }
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
{#if event_presenter_obj?.file_count}
|
{#if event_presenter_obj?.file_count}
|
||||||
|
|||||||
Reference in New Issue
Block a user