테이블 컬럼 중복 삽입 안되게 수정
This commit is contained in:
@@ -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">
|
||||
|
||||
Reference in New Issue
Block a user