function updateDiagnostics() { fetch('/api/diagnostics') .then(response => response.json()) .then(data => { const diagnosticsPanel = document.querySelector('.diagnostics-content'); diagnosticsPanel.innerHTML = ''; Object.entries(data).forEach(([device, diagnostics]) => { const diagElement = createDiagnosticElement(device, diagnostics); diagnosticsPanel.appendChild(diagElement); }); }); } function createDiagnosticElement(device, diagnostics) { const element = document.createElement('div'); element.className = `diagnostic-item ${diagnostics.connection_type}-diagnostic`; const content = `

${device}

Status: ${diagnostics.state}
Firmware: ${diagnostics.firmware.version}
${createInterfaceHTML(diagnostics.interfaces)}
`; element.innerHTML = content; return element; } function createInterfaceHTML(interfaces) { let html = '
'; // Add port information Object.entries(interfaces.ports || {}).forEach(([portName, port]) => { html += `
${portName}: ${port.speed.current}/${port.speed.max} Mbps ${port.state}
`; }); // Add radio information Object.entries(interfaces.radios || {}).forEach(([radioName, radio]) => { html += `
${radioName}: ${radio.standard} - Ch${radio.channel} (${radio.width})
`; }); html += '
'; return html; } function updateDeviceStatus() { fetch('/api/status') .then(response => response.json()) .then(data => { Object.entries(data).forEach(([deviceName, status]) => { updateDeviceIndicator(deviceName, status); }); }); } // Update intervals setInterval(updateDeviceStatus, 30000); setInterval(updateDiagnostics, 60000); // Initial updates updateDeviceStatus(); updateDiagnostics();