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();