(() => { const list = document.querySelector(".status-list"); if (!list) return; const esc = (value) => String(value ?? "").replace(/[&<>"']/g, (ch) => ({ "&": "&", "<": "<", ">": ">", "\"": """, "'": "'", }[ch])); const players = (value) => { const n = Number(value || 0); return `${n.toLocaleString()} ${n === 1 ? "Player" : "Players"}`; }; const render = (data) => { const servers = Array.isArray(data?.servers) ? data.servers : []; if (!servers.length) return; list.classList.add("status-list--regions"); list.innerHTML = servers.map((server) => `
${esc(server.label)}${players(server.players)}
${(server.ships || []).map((ship) => `
${esc(ship.label)}
${(ship.rows || []).map((row) => `
${esc(row.label)}${players(row.players)}
`).join("")} `).join("")}
`).join(""); }; fetch("/api/server-status", { cache: "no-store" }) .then((res) => res.ok ? res.json() : null) .then((data) => data && render(data)) .catch(() => {}); })();