"use client";
import * as React from "react";
import { type ColumnDef } from "@tanstack/react-table";
import { DataTableColumnHeaderSimple } from "@/components/data-table/data-table-column-simple-header";
import { Badge } from "@/components/ui/badge";
export type EDPVendorRow = {
vendorId: number;
vendorName: string;
totalForms: number;
totalTags: number;
totalRequiredFields: number;
totalFilledFields: number;
completionPercentage: number;
};
function renderCompletionBadge(value: number | string | undefined) {
const num = typeof value === "string" ? Number(value) : (value ?? 0);
// Show '-' for vendors with no EDP data (0% completion)
if (num === 0) {
return (
-
);
}
const variant: "success" | "secondary" | "destructive" =
num >= 80 ? "success" : num >= 50 ? "secondary" : "destructive";
return (
{num}%
);
}
export function getColumns(): ColumnDef[] {
const cols: ColumnDef[] = [
{
accessorKey: "vendorName",
header: ({ column }) => (
),
cell: ({ row }) => row.getValue("vendorName") as string,
meta: { excelHeader: "Vendor Name" },
enableResizing: true,
size: 80,
minSize: 50,
maxSize: 150,
},
{
accessorKey: "totalForms",
header: ({ column }) => (
),
cell: ({ row }) => String(row.getValue("totalForms") ?? 0),
meta: { excelHeader: "Total Forms" },
size: 30,
minSize: 30,
maxSize: 120,
},
{
accessorKey: "totalTags",
header: ({ column }) => (
),
cell: ({ row }) => String(row.getValue("totalTags") ?? 0),
meta: { excelHeader: "Total Tags" },
size: 30,
minSize: 30,
maxSize: 120,
},
{
accessorKey: "totalRequiredFields",
header: ({ column }) => (
),
cell: ({ row }) => String(row.getValue("totalRequiredFields") ?? 0),
meta: { excelHeader: "Total Required Fields" },
size: 30,
minSize: 30,
maxSize: 120,
},
{
accessorKey: "totalFilledFields",
header: ({ column }) => (
),
cell: ({ row }) => String(row.getValue("totalFilledFields") ?? 0),
meta: { excelHeader: "Total Filled Fields" },
size: 30,
minSize: 30,
maxSize: 120,
},
{
accessorKey: "completionPercentage",
header: ({ column }) => (
),
cell: ({ row }) => renderCompletionBadge(row.getValue("completionPercentage") as number | string),
meta: { excelHeader: "Completion %" },
size: 30,
minSize: 30,
maxSize: 120,
},
];
return cols;
}