diff --git a/site/src/components/add-server.tsx b/site/src/components/add-server.tsx index b50ffa5..0c9a8cb 100644 --- a/site/src/components/add-server.tsx +++ b/site/src/components/add-server.tsx @@ -17,6 +17,7 @@ import { Copy, Plus } from 'lucide-react' import { useState, useRef, MutableRefObject, useEffect } from 'react' import { useStore } from '@nanostores/react' import { copyToClipboard } from '@/lib/utils' +import { SystemStats } from '@/types' export function AddServerButton() { const [open, setOpen] = useState(false) @@ -53,14 +54,14 @@ export function AddServerButton() { const formData = new FormData(e.target as HTMLFormElement) const data = Object.fromEntries(formData) as Record data.stats = { - cpu: 0, - mem: 0, - memUsed: 0, - memPct: 0, - disk: 0, - diskUsed: 0, - diskPct: 0, - } + c: 0, + d: 0, + dp: 0, + du: 0, + m: 0, + mp: 0, + mu: 0, + } as SystemStats try { setOpen(false) await pb.collection('systems').create(data) @@ -97,7 +98,7 @@ export function AddServerButton() {
diff --git a/site/src/components/charts/container-cpu-chart.tsx b/site/src/components/charts/container-cpu-chart.tsx index d39b136..f5428c8 100644 --- a/site/src/components/charts/container-cpu-chart.tsx +++ b/site/src/components/charts/container-cpu-chart.tsx @@ -62,16 +62,20 @@ export default function ({ Math.ceil(max)]} + // tickCount={5} tickLine={false} axisLine={false} - tickFormatter={(v) => `${v}%`} + unit={'%'} + tickFormatter={(x) => (x % 1 === 0 ? x : x.toFixed(1))} /> } + content={} /> {Object.keys(chartConfig).map((key) => ( @@ -70,6 +73,7 @@ export default function ({ `${Math.ceil(v / 1024)} GiB`} @@ -89,7 +93,7 @@ export default function ({ // console.log('itemSorter', item) // return -item.value // }} - content={} + content={} /> {Object.keys(chartConfig).map((key) => ( - + `${v}%`} + unit={'%'} + // tickFormatter={(v) => `${v}%`} /> {/* todo: short time if first date is same day, otherwise short date */} + } /> `${v} GiB`} + unit={' GiB'} /> {/* todo: short time if first date is same day, otherwise short date */} } + content={ + + } /> @@ -48,6 +45,7 @@ export default function ({ domain={[0, totalMem]} tickCount={9} tickLine={false} + allowDecimals={false} axisLine={false} tickFormatter={(v) => `${v} GiB`} /> @@ -62,11 +60,13 @@ export default function ({ /> } + content={ + + } /> let memData = { time: created } as Record for (let container of stats) { - cpuData[container.name] = container.cpu - memData[container.name] = container.mem + cpuData[container.n] = container.c + memData[container.n] = container.m } containerCpuData.push(cpuData) containerMemData.push(memData) @@ -157,7 +157,7 @@ export default function ServerDetail({ name }: { name: string }) { - Average usage of the one minute preceding the recorded time + System-wide CPU utilization of the preceding one minute as a percentage @@ -166,20 +166,22 @@ export default function ServerDetail({ name }: { name: string }) { - - - - Docker CPU Usage - - {' '} - CPU usage of docker containers - - - }> - - - - + {containerCpuChartData.length > 0 && ( + + + + Docker CPU Usage + + {' '} + CPU utilization of docker containers + + + }> + + + + + )} Memory Usage @@ -191,25 +193,27 @@ export default function ServerDetail({ name }: { name: string }) { - - - - Docker Memory Usage - - {' '} - Memory usage of docker containers - - - }> - {server?.stats?.mem && ( - - )} - - - + {containerMemChartData.length > 0 && ( + + + + Docker Memory Usage + + {' '} + Memory usage of docker containers + + + }> + {server?.stats?.m && ( + + )} + + + + )} Disk Usage diff --git a/site/src/components/server-table/data-table.tsx b/site/src/components/server-table/data-table.tsx index 46a14c3..74bb9e0 100644 --- a/site/src/components/server-table/data-table.tsx +++ b/site/src/components/server-table/data-table.tsx @@ -52,6 +52,8 @@ import { Cpu, MemoryStick, HardDrive, + PauseIcon, + CopyIcon, } from 'lucide-react' import { useMemo, useState } from 'react' import { $servers, pb, navigate } from '@/lib/stores' @@ -109,7 +111,7 @@ export default function () { copyToClipboard(info.getValue() as string)} > {info.getValue() as string} - + ), header: ({ column }) => sortableHeader(column, 'Server', Server), }, { - accessorKey: 'stats.cpu', + accessorKey: 'stats.c', cell: CellFormatter, header: ({ column }) => sortableHeader(column, 'CPU', Cpu), }, { - accessorKey: 'stats.memPct', + accessorKey: 'stats.mp', cell: CellFormatter, header: ({ column }) => sortableHeader(column, 'Memory', MemoryStick), }, { - accessorKey: 'stats.diskPct', + accessorKey: 'stats.dp', cell: CellFormatter, header: ({ column }) => sortableHeader(column, 'Disk', HardDrive), }, @@ -169,8 +171,8 @@ export default function () { console.log('pause server')}> Pause - navigator.clipboard.writeText(system.ip)}> - Copy IP address + copyToClipboard(system.ip)}> + Copy host { <>
- - - - { - e.preventDefault() - navigate('/') - }} - > - - - - -

Home

-
-
-
+ { + e.preventDefault() + navigate('/') + }} + > + + +
diff --git a/site/src/types.d.ts b/site/src/types.d.ts index 4a0be7d..8f5610f 100644 --- a/site/src/types.d.ts +++ b/site/src/types.d.ts @@ -9,13 +9,20 @@ export interface SystemRecord extends RecordModel { } export interface SystemStats { - cpu: number - disk: number - diskPct: number - diskUsed: number - mem: number - memPct: number - memUsed: number + /** cpu percent */ + c: number + /** disk size (gb) */ + d: number + /** disk percent */ + dp: number + /** disk used (gb) */ + du: number + /** total memory (gb) */ + m: number + /** memory percent */ + mp: number + /** memory used (gb) */ + mu: number } export interface ContainerStatsRecord extends RecordModel { @@ -24,10 +31,12 @@ export interface ContainerStatsRecord extends RecordModel { } interface ContainerStats { - name: string - cpu: number - mem: number - memPct: number + /** name */ + n: string + /** cpu percent */ + c: number + /** memory used (gb) */ + m: number } export interface SystemStatsRecord extends RecordModel { diff --git a/types.go b/types.go index acb8b95..1153cda 100644 --- a/types.go +++ b/types.go @@ -16,18 +16,19 @@ type SystemData struct { } type SystemStats struct { - Cpu float64 `json:"cpu"` - Mem float64 `json:"mem"` - MemUsed float64 `json:"memUsed"` - MemPct float64 `json:"memPct"` - Disk float64 `json:"disk"` - DiskUsed float64 `json:"diskUsed"` - DiskPct float64 `json:"diskPct"` + Cpu float64 `json:"c"` + Mem float64 `json:"m"` + MemUsed float64 `json:"mu"` + MemPct float64 `json:"mp"` + MemBuf float64 `json:"mb"` + Disk float64 `json:"d"` + DiskUsed float64 `json:"du"` + DiskPct float64 `json:"dp"` } type ContainerStats struct { - Name string `json:"name"` - Cpu float64 `json:"cpu"` - Mem float64 `json:"mem"` - MemPct float64 `json:"memPct"` + Name string `json:"n"` + Cpu float64 `json:"c"` + Mem float64 `json:"m"` + // MemPct float64 `json:"mp"` }