fix: Safely handle null status for default icon display

Co-authored-by: aider (gemini/gemini-2.5-pro) <aider@aider.chat>
This commit is contained in:
Chris Frankland-Wright 2025-08-07 23:44:52 +01:00
parent 90f43ff87e
commit f0ac2ed3d4

View file

@ -41,9 +41,10 @@ document.addEventListener('DOMContentLoaded', () => {
const dateMessage = document.getElementById('date-message'); const dateMessage = document.getElementById('date-message');
function updateStatus(data) { function updateStatus(data) {
const ltcIconSrc = iconMap.ltcStatus[data.ltc_status] || iconMap.ltcStatus.default; const ltcStatus = data.ltc_status || 'UNKNOWN';
statusElements.ltcStatus.innerHTML = `<img src="${ltcIconSrc}" class="status-icon" alt=""> ${data.ltc_status}`; const ltcIconSrc = iconMap.ltcStatus[ltcStatus] || iconMap.ltcStatus.default;
statusElements.ltcStatus.className = data.ltc_status.toLowerCase(); statusElements.ltcStatus.innerHTML = `<img src="${ltcIconSrc}" class="status-icon" alt=""> ${ltcStatus}`;
statusElements.ltcStatus.className = ltcStatus.toLowerCase();
statusElements.ltcTimecode.textContent = data.ltc_timecode; statusElements.ltcTimecode.textContent = data.ltc_timecode;
statusElements.frameRate.textContent = data.frame_rate; statusElements.frameRate.textContent = data.frame_rate;
statusElements.lockRatio.textContent = data.lock_ratio.toFixed(2); statusElements.lockRatio.textContent = data.lock_ratio.toFixed(2);
@ -59,18 +60,18 @@ document.addEventListener('DOMContentLoaded', () => {
statusElements.ntpActive.className = 'inactive'; statusElements.ntpActive.className = 'inactive';
} }
const syncStatusClass = data.sync_status.replace(/\s+/g, '-').toLowerCase(); const syncStatus = data.sync_status || 'UNKNOWN';
const syncIconSrc = iconMap.syncStatus[data.sync_status] || iconMap.syncStatus.default; const syncIconSrc = iconMap.syncStatus[syncStatus] || iconMap.syncStatus.default;
statusElements.syncStatus.innerHTML = `<img src="${syncIconSrc}" class="status-icon" alt=""> ${data.sync_status}`; statusElements.syncStatus.innerHTML = `<img src="${syncIconSrc}" class="status-icon" alt=""> ${syncStatus}`;
statusElements.syncStatus.className = syncStatusClass; statusElements.syncStatus.className = syncStatus.replace(/\s+/g, '-').toLowerCase();
statusElements.deltaMs.textContent = data.timecode_delta_ms; statusElements.deltaMs.textContent = data.timecode_delta_ms;
statusElements.deltaFrames.textContent = data.timecode_delta_frames; statusElements.deltaFrames.textContent = data.timecode_delta_frames;
const jitterStatusClass = data.jitter_status.toLowerCase(); const jitterStatus = data.jitter_status || 'UNKNOWN';
const jitterIconSrc = iconMap.jitterStatus[data.jitter_status] || iconMap.jitterStatus.default; const jitterIconSrc = iconMap.jitterStatus[jitterStatus] || iconMap.jitterStatus.default;
statusElements.jitterStatus.innerHTML = `<img src="${jitterIconSrc}" class="status-icon" alt=""> ${data.jitter_status}`; statusElements.jitterStatus.innerHTML = `<img src="${jitterIconSrc}" class="status-icon" alt=""> ${jitterStatus}`;
statusElements.jitterStatus.className = jitterStatusClass; statusElements.jitterStatus.className = jitterStatus.toLowerCase();
statusElements.interfaces.innerHTML = ''; statusElements.interfaces.innerHTML = '';
if (data.interfaces.length > 0) { if (data.interfaces.length > 0) {