From 2dcf2c4c8e08d75b9e1cebda26786ae79fbc5378 Mon Sep 17 00:00:00 2001 From: kjs Date: Wed, 12 Nov 2025 16:05:45 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EB=B6=84=ED=95=A0=20=ED=8C=A8=EB=84=90?= =?UTF-8?q?=20=EC=A2=8C=EC=B8=A1=20=ED=85=8C=EC=9D=B4=EB=B8=94=20=EB=93=B1?= =?UTF-8?q?=EB=A1=9D=20=EC=8B=9C=20displayColumns=EB=A7=8C=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 문제: - displayColumns가 비어있을 때 전체 컬럼을 보여주는 오류 - 화면에 설정된 컬럼만 표시되어야 함 해결: - displayColumns가 비어있으면 테이블을 등록하지 않음 - displayColumns에 설정된 컬럼만 검색 컴포넌트에 등록 - 화면 관리에서 설정한 컬럼 구성을 정확히 반영 테스트: - 거래처 관리 화면에서 좌측 테이블의 displayColumns(14개) 정상 표시 - 테이블 옵션/필터 설정/그룹 설정 버튼 정상 작동 - 우측 테이블은 검색 컴포넌트에서 제외 --- .../SplitPanelLayoutComponent.tsx | 45 ++++++++++--------- .../table-search-widget/TableSearchWidget.tsx | 8 ++++ 2 files changed, 32 insertions(+), 21 deletions(-) diff --git a/frontend/lib/registry/components/split-panel-layout/SplitPanelLayoutComponent.tsx b/frontend/lib/registry/components/split-panel-layout/SplitPanelLayoutComponent.tsx index 809b9035..aaf3587d 100644 --- a/frontend/lib/registry/components/split-panel-layout/SplitPanelLayoutComponent.tsx +++ b/frontend/lib/registry/components/split-panel-layout/SplitPanelLayoutComponent.tsx @@ -289,29 +289,32 @@ export const SplitPanelLayoutComponent: React.FC if (!leftTableName || isDesignMode) return; const leftTableId = `split-panel-left-${component.id}`; - const leftColumns = componentConfig.leftPanel?.displayColumns || []; + // 화면에 표시되는 컬럼만 사용 (displayColumns) + const displayColumns = componentConfig.leftPanel?.displayColumns || []; + + // displayColumns가 없으면 등록하지 않음 (화면에 표시되는 컬럼만 설정 가능) + if (displayColumns.length === 0) return; - if (leftColumns.length > 0) { - registerTable({ - tableId: leftTableId, - label: `${component.title || "분할 패널"} (좌측)`, - tableName: leftTableName, - columns: leftColumns.map((col: string) => ({ - columnName: col, - columnLabel: leftColumnLabels[col] || col, - inputType: "text", - visible: true, - width: 150, - sortable: true, - filterable: true, - })), - onFilterChange: setLeftFilters, - onGroupChange: setLeftGrouping, - onColumnVisibilityChange: setLeftColumnVisibility, - }); + // 테이블명이 있으면 등록 + registerTable({ + tableId: leftTableId, + label: `${component.title || "분할 패널"} (좌측)`, + tableName: leftTableName, + columns: displayColumns.map((col: string) => ({ + columnName: col, + columnLabel: leftColumnLabels[col] || col, + inputType: "text", + visible: true, + width: 150, + sortable: true, + filterable: true, + })), + onFilterChange: setLeftFilters, + onGroupChange: setLeftGrouping, + onColumnVisibilityChange: setLeftColumnVisibility, + }); - return () => unregisterTable(leftTableId); - } + return () => unregisterTable(leftTableId); }, [component.id, componentConfig.leftPanel?.tableName, componentConfig.leftPanel?.displayColumns, leftColumnLabels, component.title, isDesignMode]); // 우측 테이블은 검색 컴포넌트 등록 제외 (좌측 마스터 테이블만 검색 가능) diff --git a/frontend/lib/registry/components/table-search-widget/TableSearchWidget.tsx b/frontend/lib/registry/components/table-search-widget/TableSearchWidget.tsx index 2b37e2d6..34b3044c 100644 --- a/frontend/lib/registry/components/table-search-widget/TableSearchWidget.tsx +++ b/frontend/lib/registry/components/table-search-widget/TableSearchWidget.tsx @@ -76,7 +76,15 @@ export function TableSearchWidget({ component, screenId, onHeightChange }: Table useEffect(() => { const tables = Array.from(registeredTables.values()); + console.log("🔍 [TableSearchWidget] 테이블 감지:", { + tablesCount: tables.length, + tableIds: tables.map(t => t.tableId), + selectedTableId, + autoSelectFirstTable, + }); + if (autoSelectFirstTable && tables.length > 0 && !selectedTableId) { + console.log("✅ [TableSearchWidget] 첫 번째 테이블 자동 선택:", tables[0].tableId); setSelectedTableId(tables[0].tableId); } }, [registeredTables, selectedTableId, autoSelectFirstTable, setSelectedTableId]);