From cd73fb41aa80ec444efb05526bfe8bb13608e23f Mon Sep 17 00:00:00 2001 From: Micha Date: Mon, 6 Apr 2026 07:37:32 +0000 Subject: [PATCH] feat: add home-assistant renderer --- .../assets/js/renderers/home-assistant.js | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 apps/dashboard/assets/js/renderers/home-assistant.js diff --git a/apps/dashboard/assets/js/renderers/home-assistant.js b/apps/dashboard/assets/js/renderers/home-assistant.js new file mode 100644 index 0000000..b80e37e --- /dev/null +++ b/apps/dashboard/assets/js/renderers/home-assistant.js @@ -0,0 +1,29 @@ +export function renderHomeAssistant(state) { + const d = state.home_assistant || {}; + const online = d.status === "online"; + + // pill + const pill = document.getElementById("ha-pill"); + if (pill) { + pill.textContent = online ? "ONLINE" : "OFFLINE"; + pill.className = "status-pill " + (online ? "pill-online" : "pill-offline"); + } + + // stat blocks + const set = (id, val) => { const el = document.getElementById(id); if (el) el.textContent = val; }; + + set("ha-lights", online ? `${d.lights_on ?? 0}/${d.lights_total ?? 0}` : "—"); + set("ha-climate", online ? (d.climate_active ?? 0) : "—"); + set("ha-doors", online ? (d.doors_open ?? 0) : "—"); + set("ha-alerts", online ? (d.alerts ?? 0) : "—"); + + // version subtitle + const ver = document.getElementById("ha-version"); + if (ver) ver.textContent = d.version ? `v${d.version}` : ""; + + // alerts highlight + const alertsEl = document.getElementById("ha-alerts"); + if (alertsEl) { + alertsEl.style.color = d.alerts > 0 ? "var(--clr-warn)" : ""; + } +}