From 4554ac3ef8216ada41102b2ac892a31680e92efb Mon Sep 17 00:00:00 2001 From: Joel Date: Fri, 16 Aug 2024 17:12:44 +0800 Subject: [PATCH] feat: can add sub variable --- .../condition-list/condition-item.tsx | 55 +++-- .../components/condition-list/index.tsx | 9 +- .../if-else/components/condition-wrap.tsx | 221 +++++++++++------- .../workflow/nodes/if-else/default.ts | 2 + .../workflow/nodes/if-else/panel.tsx | 2 + .../workflow/nodes/if-else/types.ts | 15 +- .../workflow/nodes/if-else/use-config.ts | 34 ++- web/i18n/en-US/workflow.ts | 1 + web/i18n/zh-Hans/workflow.ts | 1 + 9 files changed, 227 insertions(+), 113 deletions(-) diff --git a/web/app/components/workflow/nodes/if-else/components/condition-list/condition-item.tsx b/web/app/components/workflow/nodes/if-else/components/condition-list/condition-item.tsx index 3ce84dafc0..13f3f4bea2 100644 --- a/web/app/components/workflow/nodes/if-else/components/condition-list/condition-item.tsx +++ b/web/app/components/workflow/nodes/if-else/components/condition-list/condition-item.tsx @@ -5,19 +5,20 @@ import { } from 'react' import { useTranslation } from 'react-i18next' import { RiDeleteBinLine } from '@remixicon/react' +import produce from 'immer' import type { VarType as NumberVarType } from '../../../tool/types' import type { Condition, + HandleAddSubVariableCondition, HandleRemoveCondition, HandleUpdateCondition, } from '../../types' import { ComparisonOperator, - LogicalOperator, } from '../../types' import { comparisonOperatorNotRequireValue } from '../../utils' import ConditionNumberInput from '../condition-number-input' -import { FILE_TYPE_OPTIONS, TRANSFER_METHOD } from '../../default' +import { FILE_TYPE_OPTIONS, SUB_VARIABLES, TRANSFER_METHOD } from '../../default' import ConditionWrap from '../condition-wrap' import ConditionOperator from './condition-operator' import ConditionInput from './condition-input' @@ -29,7 +30,6 @@ import type { import { VarType } from '@/app/components/workflow/types' import cn from '@/utils/classnames' import { SimpleSelect as Select } from '@/app/components/base/select' - const optionNameI18NPrefix = 'workflow.nodes.ifElse.optionName' type ConditionItemProps = { @@ -37,22 +37,26 @@ type ConditionItemProps = { caseId: string condition: Condition file?: { key: string } + isSubVariableKey?: boolean onRemoveCondition: HandleRemoveCondition onUpdateCondition: HandleUpdateCondition nodesOutputVars: NodeOutPutVar[] availableNodes: Node[] numberVariables: NodeOutPutVar[] + onAddSubVariableCondition?: HandleAddSubVariableCondition } const ConditionItem = ({ disabled, caseId, condition, file, + isSubVariableKey, onRemoveCondition, onUpdateCondition, nodesOutputVars, availableNodes, numberVariables, + onAddSubVariableCondition, }: ConditionItemProps) => { const { t } = useTranslation() @@ -104,8 +108,21 @@ const ConditionItem = ({ }, [condition.comparison_operator, file?.key, isSelect, t]) const isSubVariable = condition.varType === VarType.arrayFile && [ComparisonOperator.contains, ComparisonOperator.notContains].includes(condition.comparison_operator!) - const isNotInput = isSelect || isSubVariable + + const isSubVarSelect = isSubVariableKey + const subVarOptions = SUB_VARIABLES.map(item => ({ + name: item, + value: item, + })) + + const handleSubVarKeyChange = useCallback((key: string) => { + const newCondition = produce(condition, (draft) => { + draft.key = key + }) + onUpdateCondition(caseId, condition.id, newCondition) + }, [caseId, condition, onUpdateCondition]) + return (
- + {isSubVarSelect + ? ( +