mirror of
https://github.com/myronblair/jarvis
synced 2026-06-30 17:50:23 -05:00
feat: kiosk-mode hides server, agents, guardian panels + HA/agents/memory/proxmox from bottom bar
- Adds body.kiosk-mode class on fullscreen entry/exit - Hides: #server-panel, #tab-agents, #tab-guardian, tab buttons - Hides bottom bar: Home Assistant, Agents, Memory, Proxmox - Falls back to INTEL tab if agents/guardian was active on kiosk entry - All elements remain visible in normal/tablet mode
This commit is contained in:
@@ -1364,3 +1364,23 @@ body.tablet-mode .alert-item { font-size:0.75rem; padding:9px 11px; }
|
|||||||
|
|
||||||
/* ── BOTTOM BAR ─────────────────────────────────────────────────── */
|
/* ── BOTTOM BAR ─────────────────────────────────────────────────── */
|
||||||
body.tablet-mode #bottomBar { font-size:0.7rem; height:34px; }
|
body.tablet-mode #bottomBar { font-size:0.7rem; height:34px; }
|
||||||
|
|
||||||
|
/* ════════════════════════════════════════════════════════════════════════
|
||||||
|
KIOSK MODE — hide noisy panels, keep it clean on Fire tablet
|
||||||
|
Only active when body.kiosk-mode (fullscreen + tablet)
|
||||||
|
════════════════════════════════════════════════════════════════════════ */
|
||||||
|
|
||||||
|
/* Hide server stats, agents tab, guardian tab in kiosk */
|
||||||
|
body.kiosk-mode #server-panel { display:none !important; }
|
||||||
|
body.kiosk-mode #tab-btn-agents { display:none !important; }
|
||||||
|
body.kiosk-mode #tab-btn-guardian { display:none !important; }
|
||||||
|
body.kiosk-mode #tab-agents { display:none !important; }
|
||||||
|
body.kiosk-mode #tab-guardian { display:none !important; }
|
||||||
|
|
||||||
|
/* Hide bottom bar: Home Assistant, Agents, Memory, Proxmox */
|
||||||
|
body.kiosk-mode #bb-ha-item { display:none !important; }
|
||||||
|
body.kiosk-mode #bb-agents-item { display:none !important; }
|
||||||
|
body.kiosk-mode #bb-memory-item { display:none !important; }
|
||||||
|
body.kiosk-mode #bb-pve-item { display:none !important; }
|
||||||
|
|
||||||
|
/* If agents or guardian was the active tab, switch to intel */
|
||||||
|
|||||||
@@ -1783,11 +1783,18 @@ async function toggleKiosk() {
|
|||||||
if ("wakeLock" in navigator) {
|
if ("wakeLock" in navigator) {
|
||||||
try { _wakeLock = await navigator.wakeLock.request("screen"); } catch(e) {}
|
try { _wakeLock = await navigator.wakeLock.request("screen"); } catch(e) {}
|
||||||
}
|
}
|
||||||
|
document.body.classList.add("kiosk-mode");
|
||||||
|
// Switch away from hidden tabs if one is active
|
||||||
|
const activeTab = document.querySelector(".tab-pane.active");
|
||||||
|
if (activeTab && (activeTab.id === "tab-agents" || activeTab.id === "tab-guardian")) {
|
||||||
|
switchTab("intel");
|
||||||
|
}
|
||||||
if (btn) { btn.textContent = "⧞ EXIT"; btn.style.color = "var(--cyan)"; }
|
if (btn) { btn.textContent = "⧞ EXIT"; btn.style.color = "var(--cyan)"; }
|
||||||
} else {
|
} else {
|
||||||
const ex = document.exitFullscreen || document.webkitExitFullscreen || document.mozCancelFullScreen || document.msExitFullscreen;
|
const ex = document.exitFullscreen || document.webkitExitFullscreen || document.mozCancelFullScreen || document.msExitFullscreen;
|
||||||
if (ex) ex.call(document).catch(() => {});
|
if (ex) ex.call(document).catch(() => {});
|
||||||
if (_wakeLock) { _wakeLock.release().catch(() => {}); _wakeLock = null; }
|
if (_wakeLock) { _wakeLock.release().catch(() => {}); _wakeLock = null; }
|
||||||
|
document.body.classList.remove("kiosk-mode");
|
||||||
if (btn) { btn.textContent = "⧞ KIOSK"; btn.style.color = ""; }
|
if (btn) { btn.textContent = "⧞ KIOSK"; btn.style.color = ""; }
|
||||||
if (!isTablet()) document.body.classList.remove("tablet-mode");
|
if (!isTablet()) document.body.classList.remove("tablet-mode");
|
||||||
}
|
}
|
||||||
@@ -1803,6 +1810,7 @@ function _onFsChange() {
|
|||||||
const btn = document.getElementById("kioskBtn");
|
const btn = document.getElementById("kioskBtn");
|
||||||
if (!document.fullscreenElement && !document.webkitFullscreenElement) {
|
if (!document.fullscreenElement && !document.webkitFullscreenElement) {
|
||||||
if (_wakeLock) { _wakeLock.release().catch(() => {}); _wakeLock = null; }
|
if (_wakeLock) { _wakeLock.release().catch(() => {}); _wakeLock = null; }
|
||||||
|
document.body.classList.remove("kiosk-mode");
|
||||||
if (btn) { btn.textContent = "⧞ KIOSK"; btn.style.color = ""; }
|
if (btn) { btn.textContent = "⧞ KIOSK"; btn.style.color = ""; }
|
||||||
if (!isTablet()) document.body.classList.remove("tablet-mode");
|
if (!isTablet()) document.body.classList.remove("tablet-mode");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -103,7 +103,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div id="weather-forecast" style="display:grid;grid-template-columns:repeat(4,1fr);gap:4px"></div>
|
<div id="weather-forecast" style="display:grid;grid-template-columns:repeat(4,1fr);gap:4px"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="panel">
|
<div class="panel" id="server-panel">
|
||||||
<div class="panel-title">JARVIS SERVER <span style="font-size:0.5rem;color:var(--text-dim)">10.48.200.211</span><div class="indicator"></div></div>
|
<div class="panel-title">JARVIS SERVER <span style="font-size:0.5rem;color:var(--text-dim)">10.48.200.211</span><div class="indicator"></div></div>
|
||||||
|
|
||||||
<!-- Metric bars + sparklines -->
|
<!-- Metric bars + sparklines -->
|
||||||
@@ -228,7 +228,7 @@
|
|||||||
<div class="tab active" onclick="switchTab('ha')">HOME</div>
|
<div class="tab active" onclick="switchTab('ha')">HOME</div>
|
||||||
<div class="tab" onclick="switchTab('alerts')">ALERTS</div>
|
<div class="tab" onclick="switchTab('alerts')">ALERTS</div>
|
||||||
<div class="tab" onclick="switchTab('news')">NEWS</div>
|
<div class="tab" onclick="switchTab('news')">NEWS</div>
|
||||||
<div class="tab" onclick="switchTab('agents')">AGENTS</div>
|
<div class="tab" id="tab-btn-agents" onclick="switchTab('agents')">AGENTS</div>
|
||||||
<div class="tab" onclick="switchTab('sites')">SITES</div>
|
<div class="tab" onclick="switchTab('sites')">SITES</div>
|
||||||
<div class="tab" id="tab-btn-intel" onclick="switchTab('intel')">INTEL</div>
|
<div class="tab" id="tab-btn-intel" onclick="switchTab('intel')">INTEL</div>
|
||||||
<div class="tab" id="tab-btn-comms" onclick="switchTab('comms')">COMMS</div>
|
<div class="tab" id="tab-btn-comms" onclick="switchTab('comms')">COMMS</div>
|
||||||
@@ -302,15 +302,15 @@
|
|||||||
<div class="bb-dot" id="bb-do-dot"></div>
|
<div class="bb-dot" id="bb-do-dot"></div>
|
||||||
<span>JARVIS VM</span> <span id="bb-do-status">CHECKING</span>
|
<span>JARVIS VM</span> <span id="bb-do-status">CHECKING</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="bb-item">
|
<div class="bb-item" id="bb-pve-item">
|
||||||
<div class="bb-dot" id="bb-pve-dot"></div>
|
<div class="bb-dot" id="bb-pve-dot"></div>
|
||||||
<span>PROXMOX</span> <span id="bb-pve-status">CHECKING</span>
|
<span>PROXMOX</span> <span id="bb-pve-status">CHECKING</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="bb-item">
|
<div class="bb-item" id="bb-ha-item">
|
||||||
<div class="bb-dot" id="bb-ha-dot"></div>
|
<div class="bb-dot" id="bb-ha-dot"></div>
|
||||||
<span>HOME ASSISTANT</span> <span id="bb-ha-status">CHECKING</span>
|
<span>HOME ASSISTANT</span> <span id="bb-ha-status">CHECKING</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="bb-item">
|
<div class="bb-item" id="bb-agents-item">
|
||||||
<div class="bb-dot" id="bb-agent-dot"></div>
|
<div class="bb-dot" id="bb-agent-dot"></div>
|
||||||
<span>AGENTS</span> <span id="bb-agent-status">--</span>
|
<span>AGENTS</span> <span id="bb-agent-status">--</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user