diff --git a/web/app/components/workflow/nodes/if-else/node.tsx b/web/app/components/workflow/nodes/if-else/node.tsx index 6a59e8496e..39738e2903 100644 --- a/web/app/components/workflow/nodes/if-else/node.tsx +++ b/web/app/components/workflow/nodes/if-else/node.tsx @@ -1,8 +1,40 @@ import type { FC } from 'react' +import { useTranslation } from 'react-i18next' +import { mockData } from './mock' +import { ComparisonOperator } from './types' +import { isEmptyRelatedOperator } from './utils' +import { Variable02 } from '@/app/components/base/icons/src/vender/solid/development' +const i18nPrefix = 'workflow.nodes.ifElse' + +const notTranslateKey = [ + ComparisonOperator.equal, ComparisonOperator.notEqual, + ComparisonOperator.largerThan, ComparisonOperator.largerThanOrEqual, + ComparisonOperator.lessThan, ComparisonOperator.lessThanOrEqual, +] const Node: FC = () => { + const { t } = useTranslation() + const { conditions, logical_operator } = mockData + return ( -
if else
+
+
{t(`${i18nPrefix}.conditions`)}
+
+ {conditions.map((condition, i) => ( +
+
+ + {condition.variable_selector.slice(-1)[0]} + {notTranslateKey.includes(condition.comparison_operator) ? condition.comparison_operator : t(`${i18nPrefix}.comparisonOperator.${condition.comparison_operator}`)} + {!isEmptyRelatedOperator(condition.comparison_operator) && {condition.value}} +
+ {i !== conditions.length - 1 && ( +
{t(`${i18nPrefix}.${logical_operator}`)}
+ )} +
+ ))} +
+
) } diff --git a/web/app/components/workflow/nodes/if-else/utils.ts b/web/app/components/workflow/nodes/if-else/utils.ts new file mode 100644 index 0000000000..850c0168cd --- /dev/null +++ b/web/app/components/workflow/nodes/if-else/utils.ts @@ -0,0 +1,5 @@ +import { ComparisonOperator } from './types' + +export const isEmptyRelatedOperator = (operator: ComparisonOperator) => { + return [ComparisonOperator.empty, ComparisonOperator.notEmpty, ComparisonOperator.isNull, ComparisonOperator.isNotNull].includes(operator) +} diff --git a/web/i18n/lang/workflow.en.ts b/web/i18n/lang/workflow.en.ts index f8cb2b9701..4b8d779c99 100644 --- a/web/i18n/lang/workflow.en.ts +++ b/web/i18n/lang/workflow.en.ts @@ -43,6 +43,23 @@ const translation = { output: 'Transformed content', }, }, + ifElse: { + conditions: 'Conditions', + and: 'and', + or: 'or', + comparisonOperator: { + 'contains': 'contains', + 'not contains': 'not contains', + 'start with': 'start with', + 'end with': 'end with', + 'is': 'is', + 'is not': 'is not', + 'empty': 'empty', + 'not empty': 'not empty', + 'null': 'is null', + 'not null': 'is not null', + }, + }, }, } diff --git a/web/i18n/lang/workflow.zh.ts b/web/i18n/lang/workflow.zh.ts index 4fd1f1ef7a..9384c18bac 100644 --- a/web/i18n/lang/workflow.zh.ts +++ b/web/i18n/lang/workflow.zh.ts @@ -43,6 +43,23 @@ const translation = { output: '转换后内容', }, }, + ifElse: { + conditions: '条件', + and: '且', + or: '或', + comparisonOperator: { + 'contains': '包含', + 'not contains': '不包含', + 'start with': '开始是', + 'end with': '结束是', + 'is': '是', + 'is not': '不是', + 'empty': '为空', + 'not empty': '不为空', + 'null': '空', + 'not null': '不为空', + }, + }, }, }