Display live backup and Git telemetry

This commit is contained in:
2026-08-03 16:16:51 -04:00
parent df6ae1cbc9
commit a4f9787e77
+36 -3
View File
@@ -41,13 +41,46 @@ function renderServices(targetId, items, disabled = false) {
}
loadConfig()
.then(config => {
renderStatus(config.status);
Promise.all([loadConfig(), loadTelemetry()])
.then(([config, telemetry]) => {
const staticStatus = config.status.filter(
item => !['Backups', 'Git'].includes(item.name)
);
renderStatus([
...staticStatus,
...telemetryStatus(telemetry.systems)
]);
renderServices('service-grid', config.services);
renderServices('home-grid', config.home, true);
})
.catch(error => {
console.error(error);
document.getElementById('status-grid').innerHTML =
'<article class="status-card"><div class="status-name">Configuration</div><div class="status-value">Unavailable</div><div class="status-detail">Could not load services.json</div></article>';
'<article class="status-card"><div class="status-name">Telemetry</div><div class="status-value">Unavailable</div><div class="status-detail">Could not load Voyager data</div></article>';
});
async function loadTelemetry() {
const response = await fetch('data/status.json', { cache: 'no-store' });
if (!response.ok) throw new Error(`Telemetry load failed: ${response.status}`);
return response.json();
}
function telemetryStatus(systems) {
return [
{
name: 'Backups',
state: systems.backup.state,
label: systems.backup.summary,
value: systems.backup.detail,
detail: 'Restic backup repository'
},
{
name: 'Git',
state: systems.git.state,
label: systems.git.state === 'online' ? 'Healthy' : 'Attention',
value: systems.git.detail,
detail: systems.git.summary
}
];
}