mirror of
				https://github.com/csehviktor/status-monitor.git
				synced 2025-08-08 18:06:14 +02:00 
			
		
		
		
	finish ui design
This commit is contained in:
		| @@ -1,4 +1,4 @@ | ||||
| import { UptimeMessage } from "@/services/types"; | ||||
| import type { Metrics, UptimeMessage } from "@/services/types"; | ||||
|  | ||||
| export function isAgentOnline(data: UptimeMessage): boolean { | ||||
|     const timeDiff = new Date().getTime() - new Date(data.last_seen).getTime(); | ||||
| @@ -6,6 +6,24 @@ export function isAgentOnline(data: UptimeMessage): boolean { | ||||
|     return timeDiff < 10000; | ||||
| } | ||||
|  | ||||
| export function formatTimestamp(timestamp: string) { | ||||
|     return new Date(timestamp).toLocaleTimeString(); | ||||
| } | ||||
|  | ||||
| export const formatUptime = (seconds: number): string => { | ||||
|     const days = Math.floor(seconds / 86400); | ||||
|     const hours = Math.floor((seconds % 86400) / 3600); | ||||
|     const minutes = Math.floor((seconds % 3600) / 60); | ||||
|  | ||||
|     if (days > 0) { | ||||
|         return `${days}d ${hours}h`; | ||||
|     } else if (hours > 0) { | ||||
|         return `${hours}h ${minutes}m`; | ||||
|     } else { | ||||
|         return `${minutes}m`; | ||||
|     } | ||||
| }; | ||||
|  | ||||
| export function formatRelativeTime(timestamp: string): string { | ||||
|     const now = new Date(); | ||||
|     const past = new Date(timestamp); | ||||
| @@ -48,3 +66,54 @@ export function calcPercentage( | ||||
| export function formatPercentage(val: number | undefined) { | ||||
|     return `${(val ?? 0).toFixed(2)}%`; | ||||
| } | ||||
|  | ||||
| export type BrokedownMetrics = { | ||||
|     cpuThreads: number; | ||||
|     cpuUsage: number; | ||||
|     cpuUser: number; | ||||
|     cpuSystem: number; | ||||
|     cpuIdle: number; | ||||
|     cpuSteal: number; | ||||
|     cpuIowait: number; | ||||
|     memoryUsage: number; | ||||
|     memoryUsed: number; | ||||
|     memoryTotal: number; | ||||
|     swapUsage: number; | ||||
|     diskUsage: number; | ||||
|     diskFree: number; | ||||
|     diskTotal: number; | ||||
|     networkUp: number; | ||||
|     networkDown: number; | ||||
| }; | ||||
|  | ||||
| export function breakdownMetrics( | ||||
|     metrics: Metrics | undefined, | ||||
| ): BrokedownMetrics { | ||||
|     return { | ||||
|         cpuThreads: metrics?.cpu.threads ?? 0, | ||||
|         cpuUsage: metrics?.cpu.usage ?? 0, | ||||
|         cpuUser: metrics?.cpu.breakdown.user ?? 0, | ||||
|         cpuSystem: metrics?.cpu.breakdown.system ?? 0, | ||||
|         cpuIdle: metrics?.cpu.breakdown.idle ?? 0, | ||||
|         cpuSteal: metrics?.cpu.breakdown.steal ?? 0, | ||||
|         cpuIowait: metrics?.cpu.breakdown.iowait ?? 0, | ||||
|         memoryUsage: calcPercentage( | ||||
|             metrics?.memory.used, | ||||
|             metrics?.memory.total, | ||||
|         ), | ||||
|         memoryUsed: metrics?.memory.used ?? 0, | ||||
|         memoryTotal: metrics?.memory.total ?? 0, | ||||
|         swapUsage: calcPercentage( | ||||
|             metrics?.memory.swap_used, | ||||
|             metrics?.memory.swap_total, | ||||
|         ), | ||||
|         diskUsage: calcPercentage( | ||||
|             (metrics?.disk.total ?? 0) - (metrics?.disk.free ?? 0), | ||||
|             metrics?.disk.total, | ||||
|         ), | ||||
|         diskFree: metrics?.disk.free ?? 0, | ||||
|         diskTotal: metrics?.disk.total ?? 0, | ||||
|         networkUp: (metrics?.network.up ?? 0) / 1024, | ||||
|         networkDown: (metrics?.network.down ?? 0) / 1024, | ||||
|     }; | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user