Heartbeat and nicer status line
This commit is contained in:
+16
-1
@@ -388,7 +388,7 @@ async function refreshStatus() {
|
||||
const response = await fetch('/api/status', { cache: 'no-store' });
|
||||
const status = await response.json();
|
||||
if (!response.ok) throw new Error('status failed');
|
||||
setStat('status', status.ok ? 'ONLINE' : 'DEGRADED');
|
||||
setStat('status', `${status.ok ? 'ONLINE' : 'DEGRADED'} ${formatUptime(status.uptimeSeconds)}`);
|
||||
setStat('latency', `${Math.max(1, Math.round(performance.now() - started))}MS`);
|
||||
setStat('nodes', formatCount(status.liveClients));
|
||||
setStat('memes', formatCount(status.memeCount));
|
||||
@@ -406,6 +406,21 @@ function setStat(name, value) {
|
||||
}
|
||||
}
|
||||
|
||||
function formatUptime(value) {
|
||||
const seconds = Math.max(0, Number.isFinite(value) ? value : 0);
|
||||
const minutes = Math.floor(seconds / 60);
|
||||
if (minutes < 1) return `UP ${seconds}S`;
|
||||
if (minutes < 60) return `UP ${minutes}M`;
|
||||
|
||||
const hours = Math.floor(minutes / 60);
|
||||
const remainingMinutes = minutes % 60;
|
||||
if (hours < 24) return `UP ${hours}H${remainingMinutes > 0 ? ` ${remainingMinutes}M` : ''}`;
|
||||
|
||||
const days = Math.floor(hours / 24);
|
||||
const remainingHours = hours % 24;
|
||||
return `UP ${days}D${remainingHours > 0 ? ` ${remainingHours}H` : ''}`;
|
||||
}
|
||||
|
||||
function updateScrollIndicator() {
|
||||
const segments = [...scrollIndicator.querySelectorAll('span')];
|
||||
const maxScroll = Math.max(1, document.documentElement.scrollHeight - window.innerHeight);
|
||||
|
||||
Reference in New Issue
Block a user