chore: transfer value to string array

This commit is contained in:
Joel 2024-09-25 12:59:11 +08:00
parent 9fe2f321ae
commit 0281eb796d
4 changed files with 22 additions and 17 deletions

View File

@ -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('.')

View File

@ -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 = ({
<div className='px-2 py-1 max-h-[100px] border-t border-t-divider-subtle overflow-y-auto'>
<ConditionInput
disabled={disabled}
value={condition.value}
value={condition.value as string}
onChange={handleUpdateConditionValue}
nodesOutputVars={nodesOutputVars}
availableNodes={availableNodes}
@ -256,7 +258,7 @@ const ConditionItem = ({
<ConditionNumberInput
numberVarType={condition.numberVarType}
onNumberVarTypeChange={handleUpdateConditionNumberVarType}
value={condition.value}
value={condition.value as string}
onValueChange={handleUpdateConditionValue}
variables={numberVariables}
isShort={isValueFieldShort}
@ -271,7 +273,7 @@ const ConditionItem = ({
<Select
wrapperClassName='h-8'
className='px-2 text-xs rounded-t-none'
defaultValue={condition.value}
defaultValue={isTransferMethod ? (condition.value as string[])?.[0] : (condition.value as string)}
items={selectOptions}
onSelect={item => handleUpdateConditionValue(item.value as string)}
hideChecked

View File

@ -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('.')

View File

@ -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
}