diff --git a/app/dashboard/servers/Servers.tsx b/app/dashboard/servers/Servers.tsx index 190143c..8874b58 100644 --- a/app/dashboard/servers/Servers.tsx +++ b/app/dashboard/servers/Servers.tsx @@ -24,7 +24,7 @@ import { MicroscopeIcon as Microchip, MemoryStick, HardDrive, - Server, + LucideServer, } from "lucide-react" import { Card, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { @@ -75,6 +75,10 @@ interface Server { isVM?: boolean monitoring?: boolean monitoringURL?: string + online?: boolean + cpuUsage?: number + ramUsage?: number + diskUsage?: number } interface GetServersResponse { @@ -96,6 +100,10 @@ export default function Dashboard() { const [disk, setDisk] = useState("") const [monitoring, setMonitoring] = useState(false) const [monitoringURL, setMonitoringURL] = useState("") + const [online, setOnline] = useState(false) + const [cpuUsage, setCpuUsage] = useState(0) + const [ramUsage, setRamUsage] = useState(0) + const [diskUsage, setDiskUsage] = useState(0) const [currentPage, setCurrentPage] = useState(1) const [maxPage, setMaxPage] = useState(1) @@ -119,7 +127,6 @@ export default function Dashboard() { const [editMonitoring, setEditMonitoring] = useState(false) const [editMonitoringURL, setEditMonitoringURL] = useState("") - const [searchTerm, setSearchTerm] = useState("") const [isSearching, setIsSearching] = useState(false) @@ -638,6 +645,7 @@ export default function Dashboard() { onChange={(e) => setSearchTerm(e.target.value)} /> +
{!loading ? (
@@ -646,20 +654,28 @@ export default function Dashboard() { .map((server) => (
-
-
+
+
{server.icon && } - {server.icon && "・"} {server.name} + + {server.icon && "・"} {server.name} +
{server.isVM && ( VM )} + {server.monitoring && ( +
+ )} - + Host: {getHostServerName(server.hostServer)} @@ -716,10 +732,72 @@ export default function Dashboard() { Disk: {server.disk || "-"}
+ + {server.monitoring && server.hostServer === 0 && ( + <> +
+ +
+ +
+

Resource Usage

+
+
+
+
+ + CPU +
+ {server.cpuUsage || 0}% +
+
+
80 ? "bg-destructive" : server.cpuUsage && server.cpuUsage > 60 ? "bg-amber-500" : "bg-emerald-500"}`} + style={{ width: `${server.cpuUsage || 0}%` }} + /> +
+
+ +
+
+
+ + RAM +
+ {server.ramUsage || 0}% +
+
+
80 ? "bg-destructive" : server.ramUsage && server.ramUsage > 60 ? "bg-amber-500" : "bg-emerald-500"}`} + style={{ width: `${server.ramUsage || 0}%` }} + /> +
+
+ +
+
+
+ + Disk +
+ {server.diskUsage || 0}% +
+
+
80 ? "bg-destructive" : server.diskUsage && server.diskUsage > 60 ? "bg-amber-500" : "bg-emerald-500"}`} + style={{ width: `${server.diskUsage || 0}%` }} + /> +
+
+
+
+ + )}
-
+
+
@@ -729,7 +807,7 @@ export default function Dashboard() { className="gap-2" onClick={() => window.open(server.url, "_blank")} > - + )} @@ -1028,7 +1106,10 @@ export default function Dashboard() { size={24} /> )} -
{hostedVM.icon && "・ "}{hostedVM.name}
+
+ {hostedVM.icon && "・ "} + {hostedVM.name} +
+ + {hostedVM.monitoring && ( + <> +
+ +
+ +
+
+
+
+ + CPU +
+ + {hostedVM.cpuUsage || 0}% + +
+
+
80 ? "bg-destructive" : hostedVM.cpuUsage && hostedVM.cpuUsage > 60 ? "bg-amber-500" : "bg-emerald-500"}`} + style={{ width: `${hostedVM.cpuUsage || 0}%` }} + /> +
+
+ +
+
+
+ + RAM +
+ + {hostedVM.ramUsage || 0}% + +
+
+
80 ? "bg-destructive" : hostedVM.ramUsage && hostedVM.ramUsage > 60 ? "bg-amber-500" : "bg-emerald-500"}`} + style={{ width: `${hostedVM.ramUsage || 0}%` }} + /> +
+
+ +
+
+
+ + Disk +
+ + {hostedVM.diskUsage || 0}% + +
+
+
80 ? "bg-destructive" : hostedVM.diskUsage && hostedVM.diskUsage > 60 ? "bg-amber-500" : "bg-emerald-500"}`} + style={{ width: `${hostedVM.diskUsage || 0}%` }} + /> +
+
+
+ + )}
))}