"use client"; import { ColumnDef } from "@tanstack/react-table"; import { DetailDwgReceiptItem } from "../actions"; import { formatDolceDateTime } from "../utils/date-formatter"; // DOLCE API ENM 필드가 제대로 번역되지 않아 직접 매핑 const DRAWING_USAGE_MAP: Record = { APP: { ko: "승인용", en: "Approval" }, WOR: { ko: "작업용", en: "Working" }, REC: { ko: "입수용 / GTT→SHI", en: "GTT→SHI" }, SUB: { ko: "제출용 / SHI→GTT", en: "SHI→GTT" }, }; const REGISTER_KIND_MAP: Record = { APPR: { ko: "승인 제출용 도면(Full)", en: "For Approval(Full)" }, APPP: { ko: "승인 제출용 도면(Partial)", en: "For Approval(Partial)" }, WORK: { ko: "작업용 입수도면(Full)", en: "For Working(Full)" }, WORP: { ko: "작업용 입수도면(Partial)", en: "For Working(Partial)" }, RECW: { ko: "Working 도면입수(GTT→SHI)", en: "Working Dwg(GTT→SHI)" }, RECP: { ko: "Pre. 도면입수(GTT→SHI)", en: "Pre. Dwg(GTT→SHI)" }, }; // 카테고리는 API에서 ENM이 제공되는 것으로 가정 (필요시 추가) const translateDrawingUsage = (code: string | null, lng: string): string => { if (!code) return ""; const mapped = DRAWING_USAGE_MAP[code]; if (!mapped) return code; return lng === "en" ? mapped.en : mapped.ko; }; const translateRegisterKind = (code: string | null, lng: string): string => { if (!code) return ""; const mapped = REGISTER_KIND_MAP[code]; if (!mapped) return code; return lng === "en" ? mapped.en : mapped.ko; }; // 기본 컬럼 (기존 호환성 유지) export const detailDrawingColumns: ColumnDef[] = [ { accessorKey: "RegisterSerialNo", header: "일련번호", minSize: 80, cell: ({ row }) => { return
{row.getValue("RegisterSerialNo")}
; }, }, { accessorKey: "DrawingRevNo", header: "Revision", minSize: 100, cell: ({ row }) => { return
{row.getValue("DrawingRevNo")}
; }, }, { accessorKey: "Status", header: "상태", minSize: 120, cell: ({ row }) => { return
{row.getValue("Status")}
; }, }, { accessorKey: "CategoryENM", header: "카테고리", minSize: 120, cell: ({ row }) => { const categoryENM = row.getValue("CategoryENM") as string; const categoryNM = row.original.CategoryNM; return
{categoryENM || categoryNM}
; }, }, { accessorKey: "DrawingUsageENM", header: "도면용도", minSize: 100, cell: ({ row }) => { const usageENM = row.getValue("DrawingUsageENM") as string | null; const usageNM = row.original.DrawingUsageNM; return
{usageENM || usageNM}
; }, }, { accessorKey: "RegisterKindENM", header: "등록종류", minSize: 180, cell: ({ row }) => { const kindENM = row.getValue("RegisterKindENM") as string | null; const kindNM = row.original.RegisterKindNM; return
{kindENM || kindNM}
; }, }, { accessorKey: "CreateUserNM", header: "생성자", minSize: 150, cell: ({ row }) => { const userENM = row.original.CreateUserENM; const userNM = row.getValue("CreateUserNM") as string; return
{userENM || userNM}
; }, }, { accessorKey: "CreateDt", header: "생성일시", minSize: 200, cell: ({ row }) => { return
{row.getValue("CreateDt")}
; }, }, ]; // 다국어 지원 컬럼 생성 함수 export function createDetailDrawingColumns( lng: string, // eslint-disable-next-line @typescript-eslint/no-explicit-any t: any ): ColumnDef[] { return [ { accessorKey: "RegisterSerialNo", header: t("detailDrawing.columns.serialNo"), minSize: 80, cell: ({ row }) => { return
{row.getValue("RegisterSerialNo")}
; }, }, { accessorKey: "DrawingRevNo", header: t("detailDrawing.columns.revNo"), minSize: 100, cell: ({ row }) => { return
{row.getValue("DrawingRevNo")}
; }, }, { accessorKey: "Status", header: t("detailDrawing.columns.status"), minSize: 120, cell: ({ row }) => { return
{row.getValue("Status")}
; }, }, { accessorKey: "CategoryENM", header: t("detailDrawing.columns.category"), minSize: 120, cell: ({ row }) => { const categoryENM = row.getValue("CategoryENM") as string; const categoryNM = row.original.CategoryNM; // 영어인 경우 ENM, 한국어인 경우 NM 사용 return
{lng === "en" ? (categoryENM || categoryNM) : (categoryNM || categoryENM)}
; }, }, { accessorKey: "DrawingUsageENM", header: t("detailDrawing.columns.drawingUsage"), minSize: 100, cell: ({ row }) => { // API의 ENM이 제대로 번역되지 않아 코드 값으로 직접 변환 const usageCode = row.getValue("DrawingUsageENM") as string | null; const translated = translateDrawingUsage(usageCode, lng); return
{translated || usageCode || row.original.DrawingUsageNM}
; }, }, { accessorKey: "RegisterKindENM", header: t("detailDrawing.columns.registerKind"), minSize: 180, cell: ({ row }) => { // API의 ENM이 제대로 번역되지 않아 코드 값으로 직접 변환 const kindCode = row.getValue("RegisterKindENM") as string | null; const translated = translateRegisterKind(kindCode, lng); return
{translated || kindCode || row.original.RegisterKindNM}
; }, }, { accessorKey: "CreateUserNM", header: t("detailDrawing.columns.createdBy"), minSize: 150, cell: ({ row }) => { const userENM = row.original.CreateUserENM; const userNM = row.getValue("CreateUserNM") as string; return
{lng === "en" ? (userENM || userNM) : (userNM || userENM)}
; }, }, { accessorKey: "CreateDt", header: t("detailDrawing.columns.createdAt"), minSize: 200, cell: ({ row }) => { const date = row.getValue("CreateDt") as string; return
{formatDolceDateTime(date)}
; }, }, ]; }