테이블 노드 위치정보 저장 구현

This commit is contained in:
2025-09-10 17:48:55 +09:00
parent db509bb3d9
commit 72b0d2ee98
5 changed files with 116 additions and 26 deletions

View File

@@ -24,6 +24,7 @@ import {
DataFlowDiagram,
JsonRelationship,
CreateDiagramRequest,
NodePositions,
} from "@/lib/api/dataflow";
import SaveDiagramModal from "./SaveDiagramModal";
import { useAuth } from "@/hooks/useAuth";
@@ -313,10 +314,16 @@ export const DataFlowDesigner: React.FC<DataFlowDesignerProps> = ({
console.log("🔌 연결된 컬럼 정보:", connectedColumnsInfo);
// 테이블을 노드로 변환 (자동 레이아웃)
// 저장된 노드 위치 정보 가져오기
const savedNodePositions = jsonDiagram.node_positions || {};
console.log("📍 저장된 노드 위치:", savedNodePositions);
// 테이블을 노드로 변환 (저장된 위치 우선 사용, 없으면 자동 레이아웃)
const tableNodes = tableDefinitions.map((table, index) => {
const x = (index % 3) * 400 + 100; // 3열 배치
const y = Math.floor(index / 3) * 300 + 100;
// 저장된 위치가 있으면 사용, 없으면 자동 배치
const savedPosition = savedNodePositions[table.tableName];
const x = savedPosition ? savedPosition.x : (index % 3) * 400 + 100; // 3열 배치
const y = savedPosition ? savedPosition.y : Math.floor(index / 3) * 300 + 100;
return {
id: `table-${table.tableName}`,
@@ -782,6 +789,17 @@ export const DataFlowDesigner: React.FC<DataFlowDesignerProps> = ({
new Set([...tempRelationships.map((rel) => rel.fromTable), ...tempRelationships.map((rel) => rel.toTable)]),
).sort();
// 현재 노드 위치 추출
const nodePositions: NodePositions = {};
nodes.forEach((node) => {
if (node.data?.table?.tableName) {
nodePositions[node.data.table.tableName] = {
x: node.position.x,
y: node.position.y,
};
}
});
// 저장 요청 데이터 생성
const createRequest: CreateDiagramRequest = {
diagram_name: diagramName,
@@ -789,6 +807,7 @@ export const DataFlowDesigner: React.FC<DataFlowDesignerProps> = ({
relationships: tempRelationships,
tables: connectedTables,
},
node_positions: nodePositions,
};
let savedDiagram;