"use client"; import React from "react"; import { Button } from "@/components/ui/button"; import { Plus, Trash2 } from "lucide-react"; import { ColumnInfo } from "@/lib/api/dataflow"; import { DataSaveSettings } from "@/types/connectionTypes"; import { generateConditionId } from "@/utils/connectionUtils"; import { useActionConditionHelpers } from "@/hooks/useConditionManager"; import { ActionConditionRenderer } from "./ActionConditionRenderer"; interface ActionConditionsSectionProps { action: DataSaveSettings["actions"][0]; actionIndex: number; settings: DataSaveSettings; onSettingsChange: (settings: DataSaveSettings) => void; fromTableColumns: ColumnInfo[]; } export const ActionConditionsSection: React.FC = ({ action, actionIndex, settings, onSettingsChange, fromTableColumns, }) => { const { addActionGroupStart, addActionGroupEnd, getActionCurrentGroupLevel } = useActionConditionHelpers(); const addActionCondition = () => { const newActions = [...settings.actions]; if (!newActions[actionIndex].conditions) { newActions[actionIndex].conditions = []; } const currentConditions = newActions[actionIndex].conditions || []; const newCondition = { id: generateConditionId(), type: "condition" as const, field: "", operator: "=" as const, value: "", dataType: "string", // 첫 번째 조건이 아니고, 바로 앞이 group-start가 아니면 logicalOperator 추가 ...(currentConditions.length > 0 && currentConditions[currentConditions.length - 1]?.type !== "group-start" && { logicalOperator: "AND" as const, }), }; newActions[actionIndex].conditions = [...currentConditions, newCondition]; onSettingsChange({ ...settings, actions: newActions }); }; const clearAllConditions = () => { const newActions = [...settings.actions]; newActions[actionIndex].conditions = []; onSettingsChange({ ...settings, actions: newActions }); }; return (
🔍 이 액션의 실행 조건 (선택사항) {action.conditions && action.conditions.length > 0 && ( {action.conditions.length}개 )}
{action.conditions && action.conditions.length > 0 && ( )}
{action.conditions && action.conditions.length > 0 && (
{action.conditions.map((condition, condIndex) => (
))}
)}
); };