From 44b74ff4170090673b6eeacd8c528e0abf47b7aa Mon Sep 17 00:00:00 2001
From: joonhoekim <26rote@gmail.com>
Date: Mon, 1 Dec 2025 19:52:06 +0900
Subject: (김준회) deprecated code 정리
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 lib/rfqs/tbe-table/tbe-table-columns.tsx | 373 -------------------------------
 1 file changed, 373 deletions(-)
 delete mode 100644 lib/rfqs/tbe-table/tbe-table-columns.tsx

(limited to 'lib/rfqs/tbe-table/tbe-table-columns.tsx')

diff --git a/lib/rfqs/tbe-table/tbe-table-columns.tsx b/lib/rfqs/tbe-table/tbe-table-columns.tsx
deleted file mode 100644
index 0538d354..00000000
--- a/lib/rfqs/tbe-table/tbe-table-columns.tsx
+++ /dev/null
@@ -1,373 +0,0 @@
-"use client"
-
-import * as React from "react"
-import { type DataTableRowAction } from "@/types/table"
-import { type ColumnDef } from "@tanstack/react-table"
-import { Download, Ellipsis, MessageSquare } from "lucide-react"
-import { toast } from "sonner"
-
-import { getErrorMessage } from "@/lib/handle-error"
-import { formatDate } from "@/lib/utils"
-import { Badge } from "@/components/ui/badge"
-import { Button } from "@/components/ui/button"
-import { Checkbox } from "@/components/ui/checkbox"
-
-import { DataTableColumnHeaderSimple } from "@/components/data-table/data-table-column-simple-header"
-import { useRouter } from "next/navigation"
-
-import {
-  vendorTbeColumnsConfig,
-  VendorWithTbeFields,
-} from "@/config/vendorTbeColumnsConfig"
-
-type NextRouter = ReturnType<typeof useRouter>
-
-interface GetColumnsProps {
-  setRowAction: React.Dispatch<
-    React.SetStateAction<DataTableRowAction<VendorWithTbeFields> | null>
-  >
-  router: NextRouter
-  openCommentSheet: (vendorId: number) => void
-  openFilesDialog: (tbeId:number , vendorId: number) => void
-  openVendorContactsDialog: (vendorId: number, vendor: VendorWithTbeFields) => void // 수정된 시그니처
-
-}
-
-/**
- * tanstack table 컬럼 정의 (중첩 헤더 버전)
- */
-export function getColumns({
-  setRowAction,
-  openCommentSheet,
-  openFilesDialog,
-  openVendorContactsDialog
-}: GetColumnsProps): ColumnDef<VendorWithTbeFields>[] {
-  // ----------------------------------------------------------------
-  // 1) Select 컬럼 (체크박스)
-  // ----------------------------------------------------------------
-  const selectColumn: ColumnDef<VendorWithTbeFields> = {
-    id: "select",
-    header: ({ table }) => (
-      <Checkbox
-        checked={
-          table.getIsAllPageRowsSelected() ||
-          (table.getIsSomePageRowsSelected() && "indeterminate")
-        }
-        onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}
-        aria-label="Select all"
-        className="translate-y-0.5"
-      />
-    ),
-    cell: ({ row }) => (
-      <Checkbox
-        checked={row.getIsSelected()}
-        onCheckedChange={(value) => row.toggleSelected(!!value)}
-        aria-label="Select row"
-        className="translate-y-0.5"
-      />
-    ),
-    size: 40,
-    enableSorting: false,
-    enableHiding: false,
-  }
-
-  // ----------------------------------------------------------------
-  // 2) 그룹화(Nested) 컬럼 구성
-  // ----------------------------------------------------------------
-  const groupMap: Record<string, ColumnDef<VendorWithTbeFields>[]> = {}
-
-  vendorTbeColumnsConfig.forEach((cfg) => {
-    const groupName = cfg.group || "_noGroup"
-    if (!groupMap[groupName]) {
-      groupMap[groupName] = []
-    }
-
-    // childCol: ColumnDef<VendorWithTbeFields>
-    const childCol: ColumnDef<VendorWithTbeFields> = {
-      accessorKey: cfg.id,
-      enableResizing: true,
-      header: ({ column }) => (
-        <DataTableColumnHeaderSimple column={column} title={cfg.label} />
-      ),
-      meta: {
-        excelHeader: cfg.excelHeader,
-        group: cfg.group,
-        type: cfg.type,
-      },
-      // 셀 렌더링
-      cell: ({ row, getValue }) => {
-        // 1) 필드값 가져오기
-        const val = getValue()
-
-        if (cfg.id === "vendorName") {
-          const vendor = row.original;
-          const vendorId = vendor.vendorId;
-          
-          // 협력업체 이름을 클릭할 수 있는 버튼으로 렌더링
-          const handleVendorNameClick = () => {
-            if (vendorId) {
-              openVendorContactsDialog(vendorId, vendor); // vendor 전체 객체 전달
-            } else {
-              toast.error("협력업체 ID를 찾을 수 없습니다.");
-            }
-          };
-          
-          return (
-            <Button
-              variant="link"
-              className="p-0 h-auto text-left font-normal justify-start hover:underline"
-              onClick={handleVendorNameClick}
-            >
-              {val as string}
-            </Button>
-          );
-        }
-
-        if (cfg.id === "tbeResult") {
-          const vendor = row.original;
-          const tbeResult = vendor.tbeResult;
-          const filesCount = vendor.files?.length ?? 0;
-          
-          // Only show button or link if there are files
-          if (filesCount > 0) {
-            // Function to handle clicking on the result
-            const handleTbeResultClick = () => {
-              setRowAction({ row, type: "tbeResult" });
-            };
-            
-            if (!tbeResult) {
-              // No result yet, but files exist - show "결과 입력" button
-              return (
-                <Button
-                  variant="outline"
-                  size="sm"
-                  onClick={handleTbeResultClick}
-                >
-                  결과 입력
-                </Button>
-              );
-            } else {
-              // Result exists - show as a hyperlink
-              let badgeVariant: "default" | "outline" | "destructive" | "secondary" = "outline";
-              
-              // Set badge variant based on result
-              if (tbeResult === "pass") {
-                badgeVariant = "default";
-              } else if (tbeResult === "non-pass") {
-                badgeVariant = "destructive";
-              } else if (tbeResult === "conditional pass") {
-                badgeVariant = "secondary";
-              }
-              
-              return (
-                <Button
-                  variant="link"
-                  className="p-0 h-auto underline"
-                  onClick={handleTbeResultClick}
-                >
-                  <Badge variant={badgeVariant}>
-                    {tbeResult}
-                  </Badge>
-                </Button>
-              );
-            }
-          }
-          
-          // No files available, return empty cell
-          return null;
-        }
-
-
-        if (cfg.id === "vendorStatus") {
-          const statusVal = row.original.vendorStatus
-          if (!statusVal) return null
-          // const Icon = getStatusIcon(statusVal)
-          return (
-            <Badge variant="outline">
-              {statusVal}
-            </Badge>
-          )
-        }
-
-
-        if (cfg.id === "rfqVendorStatus") {
-          const statusVal = row.original.rfqVendorStatus
-          if (!statusVal) return null
-          // const Icon = getStatusIcon(statusVal)
-          const variant = statusVal ==="INVITED"?"default" :statusVal ==="DECLINED"?"destructive":statusVal ==="ACCEPTED"?"secondary":"outline"
-          return (
-            <Badge variant={variant}>
-              {statusVal}
-            </Badge>
-          )
-        }
-
-        
-
-        // 예) TBE Updated (날짜)
-        if (cfg.id === "tbeUpdated") {
-          const dateVal = val as Date | undefined
-          if (!dateVal) return null
-          return formatDate(dateVal, "KR")
-        }
-
-        // 그 외 필드는 기본 값 표시
-        return val ?? ""
-      },
-    }
-
-    groupMap[groupName].push(childCol)
-  })
-
-  // groupMap → nestedColumns
-  const nestedColumns: ColumnDef<VendorWithTbeFields>[] = []
-  Object.entries(groupMap).forEach(([groupName, colDefs]) => {
-    if (groupName === "_noGroup") {
-      nestedColumns.push(...colDefs)
-    } else {
-      nestedColumns.push({
-        id: groupName,
-        header: groupName,
-        columns: colDefs,
-      })
-    }
-  })
-
-// ----------------------------------------------------------------
-// 3) Comments 컬럼
-// ----------------------------------------------------------------
-const commentsColumn: ColumnDef<VendorWithTbeFields> = {
-  id: "comments",
-  header: ({ column }) => (
-    <DataTableColumnHeaderSimple column={column} title="Comments" />
-  ),
-  cell: ({ row }) => {
-    const vendor = row.original
-    const commCount = vendor.comments?.length ?? 0
-
-    function handleClick() {
-      // rowAction + openCommentSheet
-      setRowAction({ row, type: "comments" })
-      openCommentSheet(vendor.tbeId ?? 0)
-    }
-
-      return (
-        <Button
-          variant="ghost"
-          size="sm"
-          className="relative h-8 w-8 p-0 group"
-          onClick={handleClick}
-          aria-label={
-            commCount > 0 ? `View ${commCount} comments` : "No comments"
-          }
-        >
-          <MessageSquare className="h-4 w-4 text-muted-foreground group-hover:text-primary transition-colors" />
-          {commCount > 0 && (
-            <Badge
-              variant="secondary"
-              className="pointer-events-none absolute -top-1 -right-1 h-4 min-w-[1rem] p-0 text-[0.625rem] leading-none flex items-center justify-center"
-            >
-              {commCount}
-            </Badge>
-          )}
-          <span className="sr-only">
-            {commCount > 0 ? `${commCount} Comments` : "No Comments"}
-          </span>
-        </Button>
-      )
-  },
-  enableSorting: false,
-  maxSize:80
-}
-
-  // ----------------------------------------------------------------
-  // 4) Actions 컬럼 (예: 초대하기 버튼)
-  // ----------------------------------------------------------------
-  // const actionsColumn: ColumnDef<VendorWithTbeFields> = {
-  //   id: "actions",
-  //   cell: ({ row }) => {
-  //     const status = row.original.tbeResult
-  //     // 예: 만약 tbeResult가 없을 때만 초대하기 버튼 표시
-  //     if (status) {
-  //       return null
-  //     }
-
-  //     return (
-  //       <Button
-  //         onClick={() => setRowAction({ row, type: "invite" })}
-  //         size="sm"
-  //         variant="outline"
-  //       >
-  //         발행하기
-  //       </Button>
-  //     )
-  //   },
-  //   size: 80,
-  //   enableSorting: false,
-  //   enableHiding: false,
-  // }
-// ----------------------------------------------------------------
-// 3) Files Column - Add before Comments column
-// ----------------------------------------------------------------
-const filesColumn: ColumnDef<VendorWithTbeFields> = {
-  id: "files",
-  header: ({ column }) => (
-    <DataTableColumnHeaderSimple column={column} title="Response Files" />
-  ),
-  cell: ({ row }) => {
-    const vendor = row.original
-    // We'll assume that files count will be populated from the backend
-    // You'll need to modify your getTBE function to include files 
-    const filesCount = vendor.files?.length ?? 0
-
-    function handleClick() {
-      // Open files dialog
-      setRowAction({ row, type: "files" })
-      openFilesDialog(vendor.tbeId ?? 0, vendor.vendorId ?? 0)
-    }
-
-    return (
-      <div className="flex items-center justify-center">
-<Button
-  variant="ghost"
-  size="sm"
-  className="relative h-8 w-8 p-0 group"
-  onClick={handleClick}
-  aria-label={filesCount > 0 ? `View ${filesCount} files` : "Upload file"}
->
-  {/* 아이콘: 중앙 정렬을 위해 Button 자체가 flex container */}
-  <Download className="h-4 w-4 text-muted-foreground group-hover:text-primary transition-colors" />
-
-  {/* 파일 개수가 1개 이상이면 뱃지 표시 */}
-  {filesCount > 0 && (
-    <Badge
-      variant="secondary"
-      className="pointer-events-none absolute -top-1 -right-1 h-4 min-w-[1rem] p-0 text-[0.625rem] leading-none flex items-center justify-center"
-    >
-      {filesCount}
-    </Badge>
-  )}
-
-  <span className="sr-only">
-    {filesCount > 0 ? `${filesCount} Files` : "Upload File"}
-  </span>
-</Button>
-      </div>
-    )
-  },
-  enableSorting: false,
-  maxSize: 80
-}
-
-// ----------------------------------------------------------------
-// 5) 최종 컬럼 배열 - Update to include the files column
-// ----------------------------------------------------------------
-return [
-  selectColumn,
-  ...nestedColumns,
-  filesColumn,  // Add the files column before comments
-  commentsColumn,
-  // actionsColumn,
-]
-
-}
\ No newline at end of file
-- 
cgit v1.2.3

