diff --git a/app.js b/app.js index 2a1b7e3..2f66497 100644 --- a/app.js +++ b/app.js @@ -8,6 +8,7 @@ const ROUTES = { instances: "/admin/instance", backup: "/admin/backup-repo", servers: "/admin/server", + seats: "/server", keys: "/admin/key", crm: "/crm", }; @@ -918,6 +919,31 @@ async function serversLoadData() { } }) .filter(Boolean); + /* ─── Fetch seat data ─────────────────────────────────────── */ + let seatMap = {}; + try { + const seatRes = await fetch("https://n8n.derez.ai/webhook/server"); + if (seatRes.ok) { + const seatJson = await seatRes.json(); + const seatArr = Array.isArray(seatJson) + ? Array.isArray(seatJson[0]?.data) + ? seatJson[0].data + : seatJson + : []; + for (const s of seatArr) { + if (s.server) seatMap[s.server.toLowerCase().trim()] = s; + } + } + } catch (_) { + /* seat data is optional */ + } + + /* ─── Merge seats into server data ─────────────────────────── */ + for (const sv of serversData) { + const key = (sv.server?.name ?? "").toLowerCase().trim(); + sv.seats = seatMap[key] || null; + } + if (serversData.length === 0) throw new Error("No server data in response"); currentServerIdx = 0; serversRenderTabs(); @@ -1090,9 +1116,6 @@ function serversRenderDashboard(idx) {
- ${escHtml(summary.short_summary)} -
@@ -1174,26 +1197,46 @@ function serversRenderDashboard(idx) {