테이블 컬럼 중복 삽입 안되게 수정

This commit is contained in:
kjs
2025-10-23 10:07:55 +09:00
parent 0c3ce4d3eb
commit e934cc945b
3 changed files with 54 additions and 6 deletions

View File

@@ -26,6 +26,7 @@ interface TablesPanelProps {
onSearchChange: (term: string) => void;
onDragStart: (e: React.DragEvent, table: TableInfo, column?: any) => void;
selectedTableName?: string;
placedColumns?: Set<string>; // 이미 배치된 컬럼명 집합 (tableName.columnName 형식)
}
// 위젯 타입별 아이콘
@@ -67,6 +68,7 @@ export const TablesPanel: React.FC<TablesPanelProps> = ({
onSearchChange,
onDragStart,
selectedTableName,
placedColumns = new Set(),
}) => {
const [expandedTables, setExpandedTables] = useState<Set<string>>(new Set());
@@ -80,11 +82,26 @@ export const TablesPanel: React.FC<TablesPanelProps> = ({
setExpandedTables(newExpanded);
};
const filteredTables = tables.filter(
(table) =>
table.tableName.toLowerCase().includes(searchTerm.toLowerCase()) ||
table.columns.some((col) => col.columnName.toLowerCase().includes(searchTerm.toLowerCase())),
);
// 이미 배치된 컬럼을 제외한 테이블 정보 생성
const tablesWithAvailableColumns = tables.map((table) => ({
...table,
columns: table.columns.filter((col) => {
const columnKey = `${table.tableName}.${col.columnName}`;
const isPlaced = placedColumns.has(columnKey);
if (isPlaced) {
console.log("🚫 필터링된 컬럼:", columnKey);
}
return !isPlaced;
}),
}));
const filteredTables = tablesWithAvailableColumns
.filter((table) => table.columns.length > 0) // 사용 가능한 컬럼이 있는 테이블만 표시
.filter(
(table) =>
table.tableName.toLowerCase().includes(searchTerm.toLowerCase()) ||
table.columns.some((col) => col.columnName.toLowerCase().includes(searchTerm.toLowerCase())),
);
return (
<div className="flex h-full flex-col">