8000 render provisioners in a table · coder/coder@6f9a9e9 · GitHub
[go: up one dir, main page]

Skip to content

Commit 6f9a9e9

Browse files
committed
render provisioners in a table
1 parent f30fa76 commit 6f9a9e9

File tree

2 files changed

+41
-26
lines changed

2 files changed

+41
-26
lines changed

site/src/pages/OrganizationSettingsPage/OrganizationProvisionerKeysPage/OrganizationProvisionerKeysPageView.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ export const OrganizationProvisionerKeysPageView: FC<
8787
.map((pkd) => (
8888
<ProvisionerKeyRow
8989
key={pkd.key.id}
90+
buildVersion={buildVersion}
9091
provisionerKey={pkd.key}
9192
provisioners={pkd.daemons}
9293
defaultIsOpen={false}

site/src/pages/OrganizationSettingsPage/OrganizationProvisionerKeysPage/ProvisionerKeyRow.tsx

Lines changed: 40 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,32 @@
11
import type { ProvisionerDaemon, ProvisionerKey } from "api/typesGenerated";
22
import { Button } from "components/Button/Button";
33
import { CopyButton } from "components/CopyButton/CopyButton";
4-
import { TableCell, TableRow } from "components/Table/Table";
4+
import {
5+
Table,
6+
TableCell,
7+
TableHead,
8+
TableHeader,
9+
TableRow,
10+
} from "components/Table/Table";
511
import { ChevronDownIcon, ChevronRightIcon } from "lucide-react";
612
import { ProvisionerTag } from "modules/provisioners/ProvisionerTags";
13+
import { LastConnectionHead } from "pages/OrganizationSettingsPage/OrganizationProvisionersPage/LastConnectionHead";
14+
import { ProvisionerRow } from "pages/OrganizationSettingsPage/OrganizationProvisionersPage/ProvisionerRow";
715
import { type FC, useState } from "react";
8-
import { Link as RouterLink } from "react-router-dom";
916
import { cn } from "utils/cn";
1017
import { relativeTime } from "utils/time";
1118

1219
type ProvisionerKeyRowProps = {
1320
readonly provisionerKey: ProvisionerKey;
1421
readonly provisioners: readonly ProvisionerDaemon[];
22+
readonly buildVersion: string | undefined;
1523
defaultIsOpen: boolean;
1624
};
1725

1826
export const ProvisionerKeyRow: FC<ProvisionerKeyRowProps> = ({
1927
provisionerKey,
2028
provisioners,
29+
buildVersion,
2130
defaultIsOpen = false,
2231
}) => {
2332
const [isOpen, setIsOpen] = useState(defaultIsOpen);
@@ -61,33 +70,38 @@ export const ProvisionerKeyRow: FC<ProvisionerKeyRowProps> = ({
6170

6271
{isOpen && (
6372
<TableRow>
64-
<TableCell colSpan={999} className="p-4 border-t-0">
73+
<TableCell colSpan={999} className="p-0">
6574
{provisioners.length === 0 ? (
66-
<span className="text-muted-foreground">
67-
No provisioners found for this key.
68-
</span>
75+
<TableRow>
76+
<TableCell colSpan={999} className="p-4 border-t-0">
77+
<span className="text-muted-foreground">
78+
No provisioners found for this key.
79+
</span>
80+
</TableCell>
81+
</TableRow>
6982
) : (
70-
<dl>
71-
<dt>Provisioners:</dt>
72-
{provisioners.map((provisioner) => (
73-
<dd key={provisioner.id}>
74-
<span className="font-mono text-content-primary">
75-
{provisioner.name} ({provisioner.id}){" "}
76-
</span>
77-
<CopyButton
78-
text={provisioner.id}
79-
label="Copy provisioner ID"
80-
/>
81-
<Button size="xs" variant="outline" asChild>
82-
<RouterLink
83-
to={`../provisioners?${new URLSearchParams({ ids: provisioner.id })}`}
84-
>
85-
View provisioner
86-
</RouterLink>
87-
</Button>
88-
</dd>
83+
<Table>
84+
<TableHeader>
85+
<TableRow>
86+
<TableHead>Name</TableHead>
87+
<TableHead>Key</TableHead>
88+
<TableHead>Version</TableHead>
89+
<TableHead>Status</TableHead>
90+
<TableHead>Tags</TableHead>
91+
<TableHead>
92+
<LastConnectionHead />
93+
</TableHead>
94+
</TableRow>
95+
</TableHeader>
96+
{provisioners.map((p) => (
97+
<ProvisionerRow
98+
key={p.id}
99+
buildVersion={buildVersion}
100+
provisioner={p}
101+
defaultIsOpen={false}
102+
/>
89103
))}
90-
</dl>
104+
</Table>
91105
)}
92106
</TableCell>
93107
</TableRow>

0 commit comments

Comments
 (0)
0