"use client" import * as React from "react" import { ColumnDef } from "@tanstack/react-table" import { formatDate, formatDateTime } from "@/lib/utils" import { Checkbox } from "@/components/ui/checkbox" import { DataTableColumnHeaderSimple } from "@/components/data-table/data-table-column-simple-header" import { DataTableRowAction } from "@/types/table" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { Button } from "@/components/ui/button" import { Ellipsis } from "lucide-react" import { Badge } from "@/components/ui/badge" import { PqCriterias } from "@/db/schema/pq" interface GetColumnsProps { setRowAction: React.Dispatch | null>> } export function getColumns({ setRowAction, }: GetColumnsProps): ColumnDef[] { return [ { id: "select", header: ({ table }) => ( table.toggleAllPageRowsSelected(!!value)} aria-label="Select all" className="translate-y-0.5" /> ), cell: ({ row }) => ( row.toggleSelected(!!value)} aria-label="Select row" className="translate-y-0.5" /> ), size:40, enableSorting: false, enableHiding: false, }, { accessorKey: "groupName", header: ({ column }) => ( ), cell: ({ row }) =>
{row.getValue("groupName")}
, meta: { excelHeader: "Group Name" }, enableResizing: true, minSize: 60, size: 100, }, { accessorKey: "code", header: ({ column }) => ( ), cell: ({ row }) =>
{row.getValue("code")}
, meta: { excelHeader: "Code" }, enableResizing: true, minSize: 50, size: 100, }, { accessorKey: "checkPoint", header: ({ column }) => ( ), cell: ({ row }) =>
{row.getValue("checkPoint")}
, meta: { excelHeader: "Check Point" }, enableResizing: true, minSize: 180, size: 180, }, { accessorKey: "description", header: ({ column }) => ( ), cell: ({ row }) => { const text = row.getValue("description") as string return (
{text}
) }, meta: { excelHeader: "Description" }, enableResizing: true, minSize: 180, size: 180, }, { accessorKey: "createdAt", header: ({ column }) => ( ), cell: ({ cell }) => formatDateTime(cell.getValue() as Date, "KR"), meta: { excelHeader: "created At" }, enableResizing: true, minSize: 180, size: 180, }, { accessorKey: "updatedAt", header: ({ column }) => ( ), cell: ({ cell }) => formatDateTime(cell.getValue() as Date, "KR"), meta: { excelHeader: "updated At" }, enableResizing: true, minSize: 180, size: 180, }, { id: "actions", enableHiding: false, cell: function Cell({ row }) { const [isUpdatePending, startUpdateTransition] = React.useTransition() return ( setRowAction({ row, type: "update" })} > Edit setRowAction({ row, type: "delete" })} > Delete ⌘⌫ ) }, size: 40, } ] }