From fe6c0af5a8304b470b2e3975ec46ef2a2125c038 Mon Sep 17 00:00:00 2001 From: hyeonsu Date: Wed, 10 Sep 2025 18:35:55 +0900 Subject: [PATCH] =?UTF-8?q?=EC=84=A0=ED=83=9D=EB=90=9C=20=EC=BB=AC?= =?UTF-8?q?=EB=9F=BC=20=EC=84=B9=EC=85=98=20=EC=9C=84=EC=B9=98=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/dataflow/DataFlowDesigner.tsx | 160 ++++++++++-------- 1 file changed, 93 insertions(+), 67 deletions(-) diff --git a/frontend/components/dataflow/DataFlowDesigner.tsx b/frontend/components/dataflow/DataFlowDesigner.tsx index efdc00b8..7763bb7a 100644 --- a/frontend/components/dataflow/DataFlowDesigner.tsx +++ b/frontend/components/dataflow/DataFlowDesigner.tsx @@ -1089,73 +1089,6 @@ export const DataFlowDesigner: React.FC = ({ {/* 선택된 컬럼 정보 */} - {Object.keys(selectedColumns).length > 0 && ( -
-
-
선택된 컬럼
-
- {[...new Set(selectionOrder)] - .filter((tableName) => selectedColumns[tableName] && selectedColumns[tableName].length > 0) - .map((tableName, index, filteredOrder) => { - const columns = selectedColumns[tableName]; - const node = nodes.find((n) => n.data.table.tableName === tableName); - const displayName = node?.data.table.displayName || tableName; - - return ( -
-
-
-
- {displayName} -
-
-
- {columns.map((column, columnIndex) => ( -
- {column} -
- ))} -
-
- {/* 첫 번째 테이블 다음에 화살표 표시 */} - {index === 0 && filteredOrder.length > 1 && ( -
-
-
- )} -
- ); - })} -
-
- - -
-
-
- )} @@ -1190,6 +1123,99 @@ export const DataFlowDesigner: React.FC = ({ + {/* 선택된 컬럼 팝업 - 캔버스 좌측 상단 고정 (엣지 정보 팝업이 없을 때만 표시) */} + {Object.keys(selectedColumns).length > 0 && !showEdgeActions && ( +
+ {/* 헤더 */} +
+
+
+ 📋 +
+
+
선택된 컬럼
+
{Object.keys(selectedColumns).length}개 테이블
+
+
+ +
+ + {/* 컨텐츠 */} +
+
+ {[...new Set(selectionOrder)] + .filter((tableName) => selectedColumns[tableName] && selectedColumns[tableName].length > 0) + .map((tableName, index, filteredOrder) => { + const columns = selectedColumns[tableName]; + const node = nodes.find((n) => n.data.table.tableName === tableName); + const displayName = node?.data.table.displayName || tableName; + + return ( +
+ {/* 테이블 정보 */} +
+
{displayName}
+
+ {columns.map((column, columnIndex) => ( + + {column} + + ))} +
+
+ + {/* 화살표 */} + {index === 0 && filteredOrder.length > 1 && ( +
+
+
+ )} +
+ ); + })} +
+
+ + {/* 액션 버튼 */} +
+ + +
+
+ )} + {/* 안내 메시지 */} {nodes.length === 0 && (