diff --git a/frontend/components/dataflow/ConnectionSetupModal.tsx b/frontend/components/dataflow/ConnectionSetupModal.tsx index 60fefa9d..7baac19c 100644 --- a/frontend/components/dataflow/ConnectionSetupModal.tsx +++ b/frontend/components/dataflow/ConnectionSetupModal.tsx @@ -476,6 +476,8 @@ export const ConnectionSetupModal: React.FC = ({ availableTables={availableTables} fromTableColumns={fromTableColumns} toTableColumns={toTableColumns} + fromTableName={selectedFromTable} + toTableName={selectedToTable} tableColumnsCache={tableColumnsCache} /> ); diff --git a/frontend/components/dataflow/connection/ActionConditionRenderer.tsx b/frontend/components/dataflow/connection/ActionConditionRenderer.tsx index eae8066a..fb542ebc 100644 --- a/frontend/components/dataflow/connection/ActionConditionRenderer.tsx +++ b/frontend/components/dataflow/connection/ActionConditionRenderer.tsx @@ -3,7 +3,15 @@ import React from "react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; -import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; +import { + Select, + SelectContent, + SelectGroup, + SelectItem, + SelectLabel, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; import { Trash2 } from "lucide-react"; import { ConditionNode, ColumnInfo } from "@/lib/api/dataflow"; import { DataSaveSettings } from "@/types/connectionTypes"; @@ -16,6 +24,9 @@ interface ActionConditionRendererProps { settings: DataSaveSettings; onSettingsChange: (settings: DataSaveSettings) => void; fromTableColumns: ColumnInfo[]; + toTableColumns: ColumnInfo[]; + fromTableName?: string; + toTableName?: string; getActionCurrentGroupLevel: (conditions: ConditionNode[], conditionIndex: number) => number; } @@ -26,6 +37,9 @@ export const ActionConditionRenderer: React.FC = ( settings, onSettingsChange, fromTableColumns, + toTableColumns, + fromTableName, + toTableName, getActionCurrentGroupLevel, }) => { const removeConditionGroup = (groupId: string) => { @@ -53,7 +67,9 @@ export const ActionConditionRenderer: React.FC = ( }; const renderConditionValue = () => { - const selectedColumn = fromTableColumns.find((col) => col.columnName === condition.field); + // 선택된 테이블 타입에 따라 컬럼 찾기 + const targetColumns = condition.tableType === "from" ? fromTableColumns : toTableColumns; + const selectedColumn = targetColumns.find((col) => col.columnName === condition.field); const dataType = selectedColumn?.dataType?.toLowerCase() || "string"; const inputType = getInputTypeForDataType(dataType); @@ -167,16 +183,46 @@ export const ActionConditionRenderer: React.FC = ( marginLeft: `${getActionCurrentGroupLevel(settings.actions[actionIndex].conditions || [], condIndex) * 15}px`, }} > - { + updateCondition("tableType", value); + // 테이블이 변경되면 필드 초기화 + updateCondition("field", ""); + }} + > + + - {fromTableColumns.map((column) => ( - - {column.columnName} - - ))} + {fromTableColumns.length > 0 && {fromTableName || "From 테이블"}} + {toTableColumns.length > 0 && {toTableName || "To 테이블"}} + + + + {/* 2단계: 선택된 테이블의 컬럼 선택 */} +