From bac0228d21b7195065e9cddcc327ae33659c7bcc Mon Sep 17 00:00:00 2001
From: dujinkim <dujin.kim@dtsolution.co.kr>
Date: Sun, 1 Jun 2025 13:52:21 +0000
Subject: (대표님) 20250601까지 작업사항
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 components/form-data/form-data-table-columns.tsx | 50 ++++++++++--------------
 1 file changed, 20 insertions(+), 30 deletions(-)

(limited to 'components/form-data/form-data-table-columns.tsx')

diff --git a/components/form-data/form-data-table-columns.tsx b/components/form-data/form-data-table-columns.tsx
index b088276e..bba2a208 100644
--- a/components/form-data/form-data-table-columns.tsx
+++ b/components/form-data/form-data-table-columns.tsx
@@ -22,7 +22,7 @@ import { toast } from 'sonner';
 /** row 액션 관련 타입 */
 export interface DataTableRowAction<TData> {
   row: Row<TData>;
-  type: "open" | "edit" | "update";
+  type: "open" | "edit" | "update" | "delete";
 }
 
 /** 컬럼 타입 (필요에 따라 확장) */
@@ -57,7 +57,7 @@ interface GetColumnsProps<TData> {
   // 체크박스 선택 관련 props
   selectedRows?: Record<string, boolean>;
   onRowSelectionChange?: (updater: Record<string, boolean> | ((prev: Record<string, boolean>) => Record<string, boolean>)) => void;
-  editableFieldsMap?: Map<string, string[]>; // 새로 추가
+  // editableFieldsMap 제거됨
 }
 
 /**
@@ -73,7 +73,7 @@ export function getColumns<TData extends object>({
   tempCount,
   selectedRows = {},
   onRowSelectionChange,
-  editableFieldsMap = new Map(), // 새로 추가
+  // editableFieldsMap 매개변수 제거됨
 }: GetColumnsProps<TData>): ColumnDef<TData>[] {
   const columns: ColumnDef<TData>[] = [];
 
@@ -122,6 +122,8 @@ export function getColumns<TData extends object>({
     ),
     enableSorting: false,
     enableHiding: false,
+    enablePinning: true, // ← 이 줄 추가
+
     size: 40,
   };
   columns.push(selectColumn);
@@ -147,38 +149,16 @@ export function getColumns<TData extends object>({
     cell: ({ row }) => {
       const cellValue = row.getValue(col.key);
       
-      // 기본 읽기 전용 여부 (shi 속성 기반)
-      let isReadOnly = col.shi === true;
-      
-      // 동적 읽기 전용 여부 계산
-      if (!isReadOnly && col.key !== 'TAG_NO' && col.key !== 'TAG_DESC') {
-        const tagNo = row.getValue('TAG_NO') as string;
-        if (tagNo && editableFieldsMap.has(tagNo)) {
-          const editableFields = editableFieldsMap.get(tagNo) || [];
-          // 해당 TAG의 편집 가능 필드 목록에 없으면 읽기 전용
-          isReadOnly = !editableFields.includes(col.key);
-        } else {
-          // TAG_NO가 없거나 editableFieldsMap에 없으면 읽기 전용
-          isReadOnly = true;
-        }
-      }
+      // SHI 필드만 읽기 전용으로 처리
+      const isReadOnly = col.shi === true;
       
       const readOnlyClass = isReadOnly ? "read-only-cell" : "";
       const cellStyle = isReadOnly 
         ? { backgroundColor: '#f5f5f5', color: '#666', cursor: 'not-allowed' } 
         : {};
 
-      // 툴팁 메시지 설정
-      let tooltipMessage = "";
-      if (isReadOnly) {
-        if (col.shi === true) {
-          tooltipMessage = "SHI 전용 필드입니다";
-        } else if (col.key === 'TAG_NO' || col.key === 'TAG_DESC') {
-          tooltipMessage = "기본 필드는 수정할 수 없습니다";
-        } else {
-          tooltipMessage = "이 TAG 클래스에서는 편집할 수 없는 필드입니다";
-        }
-      }
+      // 툴팁 메시지 설정 (SHI 필드만)
+      const tooltipMessage = isReadOnly ? "SHI 전용 필드입니다" : "";
 
       // 데이터 타입별 처리
       switch (col.type) {
@@ -220,6 +200,7 @@ export function getColumns<TData extends object>({
   }));
 
   columns.push(...baseColumns);
+  
   // (4) 액션 칼럼 - update 버튼 예시
   const actionColumn: ColumnDef<TData> = {
     id: "update",
@@ -255,10 +236,19 @@ export function getColumns<TData extends object>({
           >
             Create Document
           </DropdownMenuItem>
+          <DropdownMenuSeparator />
+          <DropdownMenuItem
+            onSelect={() => {
+              setRowAction({ row, type: "delete" });
+            }}
+            className="text-red-600 focus:text-red-600"
+          >
+            Delete
+          </DropdownMenuItem>
         </DropdownMenuContent>
       </DropdownMenu>
     ),
-    minSize: 50,
+    size: 40,
     enablePinning: true,
   };
 
-- 
cgit v1.2.3

