Lots of work on the Launcher and configuration. Looks pretty good and useful.
This commit is contained in:
@@ -24,7 +24,6 @@ import {
|
||||
// RefreshCw,
|
||||
Satellite
|
||||
} from '@lucide/svelte';
|
||||
// import { AppBar } from '@skeletonlabs/skeleton-svelte';
|
||||
|
||||
// *** Import Aether specific variables and functions
|
||||
import type { key_val } from '$lib/ae_stores';
|
||||
@@ -42,7 +41,7 @@ import Element_websocket_v2 from '$lib/element_websocket_v2.svelte';
|
||||
|
||||
// *** Set initial variables
|
||||
// Quickly save the data passed from the parent(s) to the Svelte stores, localStorage, and other.
|
||||
$slct.account_id = data.account_id;
|
||||
// $slct.account_id = data.account_id;
|
||||
// console.log(`$slct.account_id = `, $slct.account_id);
|
||||
let ae_acct = data[$slct.account_id];
|
||||
// console.log(`ae_acct = `, ae_acct);
|
||||
@@ -639,13 +638,14 @@ async function handle_event_file_close () {
|
||||
|
||||
|
||||
if (!$events_loc.launcher.idle_timer) {
|
||||
$events_loc.launcher.idle_timer = 4 * 60 * 1000;
|
||||
$events_loc.launcher.idle_timer = 5 * 60 * 1000;
|
||||
}
|
||||
// $events_loc.launcher.idle_timer = .25 * 60 * 1000;
|
||||
if (!$events_loc.launcher.idle_cycle) {
|
||||
$events_loc.launcher.idle_cycle = 5 * 1000;
|
||||
}
|
||||
if (!$events_loc.launcher.idle_loop_period) {
|
||||
$events_loc.launcher.idle_loop_period = 1 * 60 * 1000;
|
||||
$events_loc.launcher.idle_loop_period = 3 * 60 * 1000;
|
||||
}
|
||||
// Safer to run this once the component has mounted and initialized???
|
||||
listen({
|
||||
@@ -654,19 +654,27 @@ listen({
|
||||
});
|
||||
|
||||
let idle_timer_interval: any = $state();
|
||||
clearInterval(idle_timer_interval);
|
||||
// clearInterval(idle_timer_interval);
|
||||
|
||||
let saver_looping: boolean = $state(false);
|
||||
|
||||
function handle_idle_client() {
|
||||
// Start the digital poster screen saver after additional idle time.
|
||||
|
||||
if ($events_slct?.event_session_obj && $events_slct.event_session_obj?.type_code == 'poster') {
|
||||
console.log('Open poster file in poster session...');
|
||||
if ($lq__event_session_obj && $lq__event_session_obj?.type_code == 'poster') {
|
||||
if (log_lvl) {
|
||||
console.log(`Turned idle! Open poster file for poster session in ${($events_loc.launcher.idle_loop_period / 60000).toPrecision(4)} minutes.`);
|
||||
}
|
||||
if (saver_looping) {
|
||||
console.log('Screen saver already looping.');
|
||||
return false;
|
||||
}
|
||||
|
||||
saver_looping = true;
|
||||
|
||||
idle_timer_interval = setInterval(() => {
|
||||
if (log_lvl) {
|
||||
console.log('Screen saver tick!');
|
||||
// console.log($events_loc.launcher.screen_saver_img_kv);
|
||||
|
||||
console.log(`Screen saver tick every ${($events_loc.launcher.idle_loop_period / 60000).toPrecision(4)} minutes after initially being idle for ${($events_loc.launcher.idle_timer / 60000).toPrecision(4)} minutes.`);
|
||||
}
|
||||
|
||||
// console.log($events_loc.launcher.screen_saver_img_kv.length());
|
||||
@@ -677,7 +685,9 @@ function handle_idle_client() {
|
||||
let modal_title: string = '';
|
||||
|
||||
const rand_index = Math.floor(Math.random() * Object.keys($events_loc.launcher.screen_saver_img_kv).length);
|
||||
console.log(rand_index);
|
||||
if (log_lvl) {
|
||||
console.log(`Random index = ${rand_index}`);
|
||||
}
|
||||
|
||||
let event_file_obj = $events_loc.launcher.screen_saver_img_kv[Object.keys($events_loc.launcher.screen_saver_img_kv)[rand_index]];
|
||||
|
||||
@@ -686,11 +696,14 @@ function handle_idle_client() {
|
||||
// $slct_trigger = 'event_file';
|
||||
// $events_loc.launcher.event_file_open.open_status = 'open';
|
||||
|
||||
$events_sess.launcher.modal__open = event_file_obj.event_file_id_random;
|
||||
if (!modal_title) {
|
||||
modal_title = event_file_obj.filename;
|
||||
}
|
||||
$events_sess.launcher.modal__title = modal_title;
|
||||
$events_sess.launcher.modal__open_event_file_id = null;
|
||||
// clearInterval(idle_timer_interval);
|
||||
// if (!modal_title) {
|
||||
// modal_title = event_file_obj.filename;
|
||||
// }
|
||||
$events_sess.launcher.modal__title = event_file_obj.filename ?? '*';
|
||||
$events_sess.launcher.modal__open_event_file_id = $events_slct.event_file_id;
|
||||
$events_sess.launcher.modal__event_file_obj = event_file_obj;
|
||||
// $events_sess.launcher.modal__img_src = `/event/file/${event_file_obj.event_file_id_random}/download`;
|
||||
|
||||
return true;
|
||||
@@ -700,20 +713,47 @@ function handle_idle_client() {
|
||||
}, $events_loc.launcher.idle_loop_period ?? 2 * 60 * 1000);
|
||||
// console.log('User is no longer idle???');
|
||||
} else {
|
||||
console.log('Not a poster session so no screen saver.');
|
||||
saver_looping = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
onIdle(() => {
|
||||
// This is called when the user has gone idle for the specified time.
|
||||
|
||||
// alert('USER IS IDLE');
|
||||
|
||||
log_lvl = 1;
|
||||
if (log_lvl) {
|
||||
console.log(`User has gone idle after ${($events_loc.launcher?.idle_timer / 60000).toPrecision(4)} minutes.`, $idle);
|
||||
}
|
||||
clearInterval(idle_timer_interval);
|
||||
|
||||
handle_idle_client();
|
||||
|
||||
});
|
||||
|
||||
$effect(() => {
|
||||
if ($idle) {
|
||||
log_lvl = 1;
|
||||
console.log(`User is idle after ${$events_loc.launcher?.idle_timer} milliseconds.`);
|
||||
handle_idle_client();
|
||||
// log_lvl = 1;
|
||||
// if (log_lvl) {
|
||||
// console.log(`User has gone idle after ${($events_loc.launcher?.idle_timer / 60000).toPrecision(4)} minutes.`, $idle);
|
||||
// }
|
||||
// // clearInterval(idle_timer_interval);
|
||||
|
||||
// if (!saver_looping) {
|
||||
// handle_idle_client();
|
||||
// }
|
||||
} else {
|
||||
console.log('User is no longer idle.');
|
||||
log_lvl = 0;
|
||||
log_lvl = 1;
|
||||
if (log_lvl) {
|
||||
console.log(`User is active again after being idle. End screen saver if active.`, $idle);
|
||||
}
|
||||
clearInterval(idle_timer_interval);
|
||||
saver_looping = false;
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@@ -943,6 +983,8 @@ $effect(() => {
|
||||
</div>
|
||||
|
||||
|
||||
<!-- hover:z-20 -->
|
||||
<!-- hover:scale-105 -->
|
||||
<footer
|
||||
id="Main-Footer"
|
||||
class:hidden={$events_loc.launcher.hide__launcher_footer}
|
||||
@@ -955,7 +997,8 @@ $effect(() => {
|
||||
flex flex-row items-center justify-between
|
||||
sm:flex-row md:items-center md:justify-between
|
||||
|
||||
text-xs hover:text-base
|
||||
text-xs hover:sm:text-sm hover:md:text-base hover:lg:text-lg
|
||||
|
||||
|
||||
bg-gray-200 border-t border-gray-200
|
||||
dark:bg-gray-800 dark:border-gray-600
|
||||
@@ -968,10 +1011,25 @@ $effect(() => {
|
||||
[Help]
|
||||
</div> -->
|
||||
|
||||
<div class="slct_location_name transition-all duration-1000">
|
||||
<span class="fas fa-map-marker-alt"></span>
|
||||
<div
|
||||
class="slct_location_name transition-all duration-1000"
|
||||
title="Location ID: {$lq__event_location_obj?.event_location_id} Name: {$lq__event_location_obj?.name} | Device ID: {$lq__event_device_obj?.event_device_id} Name: {$lq__event_device_obj?.name}"
|
||||
>
|
||||
<button
|
||||
class=""
|
||||
onclick={() => {
|
||||
$ae_loc.edit_mode = !$ae_loc.edit_mode;
|
||||
}}
|
||||
title="Toggle Edit Mode to show location options and more"
|
||||
>
|
||||
<span class="sr-only">Location:</span>
|
||||
<span class="fas fa-map-marker-alt"></span>
|
||||
</button>
|
||||
{$lq__event_location_obj?.name}
|
||||
{$lq__event_device_obj?.name}
|
||||
{#if $lq__event_device_obj?.name}
|
||||
<span class="fas fa-laptop mx-1"></span>
|
||||
{$lq__event_device_obj?.name}
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<span
|
||||
@@ -994,30 +1052,34 @@ $effect(() => {
|
||||
|
||||
<span
|
||||
class:hidden={$events_loc.launcher.app_mode != 'native'}
|
||||
class="*:hover:inline px-1 rounded-md"
|
||||
class="group px-1 rounded-md"
|
||||
class:preset-tonal-warning={!$events_sess.launcher?.av_recording_status}
|
||||
class:preset-tonal-success={$events_sess.launcher?.av_recording_status}
|
||||
>
|
||||
{#if $events_sess.launcher?.av_recording_status}
|
||||
<span class="fas fa-video mx-1"></span>
|
||||
<span class="hidden">
|
||||
<span class="hidden group-hover:inline">
|
||||
AV Recording Active
|
||||
</span>
|
||||
{:else}
|
||||
<span class="fas fa-video-slash mx-1"></span>
|
||||
<span class="hidden">
|
||||
<span class="hidden group-hover:inline">
|
||||
AV Recording Inactive
|
||||
</span>
|
||||
{/if}
|
||||
</span>
|
||||
|
||||
<div class="current_datetime">
|
||||
<div class="current_datetime font-mono px-2 hover:font-bold hover:bg-white transition-all">
|
||||
<span class="fas fa-calendar-alt"></span>
|
||||
{ae_util.iso_datetime_formatter($time,'date_full_no_year')}
|
||||
<span class="fas fa-clock"></span>
|
||||
{#if $events_loc.launcher?.time_hours == 12}
|
||||
{ae_util.iso_datetime_formatter($time,'time_12_long')}
|
||||
{:else}
|
||||
{ae_util.iso_datetime_formatter($time,'time_long')}
|
||||
{ae_util.iso_datetime_formatter($time,'time_long')}
|
||||
{/if}
|
||||
<!-- <span class="fas fa-hourglass fa-spin"></span> -->
|
||||
<!-- <span class="fas fa-hourglass"></span> -->
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user