feat: all time uptime stat

This commit is contained in:
trafficlunar 2025-07-24 23:07:33 +01:00
parent b807b7c577
commit 4547181070
2 changed files with 19 additions and 23 deletions

View file

@ -20,21 +20,25 @@
let keysPerMinute = $state(0); let keysPerMinute = $state(0);
let uptime = $state(""); let uptime = $state("");
let allTimeUptime = $state("");
let allTimeClicks = $state(0); let allTimeClicks = $state(0);
let allTimeKeys = $state(0); let allTimeKeys = $state(0);
let chartData = $state<GraphData>([]); let chartData = $state<GraphData>([]);
onMount(() => { const formatTime = (time: number): string => {
let uptimeStart: Date; const hrs = String(Math.floor(time / 3600)).padStart(2, "0");
const mins = String(Math.floor((time % 3600) / 60)).padStart(2, "0");
const secs = String(time % 60).padStart(2, "0");
return `${hrs}:${mins}:${secs}`;
};
onMount(() => {
const get = async () => { const get = async () => {
const data = computerData.data; // no point in this; looks better const data = computerData.data; // no point in this; looks better
if (!data) return; if (!data) return;
online = data.online; online = data.online;
uptimeStart = new Date(data.uptimeStart * 1000); // convert to milliseconds
setUptime();
currentCPU = data.graph[data.graph.length - 1].cpu; currentCPU = data.graph[data.graph.length - 1].cpu;
currentRAM = data.graph[data.graph.length - 1].ram; currentRAM = data.graph[data.graph.length - 1].ram;
@ -54,31 +58,22 @@
clicksPerMinute = totalClicks / 60; // 60 minutes (max graph data) clicksPerMinute = totalClicks / 60; // 60 minutes (max graph data)
keysPerMinute = totalKeys / 60; keysPerMinute = totalKeys / 60;
};
const setUptime = () => { // Uptime
if (!uptimeStart || !online) { if (!data.online) {
uptime = "Offline"; uptime = "Offline";
return; return;
} }
const diff = Math.floor((Date.now() - uptimeStart.getTime()) / 1000); const diff = Math.floor((Date.now() - data.uptimeStart * 1000) / 1000);
const hrs = String(Math.floor(diff / 3600)).padStart(2, "0"); const allTime = diff + data.totals.uptime;
const mins = String(Math.floor((diff % 3600) / 60)).padStart(2, "0");
const secs = String(diff % 60).padStart(2, "0");
uptime = `${hrs}:${mins}:${secs}`; uptime = formatTime(diff);
allTimeUptime = formatTime(allTime);
}; };
get(); get();
setUptime(); const interval = setInterval(get, 1000);
return () => clearInterval(interval);
const interval = setInterval(get, 30000);
const uptimeInterval = setInterval(setUptime, 1000);
return () => {
clearInterval(interval);
clearInterval(uptimeInterval);
};
}); });
</script> </script>
@ -101,8 +96,8 @@
<span class="font-black">Uptime:</span> <span class="font-black">Uptime:</span>
<span>{uptime}</span> <span>{uptime}</span>
<span></span> <span class="font-black">All Time Uptime:</span>
<span></span> <span>{allTimeUptime}</span>
<span class="font-black">All Time Clicks:</span> <span class="font-black">All Time Clicks:</span>
<span>{allTimeClicks}</span> <span>{allTimeClicks}</span>

1
src/types.d.ts vendored
View file

@ -2,6 +2,7 @@ interface ApiResponse {
online: boolean; online: boolean;
uptimeStart: number; uptimeStart: number;
totals: { totals: {
uptime: number;
keys: number; keys: number;
clicks: number; clicks: number;
}; };