37 lines
1.4 KiB
JavaScript
37 lines
1.4 KiB
JavaScript
async function refreshStatus() {
|
|
const output = document.getElementById("output");
|
|
try {
|
|
const response = await fetch("/api/status", { credentials: "same-origin" });
|
|
const payload = await response.json();
|
|
document.getElementById("online").textContent = response.ok ? "online" : "offline";
|
|
document.getElementById("game-state").textContent = payload.state ?? "unknown";
|
|
document.getElementById("controller").textContent =
|
|
payload.controller?.connected === true ? "connected" :
|
|
payload.controller?.connected === false ? "disconnected" : "unknown";
|
|
document.getElementById("display").textContent = payload.display?.mode ?? "unknown";
|
|
output.textContent = JSON.stringify(payload, null, 2);
|
|
} catch (error) {
|
|
document.getElementById("online").textContent = "offline";
|
|
output.textContent = String(error);
|
|
}
|
|
}
|
|
|
|
async function postAction(path) {
|
|
const output = document.getElementById("output");
|
|
const response = await fetch(path, { method: "POST", credentials: "same-origin" });
|
|
const payload = await response.json();
|
|
output.textContent = JSON.stringify(payload, null, 2);
|
|
await refreshStatus();
|
|
}
|
|
|
|
document.querySelectorAll("[data-action]").forEach((button) => {
|
|
button.addEventListener("click", () => {
|
|
postAction(button.dataset.action).catch((error) => {
|
|
document.getElementById("output").textContent = String(error);
|
|
});
|
|
});
|
|
});
|
|
|
|
refreshStatus().catch(() => {});
|
|
setInterval(refreshStatus, 5000);
|