diff --git a/internal/site/src/components/systems-table/systems-table-columns.tsx b/internal/site/src/components/systems-table/systems-table-columns.tsx index d47f0f5c..53807d4d 100644 --- a/internal/site/src/components/systems-table/systems-table-columns.tsx +++ b/internal/site/src/components/systems-table/systems-table-columns.tsx @@ -8,6 +8,7 @@ import type { ClassValue } from "clsx" import { ArrowUpDownIcon, ChevronRightSquareIcon, + ClockArrowUp, CopyIcon, CpuIcon, HardDriveIcon, @@ -34,6 +35,7 @@ import { formatTemperature, getMeterState, parseSemVer, + secondsToString, } from "@/lib/utils" import { batteryStateTranslations } from "@/lib/i18n" import type { SystemRecord } from "@/types" @@ -373,6 +375,29 @@ export function SystemsTableColumns(viewMode: "table" | "grid"): ColumnDef info.u || undefined, + id: "uptime", + name: () => t`Uptime`, + size: 50, + Icon: ClockArrowUp, + header: sortableHeader, + cell(info) { + const uptime = info.getValue() as number + if (!uptime) { + return null + } + let formatted: string + if (uptime < 3600) { + formatted = secondsToString(uptime, "minute") + } else if (uptime < 360000) { + formatted = secondsToString(uptime, "hour") + } else { + formatted = secondsToString(uptime, "day") + } + return {formatted} + }, + }, { accessorFn: ({ info }) => info.v, id: "agent",