the page uses server-side stale detection first, so another PC with wrong clock should not falsely blur the UI

This commit is contained in:
Dejan Rožič 2026-04-21 09:07:28 +02:00
parent c9ffe85d54
commit 3891d9b61d

View file

@ -810,7 +810,6 @@
ctx.fillText((Number(knValue) || 0).toFixed(1) + ' ' + UNIT_FORCE, cx, cy + 58);
}
// FIX: update digital display HTML elements (only visible when show_gauge_digital: true)
function updateDigitalDisplay(side, percent, kn) {
if (!SHOW_GAUGE_DIGITAL) return;
const el = document.getElementById('digital-' + side);
@ -1132,6 +1131,20 @@
} catch (err) { console.warn('UI revision check error:', err); }
}
function computeStaleFromPayload(d, connected) {
if (!connected) return false;
if (typeof d.stale === 'boolean') return d.stale;
if (!d.last_update) return false;
const lastTs = new Date(d.last_update).getTime();
if (isNaN(lastTs)) return false;
const serverNowTs = d.server_time ? new Date(d.server_time).getTime() : Date.now();
if (isNaN(serverNowTs)) return false;
return (serverNowTs - lastTs) > STALE_MS;
}
async function fetchLiveData() {
try {
const res = await fetch('/api/data', { cache: 'no-store' });
@ -1148,12 +1161,7 @@
const bias = Number(d.bias_percent) || 0;
const leftKN = Number(d.sila_l_kn) || 0;
const rightKN = Number(d.sila_r_kn) || 0;
let stale = false;
if (connected && d.last_update) {
const lastTs = new Date(d.last_update).getTime();
if (!isNaN(lastTs)) stale = (Date.now() - lastTs) > STALE_MS;
}
const stale = computeStaleFromPayload(d, connected);
setConnectionIndicator(connected, stale);
setProcessVisualState(connected && !stale);
@ -1171,8 +1179,6 @@
applyChannelState('l', leftPercent);
applyChannelState('r', rightPercent);
// FIX: update digital HTML displays (was missing in original)
updateDigitalDisplay('l', leftPercent, leftKN);
updateDigitalDisplay('r', rightPercent, rightKN);
@ -1188,7 +1194,6 @@
updateSummaryBar(false, false, 0, 0, 0);
updateMachineVerdict(false, false, 0, 0, 0);
updateAlarmBanner(0, 0, 0, false, false);
// FIX: reset digital displays on error
updateDigitalDisplay('l', 0, 0);
updateDigitalDisplay('r', 0, 0);
}