Quinten 5730114e11 * fixed js heartbeat to look for all devices
* made gallery-specific css into a seperate stylesheet instead of inline
  `tags
2025-03-04 01:26:27 +01:00

53 lines
1.9 KiB
JavaScript

document.addEventListener('DOMContentLoaded', async function() {
async function fetchLastBeat() {
const heartbeatElement = document.getElementById('heartbeat-time');
try {
const response = await fetch('https://quinten0508.com/api/heartbeat');
const data = await response.json();
// Find device with the latest heartbeat
let latestDevice = null;
let latestTimestamp = 0;
data.forEach(device => {
const timestamp = device.last_beat.timestamp;
if (timestamp > latestTimestamp) {
latestTimestamp = timestamp;
latestDevice = device;
}
});
if (latestDevice) {
const timestampMilliseconds = latestTimestamp * 1000;
const currentTime = Date.now();
const difference = currentTime - timestampMilliseconds;
const isDead = difference > (1000 * 60 * 60 * 48);
const online = difference < (1000 * 60 * 5);
if (online) {
heartbeatElement.textContent = 'Online!';
heartbeatElement.style = 'color: #00b400';
} else if (isDead) {
heartbeatElement.textContent = 'Dead';
heartbeatElement.style = 'color: #b30000';
} else {
heartbeatElement.textContent = 'Alive';
heartbeatElement.style = 'color: #00b400';
}
} else {
console.error('No devices found.');
}
} catch (error) {
console.error('Error fetching last beat:', error);
}
}
// Fetch the last beat immediately and then every 10 seconds
fetchLastBeat();
setInterval(fetchLastBeat, 10000);
});