gitscope
← marzneshin / v0.6.3 / dashboard/src/modules/nodes/tables/table.tsx
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/modules/nodes/tables/table.tsx · TypeScript
Blame Raw
 1import { FC } from "react";
 2import {
 3    columns as columnsFn,
 4    fetchNodes,
 5    NodeType
 6} from '@marzneshin/modules/nodes';
 7import { EntityTable } from "@marzneshin/libs/entity-table";
 8import { useNavigate } from "@tanstack/react-router";
 9
10export const NodesTable: FC = () => {
11    const navigate = useNavigate({ from: "/nodes" });
12
13    const onOpen = (entity: NodeType) => {
14        navigate({
15            to: "/nodes/$nodeId",
16            params: { nodeId: String(entity.id) },
17        })
18    }
19
20    const onEdit = (entity: NodeType) => {
21        navigate({
22            to: "/nodes/$nodeId/edit",
23            params: { nodeId: String(entity.id) },
24        })
25    }
26
27    const onDelete = (entity: NodeType) => {
28        navigate({
29            to: "/nodes/$nodeId/delete",
30            params: { nodeId: String(entity.id) },
31        })
32    }
33
34    const columns = columnsFn({ onEdit, onDelete, onOpen });
35
36    return (
37        <EntityTable
38            fetchEntity={fetchNodes}
39            columns={columns}
40            primaryFilter="name"
41            entityKey="nodes"
42            onCreate={() => navigate({ to: "/nodes/create" })}
43            onOpen={onOpen}
44        />
45    )
46}