diff --git a/AppImage/components/metrics-dialog.tsx b/AppImage/components/metrics-dialog.tsx
index 73065de..53df81b 100644
--- a/AppImage/components/metrics-dialog.tsx
+++ b/AppImage/components/metrics-dialog.tsx
@@ -65,24 +65,61 @@ export function MetricsView({ vmid, vmName, vmType, metricType, onBack }: Metric
const result = await response.json()
console.log("[v0] Metrics data received:", result)
- // Transform data for charts
- const transformedData = result.data.map((item: any) => ({
- time: new Date(item.time * 1000).toLocaleString("en-US", {
- month: "short",
- day: "numeric",
- hour: timeframe === "hour" ? "2-digit" : undefined,
- minute: timeframe === "hour" ? "2-digit" : undefined,
- }),
- timestamp: item.time,
- cpu: item.cpu ? (item.cpu * 100).toFixed(2) : 0,
- memory: item.mem ? ((item.mem / item.maxmem) * 100).toFixed(2) : 0,
- memoryMB: item.mem ? (item.mem / 1024 / 1024).toFixed(0) : 0,
- maxMemoryMB: item.maxmem ? (item.maxmem / 1024 / 1024).toFixed(0) : 0,
- netin: item.netin ? (item.netin / 1024 / 1024).toFixed(2) : 0,
- netout: item.netout ? (item.netout / 1024 / 1024).toFixed(2) : 0,
- diskread: item.diskread ? (item.diskread / 1024 / 1024).toFixed(2) : 0,
- diskwrite: item.diskwrite ? (item.diskwrite / 1024 / 1024).toFixed(2) : 0,
- }))
+ const transformedData = result.data.map((item: any) => {
+ const date = new Date(item.time * 1000)
+ let timeLabel = ""
+
+ // Format time based on timeframe
+ if (timeframe === "hour") {
+ // For 1 hour: show HH:mm
+ timeLabel = date.toLocaleString("en-US", {
+ hour: "2-digit",
+ minute: "2-digit",
+ hour12: false,
+ })
+ } else if (timeframe === "day") {
+ // For 24 hours: show HH:mm
+ timeLabel = date.toLocaleString("en-US", {
+ hour: "2-digit",
+ minute: "2-digit",
+ hour12: false,
+ })
+ } else if (timeframe === "week") {
+ // For 7 days: show Mon DD HH:mm
+ timeLabel = date.toLocaleString("en-US", {
+ month: "short",
+ day: "numeric",
+ hour: "2-digit",
+ minute: "2-digit",
+ hour12: false,
+ })
+ } else if (timeframe === "month") {
+ // For 30 days: show Mon DD
+ timeLabel = date.toLocaleString("en-US", {
+ month: "short",
+ day: "numeric",
+ })
+ } else {
+ // For 1 year: show Mon YYYY
+ timeLabel = date.toLocaleString("en-US", {
+ month: "short",
+ year: "numeric",
+ })
+ }
+
+ return {
+ time: timeLabel,
+ timestamp: item.time,
+ cpu: item.cpu ? (item.cpu * 100).toFixed(2) : 0,
+ memory: item.mem ? ((item.mem / item.maxmem) * 100).toFixed(2) : 0,
+ memoryMB: item.mem ? (item.mem / 1024 / 1024).toFixed(0) : 0,
+ maxMemoryMB: item.maxmem ? (item.maxmem / 1024 / 1024).toFixed(0) : 0,
+ netin: item.netin ? (item.netin / 1024 / 1024).toFixed(2) : 0,
+ netout: item.netout ? (item.netout / 1024 / 1024).toFixed(2) : 0,
+ diskread: item.diskread ? (item.diskread / 1024 / 1024).toFixed(2) : 0,
+ diskwrite: item.diskwrite ? (item.diskwrite / 1024 / 1024).toFixed(2) : 0,
+ }
+ })
console.log("[v0] Transformed data:", transformedData.length, "points")
setData(transformedData)
@@ -119,13 +156,24 @@ export function MetricsView({ vmid, vmName, vmType, metricType, onBack }: Metric
)
}
+ const tickInterval = Math.ceil(data.length / 10)
+
switch (metricType) {
case "cpu":
return (
-
+
-
+
-
+
-
-
+
+
)
@@ -192,7 +258,16 @@ export function MetricsView({ vmid, vmName, vmType, metricType, onBack }: Metric
-
+