Got the screen saver mostly working now. Now config options yet though.
This commit is contained in:
@@ -8,6 +8,7 @@ import { goto } from '$app/navigation';
|
||||
import { sineIn } from 'svelte/easing';
|
||||
import { liveQuery } from "dexie";
|
||||
import { Drawer, Footer, Modal } from 'flowbite-svelte';
|
||||
import { listen, idle, onIdle } from 'svelte-idle'
|
||||
|
||||
import type { key_val } from '$lib/ae_stores';
|
||||
import { ae_util } from '$lib/ae_utils/ae_utils';
|
||||
@@ -160,6 +161,7 @@ function handle_ws_conn(event) {
|
||||
}
|
||||
|
||||
|
||||
// This client received a WebSocket message.
|
||||
// When this is called something seems to go wrong. It creates a loop when connected.
|
||||
function handle_ws_recv(event) {
|
||||
if (log_lvl) {
|
||||
@@ -265,6 +267,7 @@ function handle_ws_recv(event) {
|
||||
|
||||
// NOTE: This is not finished yet.
|
||||
if (obj_type == 'event_file') {
|
||||
clearInterval(idle_timer_interval);
|
||||
$events_slct.event_file_id = obj_id;
|
||||
|
||||
$events_sess.launcher.modal__open = $events_slct.event_file_id;
|
||||
@@ -333,6 +336,7 @@ function handle_ws_recv(event) {
|
||||
}
|
||||
|
||||
|
||||
// This client sent a WebSocket message.
|
||||
function handle_ws_sent(event) {
|
||||
console.log('*** handle_ws_sent() ***');
|
||||
console.log(event);
|
||||
@@ -431,6 +435,87 @@ export let close_event_file_as_modal = function close_event_file_as_modal({}) {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if (!$events_loc.launcher.idle_timer) {
|
||||
$events_loc.launcher.idle_timer = 4 * 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;
|
||||
}
|
||||
// Safer to run this once the component has mounted and initialized???
|
||||
listen({
|
||||
timer: $events_loc.launcher.idle_timer, // $events_loc.launcher.idle_timer ?? 30 * 60 * 1000,
|
||||
cycle: $events_loc.launcher.idle_cycle ?? 5 * 1000, // How frequently the idle status is checked
|
||||
});
|
||||
|
||||
let idle_timer_interval: any;
|
||||
clearInterval(idle_timer_interval);
|
||||
|
||||
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...');
|
||||
|
||||
idle_timer_interval = setInterval(() => {
|
||||
if (log_lvl) {
|
||||
console.log('Screen saver tick!');
|
||||
// console.log($events_loc.launcher.screen_saver_img_kv);
|
||||
|
||||
}
|
||||
|
||||
// console.log($events_loc.launcher.screen_saver_img_kv.length());
|
||||
|
||||
if ($events_loc.launcher.screen_saver_img_kv) {
|
||||
console.log($events_loc.launcher.screen_saver_img_kv);
|
||||
|
||||
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);
|
||||
|
||||
let event_file_obj = $events_loc.launcher.screen_saver_img_kv[Object.keys($events_loc.launcher.screen_saver_img_kv)[rand_index]];
|
||||
|
||||
$events_slct.event_file_id = event_file_obj.event_file_id_random;
|
||||
$events_slct.event_file_obj = event_file_obj;
|
||||
// $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__img_src = `/event/file/${event_file_obj.event_file_id_random}/download`;
|
||||
|
||||
return true;
|
||||
}
|
||||
console.log('No screen saver images found.');
|
||||
return false;
|
||||
}, $events_loc.launcher.idle_loop_period ?? 2 * 60 * 1000);
|
||||
// console.log('User is no longer idle???');
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$: {
|
||||
if ($idle) {
|
||||
log_lvl = 1;
|
||||
console.log(`User is idle after ${$events_loc.launcher?.idle_timer} milliseconds.`);
|
||||
handle_idle_client();
|
||||
} else {
|
||||
console.log('User is no longer idle.');
|
||||
log_lvl = 0;
|
||||
clearInterval(idle_timer_interval);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user