|
import { ComparisonOperator } from './types' |
|
import { VarType } from '@/app/components/workflow/types' |
|
import type { Branch } from '@/app/components/workflow/types' |
|
|
|
export const isEmptyRelatedOperator = (operator: ComparisonOperator) => { |
|
return [ComparisonOperator.empty, ComparisonOperator.notEmpty, ComparisonOperator.isNull, ComparisonOperator.isNotNull, ComparisonOperator.exists, ComparisonOperator.notExists].includes(operator) |
|
} |
|
|
|
const notTranslateKey = [ |
|
ComparisonOperator.equal, ComparisonOperator.notEqual, |
|
ComparisonOperator.largerThan, ComparisonOperator.largerThanOrEqual, |
|
ComparisonOperator.lessThan, ComparisonOperator.lessThanOrEqual, |
|
] |
|
|
|
export const isComparisonOperatorNeedTranslate = (operator?: ComparisonOperator) => { |
|
if (!operator) |
|
return false |
|
return !notTranslateKey.includes(operator) |
|
} |
|
|
|
export const getOperators = (type?: VarType, file?: { key: string }) => { |
|
const isFile = !!file |
|
if (isFile) { |
|
const { key } = file |
|
|
|
switch (key) { |
|
case 'name': |
|
return [ |
|
ComparisonOperator.contains, |
|
ComparisonOperator.notContains, |
|
ComparisonOperator.startWith, |
|
ComparisonOperator.endWith, |
|
ComparisonOperator.is, |
|
ComparisonOperator.isNot, |
|
ComparisonOperator.empty, |
|
ComparisonOperator.notEmpty, |
|
] |
|
case 'type': |
|
return [ |
|
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 'mime_type': |
|
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, |
|
] |
|
} |
|
return [] |
|
} |
|
switch (type) { |
|
case VarType.string: |
|
return [ |
|
ComparisonOperator.contains, |
|
ComparisonOperator.notContains, |
|
ComparisonOperator.startWith, |
|
ComparisonOperator.endWith, |
|
ComparisonOperator.is, |
|
ComparisonOperator.isNot, |
|
ComparisonOperator.empty, |
|
ComparisonOperator.notEmpty, |
|
] |
|
case VarType.number: |
|
return [ |
|
ComparisonOperator.equal, |
|
ComparisonOperator.notEqual, |
|
ComparisonOperator.largerThan, |
|
ComparisonOperator.lessThan, |
|
ComparisonOperator.largerThanOrEqual, |
|
ComparisonOperator.lessThanOrEqual, |
|
ComparisonOperator.empty, |
|
ComparisonOperator.notEmpty, |
|
] |
|
case VarType.file: |
|
return [ |
|
ComparisonOperator.exists, |
|
ComparisonOperator.notExists, |
|
] |
|
case VarType.arrayString: |
|
case VarType.arrayNumber: |
|
return [ |
|
ComparisonOperator.contains, |
|
ComparisonOperator.notContains, |
|
ComparisonOperator.empty, |
|
ComparisonOperator.notEmpty, |
|
] |
|
case VarType.array: |
|
case VarType.arrayObject: |
|
return [ |
|
ComparisonOperator.empty, |
|
ComparisonOperator.notEmpty, |
|
] |
|
case VarType.arrayFile: |
|
return [ |
|
ComparisonOperator.contains, |
|
ComparisonOperator.notContains, |
|
ComparisonOperator.allOf, |
|
ComparisonOperator.empty, |
|
ComparisonOperator.notEmpty, |
|
] |
|
default: |
|
return [ |
|
ComparisonOperator.is, |
|
ComparisonOperator.isNot, |
|
ComparisonOperator.empty, |
|
ComparisonOperator.notEmpty, |
|
] |
|
} |
|
} |
|
|
|
export const comparisonOperatorNotRequireValue = (operator?: ComparisonOperator) => { |
|
if (!operator) |
|
return false |
|
|
|
return [ComparisonOperator.empty, ComparisonOperator.notEmpty, ComparisonOperator.isNull, ComparisonOperator.isNotNull, ComparisonOperator.exists, ComparisonOperator.notExists].includes(operator) |
|
} |
|
|
|
export const branchNameCorrect = (branches: Branch[]) => { |
|
const branchLength = branches.length |
|
if (branchLength < 2) |
|
throw new Error('if-else node branch number must than 2') |
|
|
|
if (branchLength === 2) { |
|
return branches.map((branch) => { |
|
return { |
|
...branch, |
|
name: branch.id === 'false' ? 'ELSE' : 'IF', |
|
} |
|
}) |
|
} |
|
|
|
return branches.map((branch, index) => { |
|
return { |
|
...branch, |
|
name: branch.id === 'false' ? 'ELSE' : `CASE ${index + 1}`, |
|
} |
|
}) |
|
} |
|
|