From aa86729f9a2ab95346a2851e3837de1c367aae17 Mon Sep 17 00:00:00 2001 From: dujinkim Date: Fri, 20 Jun 2025 11:37:31 +0000 Subject: (대표님) 20250620 작업사항 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/data-table/use-table-presets.tsx | 22 +- components/form-data/form-data-table.tsx | 57 +++-- components/form-data/spreadJS-dialog.tsx | 375 ++++++++++++++++++++++++---- 3 files changed, 371 insertions(+), 83 deletions(-) (limited to 'components') diff --git a/components/data-table/use-table-presets.tsx b/components/data-table/use-table-presets.tsx index 5e641762..f9ecda2a 100644 --- a/components/data-table/use-table-presets.tsx +++ b/components/data-table/use-table-presets.tsx @@ -288,17 +288,19 @@ export function useTablePresets( }, [mutate]) // 클라이언트 상태 업데이트 (컬럼 가시성, 핀 등) - const updateClientState = useCallback(async (newClientState: Partial>) => { - if (!activePreset) return - - const updatedSettings = { - ...activePreset.settings, - ...newClientState - } - - await updatePreset(activePreset.id, updatedSettings) - }, [activePreset, updatePreset]) + const updateClientState = useCallback( + async (newClientState: Partial>) => { + if (!activePreset) return; + + + const prev = activePreset.settings; + const next = { ...prev, ...newClientState }; + + await updatePreset(activePreset.id, next); + }, + [activePreset, updatePreset, tableId] // ← tableId 도 의존성에 넣어 둡니다 + ); // URL 변경 감지 및 미저장 변경사항 체크 useEffect(() => { if (!isClient || !presets || !activePreset) return diff --git a/components/form-data/form-data-table.tsx b/components/form-data/form-data-table.tsx index 61e9897f..b59684e3 100644 --- a/components/form-data/form-data-table.tsx +++ b/components/form-data/form-data-table.tsx @@ -57,6 +57,7 @@ import { SEDPConfirmationDialog, SEDPStatusDialog } from "./sedp-components"; import { SEDPCompareDialog } from "./sedp-compare-dialog"; import { getSEDPToken } from "@/lib/sedp/sedp-token"; import { DeleteFormDataDialog } from "./delete-form-data-dialog"; +import { TemplateViewDialog } from "./spreadJS-dialog"; // 기존 fetchTagDataFromSEDP 함수 async function fetchTagDataFromSEDP(projectCode: string, formCode: string): Promise { @@ -328,12 +329,12 @@ export default function DynamicTable({ try { setIsLoadingTemplate(true); - + const templateResult = await fetchTemplateFromSEDP(projectCode, formCode); - + setTemplateData(templateResult); setTemplateDialogOpen(true); - + toast.success("Template data loaded successfully"); } catch (error) { console.error("Error fetching template:", error); @@ -720,21 +721,6 @@ export default function DynamicTable({ )} - {/* 새로 추가된 Template 보기 버튼 */} - - {/* 버튼 그룹 */}
{/* 태그 관리 드롭다운 */} @@ -827,7 +813,25 @@ export default function DynamicTable({ Export - + {/* 새로 추가된 Template 보기 버튼 */} + {/* COMPARE WITH SEDP 버튼 */} + )} + + {/* SpreadSheets 컴포넌트 영역 */} +
+ {selectedTemplate ? ( + + ) : ( +
+ No template available +
+ )} +
+ + + + + {hasChanges && ( - - - - ); - } \ No newline at end of file + )} + + + + + ); +} \ No newline at end of file -- cgit v1.2.3