mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-08-19 06:55:55 +08:00
feat: condition operation
This commit is contained in:
parent
20922fde1c
commit
ae098ad121
@ -26,6 +26,7 @@ type ConditionItemProps = {
|
||||
disabled?: boolean
|
||||
caseId: string
|
||||
condition: Condition
|
||||
file?: { key: string }
|
||||
onRemoveCondition: HandleRemoveCondition
|
||||
onUpdateCondition: HandleUpdateCondition
|
||||
nodesOutputVars: NodeOutPutVar[]
|
||||
@ -36,6 +37,7 @@ const ConditionItem = ({
|
||||
disabled,
|
||||
caseId,
|
||||
condition,
|
||||
file,
|
||||
onRemoveCondition,
|
||||
onUpdateCondition,
|
||||
nodesOutputVars,
|
||||
@ -88,6 +90,7 @@ const ConditionItem = ({
|
||||
varType={condition.varType}
|
||||
value={condition.comparison_operator}
|
||||
onSelect={handleUpdateConditionOperator}
|
||||
file={file}
|
||||
/>
|
||||
</div>
|
||||
{
|
||||
|
@ -19,12 +19,14 @@ const i18nPrefix = 'workflow.nodes.ifElse'
|
||||
type ConditionOperatorProps = {
|
||||
disabled?: boolean
|
||||
varType: VarType
|
||||
file?: { key: string }
|
||||
value?: string
|
||||
onSelect: (value: ComparisonOperator) => void
|
||||
}
|
||||
const ConditionOperator = ({
|
||||
disabled,
|
||||
varType,
|
||||
file,
|
||||
value,
|
||||
onSelect,
|
||||
}: ConditionOperatorProps) => {
|
||||
@ -32,13 +34,13 @@ const ConditionOperator = ({
|
||||
const [open, setOpen] = useState(false)
|
||||
|
||||
const options = useMemo(() => {
|
||||
return getOperators(varType).map((o) => {
|
||||
return getOperators(varType, file).map((o) => {
|
||||
return {
|
||||
label: isComparisonOperatorNeedTranslate(o) ? t(`${i18nPrefix}.comparisonOperator.${o}`) : o,
|
||||
value: o,
|
||||
}
|
||||
})
|
||||
}, [t, varType])
|
||||
}, [t, varType, file])
|
||||
const selectedOption = options.find(o => o.value === value)
|
||||
|
||||
return (
|
||||
|
@ -21,6 +21,7 @@ type ConditionListProps = {
|
||||
nodesOutputVars: NodeOutPutVar[]
|
||||
availableNodes: Node[]
|
||||
numberVariables: NodeOutPutVar[]
|
||||
varsIsVarFileAttribute: Record<string, boolean>
|
||||
}
|
||||
const ConditionList = ({
|
||||
disabled,
|
||||
@ -31,6 +32,7 @@ const ConditionList = ({
|
||||
nodesOutputVars,
|
||||
availableNodes,
|
||||
numberVariables,
|
||||
varsIsVarFileAttribute,
|
||||
}: ConditionListProps) => {
|
||||
const { conditions, logical_operator } = caseItem
|
||||
|
||||
@ -65,6 +67,7 @@ const ConditionList = ({
|
||||
nodesOutputVars={nodesOutputVars}
|
||||
availableNodes={availableNodes}
|
||||
numberVariables={numberVariables}
|
||||
file={varsIsVarFileAttribute[condition.id] ? { key: condition.variable_selector.slice(-1)[0] } : undefined}
|
||||
/>
|
||||
))
|
||||
}
|
||||
|
@ -41,6 +41,7 @@ const Panel: FC<NodePanelProps<IfElseNodeType>> = ({
|
||||
handleUpdateConditionLogicalOperator,
|
||||
nodesOutputVars,
|
||||
availableNodes,
|
||||
varsIsVarFileAttribute,
|
||||
} = useConfig(id, data)
|
||||
const [willDeleteCaseId, setWillDeleteCaseId] = useState('')
|
||||
const cases = inputs.cases || []
|
||||
@ -93,6 +94,7 @@ const Panel: FC<NodePanelProps<IfElseNodeType>> = ({
|
||||
nodesOutputVars={nodesOutputVars}
|
||||
availableNodes={availableNodes}
|
||||
numberVariables={getAvailableVars(id, '', filterNumberVar)}
|
||||
varsIsVarFileAttribute={varsIsVarFileAttribute}
|
||||
/>
|
||||
</div>
|
||||
)
|
||||
|
@ -190,6 +190,7 @@ const useConfig = (id: string, payload: IfElseNodeType) => {
|
||||
availableNodes: availableNodesWithParent,
|
||||
nodesOutputNumberVars: availableNumberVars,
|
||||
availableNumberNodes: availableNumberNodesWithParent,
|
||||
varsIsVarFileAttribute,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -40,6 +40,47 @@ export const getOperators = (type?: VarType, file?: { key: string }) => {
|
||||
ComparisonOperator.in,
|
||||
ComparisonOperator.notIn,
|
||||
]
|
||||
case 'size':
|
||||
return [
|
||||
ComparisonOperator.largerThan,
|
||||
ComparisonOperator.largerThanOrEqual,
|
||||
ComparisonOperator.lessThan,
|
||||
ComparisonOperator.lessThanOrEqual,
|
||||
]
|
||||
case 'extension':
|
||||
return [
|
||||
ComparisonOperator.is,
|
||||
ComparisonOperator.isNot,
|
||||
ComparisonOperator.contains,
|
||||
ComparisonOperator.notContains,
|
||||
]
|
||||
case 'mimetype':
|
||||
return [
|
||||
ComparisonOperator.contains,
|
||||
ComparisonOperator.notContains,
|
||||
ComparisonOperator.startWith,
|
||||
ComparisonOperator.endWith,
|
||||
ComparisonOperator.is,
|
||||
ComparisonOperator.isNot,
|
||||
ComparisonOperator.empty,
|
||||
ComparisonOperator.notEmpty,
|
||||
]
|
||||
case 'transfer_method':
|
||||
return [
|
||||
ComparisonOperator.in,
|
||||
ComparisonOperator.notIn,
|
||||
]
|
||||
case 'url':
|
||||
return [
|
||||
ComparisonOperator.contains,
|
||||
ComparisonOperator.notContains,
|
||||
ComparisonOperator.startWith,
|
||||
ComparisonOperator.endWith,
|
||||
ComparisonOperator.is,
|
||||
ComparisonOperator.isNot,
|
||||
ComparisonOperator.empty,
|
||||
ComparisonOperator.notEmpty,
|
||||
]
|
||||
}
|
||||
}
|
||||
switch (type) {
|
||||
|
@ -387,6 +387,8 @@ const translation = {
|
||||
'not empty': 'is not empty',
|
||||
'null': 'is null',
|
||||
'not null': 'is not null',
|
||||
'in': 'in',
|
||||
'not in': 'not in',
|
||||
},
|
||||
enterValue: 'Enter value',
|
||||
addCondition: 'Add Condition',
|
||||
|
@ -387,6 +387,8 @@ const translation = {
|
||||
'not empty': '不为空',
|
||||
'null': '空',
|
||||
'not null': '不为空',
|
||||
'in': '在',
|
||||
'not in': '不在',
|
||||
},
|
||||
enterValue: '输入值',
|
||||
addCondition: '添加条件',
|
||||
|
Loading…
x
Reference in New Issue
Block a user