More work on the WebSockets. Improved status and WS triggers. Better online/offline status.

This commit is contained in:
Scott Idem
2025-10-16 14:48:10 -04:00
parent 3d6b7c412c
commit 8d15a5ba0b
6 changed files with 189 additions and 25 deletions

View File

@@ -81,7 +81,7 @@ import { events_loc, events_sess, events_slct, events_trigger, events_trig } fro
<div class="flex flex-row gap-1 p-0.5">
<select
bind:value={$events_loc.launcher.controller}
class="input select"
class="input select text-sm preset-tonal-surface"
>
<option value="local">Local Only</option>
<option value="remote">Remotely WS Controlled</option>
@@ -92,18 +92,34 @@ import { events_loc, events_sess, events_slct, events_trigger, events_trig } fro
<input
bind:value={$events_loc.launcher.controller_group_code}
placeholder="Controller group code"
class="input"
class="input preset-tonal-surface text-sm"
ondblclick={() => {
$events_sess.launcher.controller_unlock_group_code = !$events_sess.launcher.controller_unlock_group_code;
$events_loc.launcher.ws_connect = false;
if ($events_loc.launcher.ws_connect) {
$events_sess.launcher.trigger__ws_disconnect = true;
} else {
// $events_sess.launcher.trigger__ws_connect = true;
}
// $events_loc.launcher.ws_connect = false;
}}
readonly={!$events_sess.launcher.controller_unlock_group_code}
>
<button
onclick={() => {
$events_loc.launcher.ws_connect = !$events_loc.launcher.ws_connect;
if ($events_loc.launcher.ws_connect) {
// console.log('HERE!!! Triggering WS disconnect');
// NOTE: When the ws_disconnect is finished, it should set ws_connect to false.
// $events_loc.launcher.ws_connect = false;
$events_sess.launcher.trigger__ws_disconnect = true;
} else {
// console.log('HERE!!! Triggering WS connect');
// NOTE: We need to set ws_connect to true so that it will show the WS element.
$events_loc.launcher.ws_connect = true;
$events_sess.launcher.trigger__ws_connect = true;
}
$events_sess.launcher.controller_unlock_group_code = false;
$events_sess.launcher.controller_cmd = null,
$events_sess.launcher.controller_trigger_send = null;
@@ -174,40 +190,40 @@ import { events_loc, events_sess, events_slct, events_trigger, events_trig } fro
>
<!-- Run screen saver after idle time exceeded $events_loc.launcher.idle_timer = 4 * 60 * 1000 -->
<label
class="flex flex-row gap-1 items-center justify-start"
class="flex flex-row gap-1 items-center justify-start text-sm"
>
<span class="w-36">Idle Time (ms):</span>
<input
type="number"
min={3000}
bind:value={$events_loc.launcher.idle_timer}
class="input input-sm w-28 text-right"
class="input input-sm w-28 text-right preset-tonal-surface"
>
</label>
<!-- How often is idle checked? $events_loc.launcher.idle_cycle = 5 * 1000 -->
<label
class="flex flex-row gap-1 items-center justify-start"
class="flex flex-row gap-1 items-center justify-start text-sm"
>
<span class="w-36">Cycle Check (ms):</span>
<input
type="number"
min={500}
bind:value={$events_loc.launcher.idle_cycle}
class="input input-sm w-28 text-right"
class="input input-sm w-28 text-right preset-tonal-surface"
>
</label>
<!-- How often the image changes? $events_loc.launcher.idle_loop_period = 1 * 60 * 1000 -->
<label
class="flex flex-row gap-1 items-center justify-start"
class="flex flex-row gap-1 items-center justify-start text-sm"
>
<span class="w-36">Image Change Period (ms):</span>
<input
type="number"
min={750}
bind:value={$events_loc.launcher.idle_loop_period}
class="input input-sm w-28 text-right"
class="input input-sm w-28 text-right preset-tonal-surface"
>
</label>
@@ -530,7 +546,7 @@ import { events_loc, events_sess, events_slct, events_trigger, events_trig } fro
>
<div class="flex flex-col gap-1 items-center justify-start w-full">
<select
class="input w-full"
class="input w-full preset-tonal-surface text-sm"
onchange={event => {
const val = (event.target as HTMLSelectElement).value;
if (val && val != '') {
@@ -641,6 +657,8 @@ import { events_loc, events_sess, events_slct, events_trigger, events_trig } fro
</button>
</div>
<div class="text-xs text-gray-500 dark:text-gray-400">API: {$ae_api.base_url}</div>
</div>
</section>