From 309bbf1fba35a00af82ea6d48431f87fe875697e Mon Sep 17 00:00:00 2001 From: Henry Dollman Date: Mon, 8 Jul 2024 18:44:07 -0400 Subject: [PATCH] updates --- site/src/components/routes/home.tsx | 41 ++++++++------- site/src/components/routes/server.tsx | 22 ++++++-- .../components/server-table/data-table.tsx | 50 +++++++++++++++---- 3 files changed, 82 insertions(+), 31 deletions(-) diff --git a/site/src/components/routes/home.tsx b/site/src/components/routes/home.tsx index fc82859..0fa665c 100644 --- a/site/src/components/routes/home.tsx +++ b/site/src/components/routes/home.tsx @@ -6,32 +6,39 @@ import { DataTable } from '../server-table/data-table' export function Home() { const [systems, setSystems] = useState([] as SystemRecord[]) + useEffect(() => { + document.title = 'Home' + }, []) + useEffect(() => { pb.collection('systems') - .getList(1, 20) - .then(({ items }) => { + .getFullList({ + sort: 'name', + }) + .then((items) => { setSystems(items) }) - pb.collection('systems').subscribe('*', (e) => { - setSystems((curSystems) => { - const i = curSystems.findIndex((s) => s.id === e.record.id) - if (i > -1) { - const newSystems = [...curSystems] - newSystems[i] = e.record - return newSystems - } else { - return [...curSystems, e.record] - } - }) - }) - return () => pb.collection('systems').unsubscribe('*') + // pb.collection('systems').subscribe('*', (e) => { + // setSystems((curSystems) => { + // const i = curSystems.findIndex((s) => s.id === e.record.id) + // if (i > -1) { + // const newSystems = [...curSystems] + // newSystems[i] = e.record + // return newSystems + // } else { + // return [...curSystems, e.record] + // } + // }) + // }) + // return () => pb.collection('systems').unsubscribe('*') }, []) + // if (!systems.length) return <>Loading... + return ( <> -

Dashboard

- {systems.length && } + {/*
{JSON.stringify(systems, null, 2)}
*/} ) diff --git a/site/src/components/routes/server.tsx b/site/src/components/routes/server.tsx index 255d0f3..4b769d7 100644 --- a/site/src/components/routes/server.tsx +++ b/site/src/components/routes/server.tsx @@ -1,12 +1,28 @@ -import { useEffect } from 'preact/hooks' +import { pb } from '@/lib/stores' +import { SystemRecord } from '@/types' +import { useEffect, useState } from 'preact/hooks' import { useRoute } from 'wouter-preact' export function ServerDetail() { const [_, params] = useRoute('/server/:name') + const [node, setNode] = useState({} as SystemRecord) useEffect(() => { - document.title = `Server: ${params!.name}` + document.title = params!.name }, []) - return <>Info for {params!.name} + useEffect(() => { + pb.collection('systems') + .getFirstListItem(`name="${params!.name}"`) + .then((record) => { + setNode(record) + }) + }) + + return ( + <> +

{node.name}

+
{JSON.stringify(node, null, 2)}
+ + ) } diff --git a/site/src/components/server-table/data-table.tsx b/site/src/components/server-table/data-table.tsx index e3ec4ae..1074435 100644 --- a/site/src/components/server-table/data-table.tsx +++ b/site/src/components/server-table/data-table.tsx @@ -33,34 +33,40 @@ import { } from '@/components/ui/dropdown-menu' import { SystemRecord } from '@/types' -import { MoreHorizontal, ArrowUpDown } from 'lucide-react' +import { MoreHorizontal, ArrowUpDown, Copy, RefreshCcw } from 'lucide-react' import { Link } from 'wouter-preact' import { useState } from 'preact/hooks' function CellFormatter(info: CellContext) { const val = info.getValue() as number let background = '#42b768' - if (val > 25) { + if (val > 80) { + // red background = '#da2a49' - } else if (val > 10) { + } else if (val > 50) { + // yellow background = '#daa42a' } return (
- {val.toFixed(2)}% + {val.toFixed(2)}%
) } function sortableHeader(column: Column, name: string) { return ( - @@ -72,7 +78,19 @@ export function DataTable({ data }: { data: SystemRecord[] }) { { size: 40, accessorKey: 'name', - cell: (info) => {info.getValue() as string}, + cell: (info) => ( + + {info.getValue() as string}{' '} + + {/* */} + + ), header: ({ column }) => sortableHeader(column, 'Node'), }, { @@ -145,7 +163,7 @@ export function DataTable({ data }: { data: SystemRecord[] }) { }) return ( - <> +
table.getColumn('name')?.setFilterValue(event.target.value)} className="max-w-sm" /> +
-
+
- + {table.getHeaderGroups().map((headerGroup) => ( {headerGroup.headers.map((header) => { @@ -193,6 +221,6 @@ export function DataTable({ data }: { data: SystemRecord[] }) {
- +
) }