fix: 분할 패널 좌측 테이블 등록 시 displayColumns만 사용하도록 수정

문제:
- displayColumns가 비어있을 때 전체 컬럼을 보여주는 오류
- 화면에 설정된 컬럼만 표시되어야 함

해결:
- displayColumns가 비어있으면 테이블을 등록하지 않음
- displayColumns에 설정된 컬럼만 검색 컴포넌트에 등록
- 화면 관리에서 설정한 컬럼 구성을 정확히 반영

테스트:
- 거래처 관리 화면에서 좌측 테이블의 displayColumns(14개) 정상 표시
- 테이블 옵션/필터 설정/그룹 설정 버튼 정상 작동
- 우측 테이블은 검색 컴포넌트에서 제외
This commit is contained in:
kjs 2025-11-12 16:05:45 +09:00
parent 9cf9b87068
commit 2dcf2c4c8e
2 changed files with 32 additions and 21 deletions

View File

@ -289,29 +289,32 @@ export const SplitPanelLayoutComponent: React.FC<SplitPanelLayoutComponentProps>
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]);
// 우측 테이블은 검색 컴포넌트 등록 제외 (좌측 마스터 테이블만 검색 가능)

View File

@ -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]);