'use client'; import { ColumnDef, ColumnFiltersState, SortingState, VisibilityState, flexRender, getCoreRowModel, getFilteredRowModel, getPaginationRowModel, getSortedRowModel, useReactTable, } from '@tanstack/react-table'; import { Pencil, Trash2 } from 'lucide-react'; import * as React from 'react'; import { TableEmpty } from '@/components/table-skeleton'; import { Button } from '@/components/ui/button'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from '@/components/ui/table'; import { Tooltip, TooltipContent, TooltipTrigger, } from '@/components/ui/tooltip'; import { cn } from '@/lib/utils'; import { useTranslation } from 'react-i18next'; import { useGetVariableLabelByValue } from '../../hooks/use-get-begin-query'; import { VariableFormSchemaType } from './schema'; interface IProps { data: VariableFormSchemaType[]; deleteRecord(index: number): void; showModal(index: number, record: VariableFormSchemaType): void; nodeId?: string; } export function VariableTable({ data = [], deleteRecord, showModal, nodeId, }: IProps) { const { t } = useTranslation(); const getLabel = useGetVariableLabelByValue(nodeId!); const [sorting, setSorting] = React.useState([]); const [columnFilters, setColumnFilters] = React.useState( [], ); const [columnVisibility, setColumnVisibility] = React.useState({}); const columns: ColumnDef[] = [ { accessorKey: 'key', header: t('flow.key'), meta: { cellClassName: 'max-w-30' }, cell: ({ row }) => { const key: string = row.getValue('key'); return (
{key}

{key}

); }, }, { accessorKey: 'ref', header: t('flow.ref'), meta: { cellClassName: 'max-w-30' }, cell: ({ row }) => { const ref: string = row.getValue('ref'); const label = getLabel(ref); return (
{label}

{label}

); }, }, { accessorKey: 'value', header: t('flow.value'), cell: ({ row }) =>
{row.getValue('value')}
, }, { id: 'actions', enableHiding: false, header: t('common.action'), cell: ({ row }) => { const record = row.original; const idx = row.index; return (
); }, }, ]; const table = useReactTable({ data, columns, onSortingChange: setSorting, onColumnFiltersChange: setColumnFilters, getCoreRowModel: getCoreRowModel(), getPaginationRowModel: getPaginationRowModel(), getSortedRowModel: getSortedRowModel(), getFilteredRowModel: getFilteredRowModel(), onColumnVisibilityChange: setColumnVisibility, state: { sorting, columnFilters, columnVisibility, }, }); return (
{table.getHeaderGroups().map((headerGroup) => ( {headerGroup.headers.map((header) => { return ( {header.isPlaceholder ? null : flexRender( header.column.columnDef.header, header.getContext(), )} ); })} ))} {table.getRowModel().rows?.length ? ( table.getRowModel().rows.map((row) => ( {row.getVisibleCells().map((cell) => ( {flexRender( cell.column.columnDef.cell, cell.getContext(), )} ))} )) ) : ( )}
); }