From a17b7aad9d747d515adee800f958bb8b0b868c36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Cie=C5=9Blikowski?= Date: Tue, 12 May 2026 13:46:49 +0200 Subject: [PATCH] =?UTF-8?q?out=5Fof=5Fschedule=20jako=20w=C5=82=C4=85czone?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dashboard.template.php | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/dashboard.template.php b/dashboard.template.php index e8f2662..3ea3c47 100644 --- a/dashboard.template.php +++ b/dashboard.template.php @@ -93,6 +93,7 @@ const COMMAND_WAKE = "WakeUp"; const COMMAND_SHUTDOWN = "ShutDown"; const COMMAND_RESTART = "Restart"; + const ON_STATUSES = new Set(["running", "out_of_schedule"]); // Application state const state = { @@ -145,6 +146,10 @@ restartAutoRefresh(); } + function isTerminalOn(terminal) { + return ON_STATUSES.has(String(terminal?.status || "").toLowerCase()); + } + function setupListeners() { document.getElementById("nscRefreshInterval").addEventListener("change", (e) => { let val = parseInt(e.target.value); @@ -362,7 +367,7 @@ function renderGlobalExhibition(allLocations, visibleLocations) { const container = document.getElementById("nscExhibitionCard"); const allT = state.terminals; - const onT = allT.filter(t => t.status?.toLowerCase() === 'running').length; + const onT = allT.filter(isTerminalOn).length; const total = allT.length; const pct = total ? Math.round((onT/total)*100) : 0; const visibleLocationCount = visibleLocations.length; @@ -408,14 +413,14 @@ function renderLocationCard(loc) { const total = loc.terminals.length; - const on = loc.terminals.filter(t => t.status?.toLowerCase() === 'running').length; + const on = loc.terminals.filter(isTerminalOn).length; const pct = total ? Math.round((on/total)*100) : 0; const pcs = loc.terminals.filter(t => t.player === 'PC'); - const onPcs = pcs.filter(t => t.status?.toLowerCase() === 'running').length; + const onPcs = pcs.filter(isTerminalOn).length; const lights = loc.terminals.filter(t => t.player === 'CTRL'); - const onLights = lights.filter(t => t.status?.toLowerCase() === 'running').length; + const onLights = lights.filter(isTerminalOn).length; let dotCls = "bg-slate-400"; if(total > 0 && on === total) dotCls = "bg-emerald-500 shadow-glow"; @@ -506,7 +511,7 @@ if(!terminals.length) return ''; const rows = terminals.map(t => { - const isRun = t.status?.toLowerCase() === 'running'; + const isRun = isTerminalOn(t); const statusCls = isRun ? "text-emerald-500" : "text-slate-400 dark:text-slate-500"; const dotCls = isRun ? "bg-emerald-500" : "bg-slate-300 dark:bg-slate-600";