feat: all time uptime stat
This commit is contained in:
parent
b807b7c577
commit
4547181070
2 changed files with 19 additions and 23 deletions
|
|
@ -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
1
src/types.d.ts
vendored
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue