63 lines
2.1 KiB
JavaScript
63 lines
2.1 KiB
JavaScript
/* ===================================================
|
|
JAESWIFT.XYZ — Server Clock + Uptime
|
|
eDEX-UI inspired digital clock with live uptime
|
|
=================================================== */
|
|
|
|
(function () {
|
|
'use strict';
|
|
|
|
var clockEl = document.getElementById('serverClock');
|
|
var dateEl = document.getElementById('serverDate');
|
|
var uptimeEl = document.getElementById('serverUptime');
|
|
if (!clockEl) return;
|
|
|
|
// Update clock every second
|
|
function updateClock() {
|
|
var now = new Date();
|
|
var h = String(now.getHours()).padStart(2, '0');
|
|
var m = String(now.getMinutes()).padStart(2, '0');
|
|
var s = String(now.getSeconds()).padStart(2, '0');
|
|
clockEl.textContent = h + ':' + m + ':' + s;
|
|
|
|
var year = now.getFullYear();
|
|
var month = String(now.getMonth() + 1).padStart(2, '0');
|
|
var day = String(now.getDate()).padStart(2, '0');
|
|
var days = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'];
|
|
dateEl.textContent = year + '/' + month + '/' + day + ' // ' + days[now.getDay()];
|
|
}
|
|
|
|
// Format uptime from seconds
|
|
function formatUptime(secs) {
|
|
var d = Math.floor(secs / 86400);
|
|
var h = Math.floor((secs % 86400) / 3600);
|
|
var m = Math.floor((secs % 3600) / 60);
|
|
var parts = [];
|
|
if (d > 0) parts.push(d + 'd');
|
|
parts.push(h + 'h');
|
|
parts.push(m + 'm');
|
|
return parts.join(' ');
|
|
}
|
|
|
|
// Fetch uptime from stats API
|
|
function fetchUptime() {
|
|
fetch('/api/stats')
|
|
.then(function (r) { return r.json(); })
|
|
.then(function (data) {
|
|
if (data && data.uptime_seconds) {
|
|
uptimeEl.textContent = formatUptime(data.uptime_seconds);
|
|
} else if (data && data.uptime) {
|
|
uptimeEl.textContent = data.uptime;
|
|
}
|
|
})
|
|
.catch(function () {});
|
|
}
|
|
|
|
// Init
|
|
updateClock();
|
|
setInterval(updateClock, 1000);
|
|
|
|
// Fetch uptime every 30s
|
|
fetchUptime();
|
|
setInterval(fetchUptime, 30000);
|
|
|
|
})();
|