From 0281eb796da886c8021799b07c275a2237e0c1b2 Mon Sep 17 00:00:00 2001 From: Joel Date: Wed, 25 Sep 2024 12:59:11 +0800 Subject: [PATCH] chore: transfer value to string array --- .../components/condition-files-list-value.tsx | 2 +- .../condition-list/condition-item.tsx | 28 ++++++++++--------- .../if-else/components/condition-value.tsx | 7 +++-- .../workflow/nodes/if-else/types.ts | 2 +- 4 files changed, 22 insertions(+), 17 deletions(-) diff --git a/web/app/components/workflow/nodes/if-else/components/condition-files-list-value.tsx b/web/app/components/workflow/nodes/if-else/components/condition-files-list-value.tsx index 35e75dfea1..f21a3fac10 100644 --- a/web/app/components/workflow/nodes/if-else/components/condition-files-list-value.tsx +++ b/web/app/components/workflow/nodes/if-else/components/condition-files-list-value.tsx @@ -59,7 +59,7 @@ const ConditionValue = ({ const selectName = useCallback((c: Condition) => { const isSelect = c.comparison_operator === ComparisonOperator.in || c.comparison_operator === ComparisonOperator.notIn if (isSelect) { - const name = [...FILE_TYPE_OPTIONS, ...TRANSFER_METHOD].filter(item => item.value === c.value)[0] + const name = [...FILE_TYPE_OPTIONS, ...TRANSFER_METHOD].filter(item => item.value === (Array.isArray(c.value) ? c.value[0] : c.value))[0] return name ? t(`workflow.nodes.ifElse.optionName.${name.i18nKey}`).replace(/{{#([^#]*)#}}/g, (a, b) => { const arr: string[] = b.split('.') 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 e73654f974..c56ecf4a1a 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 @@ -107,16 +107,6 @@ const ConditionItem = ({ doUpdateCondition(newCondition) }, [condition, doUpdateCondition]) - const handleUpdateConditionValue = useCallback((value: string) => { - if (value === condition.value) - return - const newCondition = { - ...condition, - value, - } - doUpdateCondition(newCondition) - }, [condition, doUpdateCondition]) - const handleUpdateConditionNumberVarType = useCallback((numberVarType: NumberVarType) => { const newCondition = { ...condition, @@ -138,6 +128,18 @@ const ConditionItem = ({ return undefined }, [condition.key, file, isSubVariableKey]) + const isTransferMethod = fileAttr?.key === 'transfer_method' + + const handleUpdateConditionValue = useCallback((value: string) => { + if (value === condition.value || (isTransferMethod && value === condition.value?.[0])) + return + const newCondition = { + ...condition, + value: isTransferMethod ? [value] : value, + } + doUpdateCondition(newCondition) + }, [condition, doUpdateCondition, fileAttr]) + const isSelect = condition.comparison_operator && [ComparisonOperator.in, ComparisonOperator.notIn].includes(condition.comparison_operator) const selectOptions = useMemo(() => { if (isSelect) { @@ -242,7 +244,7 @@ const ConditionItem = ({
handleUpdateConditionValue(item.value as string)} hideChecked diff --git a/web/app/components/workflow/nodes/if-else/components/condition-value.tsx b/web/app/components/workflow/nodes/if-else/components/condition-value.tsx index f96cf01024..182e38f71e 100644 --- a/web/app/components/workflow/nodes/if-else/components/condition-value.tsx +++ b/web/app/components/workflow/nodes/if-else/components/condition-value.tsx @@ -18,7 +18,7 @@ type ConditionValueProps = { variableSelector: string[] labelName?: string operator: ComparisonOperator - value: string + value: string | string[] } const ConditionValue = ({ variableSelector, @@ -36,6 +36,9 @@ const ConditionValue = ({ if (notHasValue) return '' + if (Array.isArray(value)) // transfer method + return value[0] + return value.replace(/{{#([^#]*)#}}/g, (a, b) => { const arr: string[] = b.split('.') if (isSystemVar(arr)) @@ -48,7 +51,7 @@ const ConditionValue = ({ const isSelect = operator === ComparisonOperator.in || operator === ComparisonOperator.notIn const selectName = useMemo(() => { if (isSelect) { - const name = [...FILE_TYPE_OPTIONS, ...TRANSFER_METHOD].filter(item => item.value === value)[0] + const name = [...FILE_TYPE_OPTIONS, ...TRANSFER_METHOD].filter(item => item.value === (Array.isArray(value) ? value[0] : value))[0] return name ? t(`workflow.nodes.ifElse.optionName.${name.i18nKey}`).replace(/{{#([^#]*)#}}/g, (a, b) => { const arr: string[] = b.split('.') diff --git a/web/app/components/workflow/nodes/if-else/types.ts b/web/app/components/workflow/nodes/if-else/types.ts index 84a3924b8b..56952de25a 100644 --- a/web/app/components/workflow/nodes/if-else/types.ts +++ b/web/app/components/workflow/nodes/if-else/types.ts @@ -41,7 +41,7 @@ export type Condition = { variable_selector?: ValueSelector key?: string // sub variable key comparison_operator?: ComparisonOperator - value: string + value: string | string[] numberVarType?: NumberVarType sub_variable_condition?: CaseItem }