From 6996214121200b209816af7ae630efa4e8384625 Mon Sep 17 00:00:00 2001 From: LukeGus Date: Wed, 31 Dec 2025 01:52:21 -0600 Subject: [PATCH] feat: turned disk uage into graph and fixed issue with termina console --- .../docker/components/ConsoleTerminal.tsx | 4 +- .../features/server-stats/ServerStats.tsx | 8 +- .../server-stats/widgets/CpuWidget.tsx | 5 +- .../server-stats/widgets/DiskWidget.tsx | 135 ++++++++++-------- .../server-stats/widgets/MemoryWidget.tsx | 5 +- 5 files changed, 89 insertions(+), 68 deletions(-) diff --git a/src/ui/desktop/apps/features/docker/components/ConsoleTerminal.tsx b/src/ui/desktop/apps/features/docker/components/ConsoleTerminal.tsx index 59ba9b4f..c12977de 100644 --- a/src/ui/desktop/apps/features/docker/components/ConsoleTerminal.tsx +++ b/src/ui/desktop/apps/features/docker/components/ConsoleTerminal.tsx @@ -64,11 +64,11 @@ export function ConsoleTerminal({ "http://127.0.0.1:30001"; const wsProtocol = baseUrl.startsWith("https://") ? "wss://" : "ws://"; const wsHost = baseUrl.replace(/^https?:\/\//, ""); - return `${wsProtocol}${wsHost}/docker/console`; + return `${wsProtocol}${wsHost}/docker/console/`; } const protocol = window.location.protocol === "https:" ? "wss:" : "ws:"; - return `${protocol}//${window.location.host}/docker/console`; + return `${protocol}//${window.location.host}/docker/console/`; }, []); React.useEffect(() => { diff --git a/src/ui/desktop/apps/features/server-stats/ServerStats.tsx b/src/ui/desktop/apps/features/server-stats/ServerStats.tsx index 7aeb7ef3..7f1d68ff 100644 --- a/src/ui/desktop/apps/features/server-stats/ServerStats.tsx +++ b/src/ui/desktop/apps/features/server-stats/ServerStats.tsx @@ -388,18 +388,18 @@ export function ServerStats({ let retryCount = 0; let data = null; const maxRetries = 15; - const initialDelay = totpVerified ? 3000 : 5000; const retryDelay = 2000; - await new Promise((resolve) => setTimeout(resolve, initialDelay)); - while (retryCount < maxRetries && !cancelled) { try { data = await getServerMetricsById(currentHostConfig.id); break; } catch (error: any) { retryCount++; - if (retryCount < maxRetries && !cancelled) { + if (retryCount === 1) { + const initialDelay = totpVerified ? 3000 : 5000; + await new Promise((resolve) => setTimeout(resolve, initialDelay)); + } else if (retryCount < maxRetries && !cancelled) { await new Promise((resolve) => setTimeout(resolve, retryDelay)); } else { throw error; diff --git a/src/ui/desktop/apps/features/server-stats/widgets/CpuWidget.tsx b/src/ui/desktop/apps/features/server-stats/widgets/CpuWidget.tsx index acf27a7e..151e6a53 100644 --- a/src/ui/desktop/apps/features/server-stats/widgets/CpuWidget.tsx +++ b/src/ui/desktop/apps/features/server-stats/widgets/CpuWidget.tsx @@ -62,7 +62,10 @@ export function CpuWidget({ metrics, metricsHistory }: CpuWidgetProps) {
- + { - const percent = metrics?.disk?.percent || 0; - return [ - { - name: "Disk", - value: percent, - fill: "#fb923c", - }, - ]; - }, [metrics]); + const chartData = React.useMemo(() => { + return metricsHistory.map((m, index) => ({ + index, + disk: m.disk?.percent || 0, + })); + }, [metricsHistory]); return (
@@ -35,45 +38,13 @@ export function DiskWidget({ metrics }: DiskWidgetProps) {
-
-
- - - - - - {typeof metrics?.disk?.percent === "number" - ? `${metrics.disk.percent}%` - : "N/A"} - - - -
-
+
+
+
+ {typeof metrics?.disk?.percent === "number" + ? `${metrics.disk.percent}%` + : "N/A"} +
{(() => { const used = metrics?.disk?.usedHuman; @@ -84,14 +55,58 @@ export function DiskWidget({ metrics }: DiskWidgetProps) { return "N/A"; })()}
-
- {(() => { - const available = metrics?.disk?.availableHuman; - return available - ? `${t("serverStats.available")}: ${available}` - : `${t("serverStats.available")}: N/A`; - })()} -
+
+
+ {(() => { + const available = metrics?.disk?.availableHuman; + return available + ? `${t("serverStats.available")}: ${available}` + : `${t("serverStats.available")}: N/A`; + })()} +
+
+ + + + + + + + + + + + [`${value.toFixed(1)}%`, "Disk"]} + /> + + +
diff --git a/src/ui/desktop/apps/features/server-stats/widgets/MemoryWidget.tsx b/src/ui/desktop/apps/features/server-stats/widgets/MemoryWidget.tsx index e022555b..b9161e62 100644 --- a/src/ui/desktop/apps/features/server-stats/widgets/MemoryWidget.tsx +++ b/src/ui/desktop/apps/features/server-stats/widgets/MemoryWidget.tsx @@ -69,7 +69,10 @@ export function MemoryWidget({ metrics, metricsHistory }: MemoryWidgetProps) {
- +