import { appendChartPoint } from "./chart.js"; import { prependEvent } from "./events.js"; import { formatValue } from "./points.js"; import { state } from "./state.js"; import { renderUnits } from "./units.js"; export function startPointSocket() { const protocol = location.protocol === "https:" ? "wss" : "ws"; const ws = new WebSocket(`${protocol}://${location.host}/ws/public`); state.pointSocket = ws; ws.onmessage = (event) => { try { const payload = JSON.parse(event.data); if (payload.type === "PointNewValue" || payload.type === "point_new_value") { const data = payload.data; const entry = state.pointEls.get(data.point_id); if (entry) { entry.value.textContent = formatValue(data); entry.quality.className = `badge quality-${(data.quality || "unknown").toLowerCase()}`; entry.quality.textContent = (data.quality || "unknown").toUpperCase(); entry.time.textContent = data.timestamp || "--"; } if (state.chartPointId === data.point_id) { appendChartPoint(data); } return; } if (payload.type === "EventCreated" || payload.type === "event_created") { prependEvent(payload.data); } if (payload.type === "UnitRuntimeChanged") { const runtime = payload.data; state.runtimes.set(runtime.unit_id, runtime); renderUnits(); return; } } catch { // ignore malformed messages } }; ws.onclose = () => { window.setTimeout(startPointSocket, 2000); }; }