From 5c0c99ed75cec12af54d8472f67dcf1e913a83b6 Mon Sep 17 00:00:00 2001 From: Micha Date: Mon, 6 Apr 2026 07:33:46 +0000 Subject: [PATCH] feat: wire new widget renderers in app.js --- apps/dashboard/assets/js/app.js | 54 ++++++++++++++------------------- 1 file changed, 23 insertions(+), 31 deletions(-) diff --git a/apps/dashboard/assets/js/app.js b/apps/dashboard/assets/js/app.js index 3401ee7..16407ea 100644 --- a/apps/dashboard/assets/js/app.js +++ b/apps/dashboard/assets/js/app.js @@ -1,13 +1,15 @@ import { fetchDashboardData } from "./api.js"; -import { getState, setError, subscribe, updateData } from "./state.js"; +import { getState, subscribe, updateData } from "./state.js"; import { renderHeader } from "./renderers/header.js"; -import { renderNetworkHealth } from "./renderers/network-health.js"; -import { renderQuickAccess } from "./renderers/quick-access.js"; -import { renderServices } from "./renderers/services.js"; import { renderStats } from "./renderers/stats.js"; import { renderStorage } from "./renderers/storage.js"; - -let pollTimer = null; +import { renderServices } from "./renderers/services.js"; +import { renderNetworkHealth } from "./renderers/network-health.js"; +import { renderQuickAccess } from "./renderers/quick-access.js"; +import { renderHomeAssistant } from "./renderers/home-assistant.js"; +import { renderUptimeKuma } from "./renderers/uptime-kuma.js"; +import { renderImmich } from "./renderers/immich.js"; +import { renderBackrest } from "./renderers/backrest.js"; function render(state) { renderHeader(state); @@ -15,34 +17,24 @@ function render(state) { renderStorage(state); renderServices(state); renderNetworkHealth(state); + renderHomeAssistant(state); + renderUptimeKuma(state); + renderImmich(state); + renderBackrest(state); + renderQuickAccess(); } -async function refreshData() { +subscribe(render); + +async function refresh() { try { - const payload = await fetchDashboardData(); - updateData(payload); - } catch (error) { - console.error("Dashboard refresh failed", error); - setError(error instanceof Error ? error : new Error("Unknown dashboard refresh error")); - } finally { - restartPolling(); + const data = await fetchDashboardData(); + updateData(data); + } catch (err) { + console.error("Dashboard fetch error:", err); } } -function restartPolling() { - if (pollTimer) { - window.clearInterval(pollTimer); - } - const state = window.__dashboardState?.() ?? null; - const interval = state?.refreshIntervalMs ?? 20000; - pollTimer = window.setInterval(refreshData, interval); -} - -subscribe((state) => { - window.__dashboardState = () => state; - render(state); -}); - -renderQuickAccess(); -refreshData(); -window.setInterval(() => renderHeader(getState()), 1000); +render(getState()); +refresh(); +setInterval(refresh, (getState().overview?.refresh_hint_seconds ?? 20) * 1000); \ No newline at end of file