utils.ts 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import { ComparisonOperator } from './types'
  2. import { VarType } from '@/app/components/workflow/types'
  3. import type { Branch } from '@/app/components/workflow/types'
  4. export const isEmptyRelatedOperator = (operator: ComparisonOperator) => {
  5. return [ComparisonOperator.empty, ComparisonOperator.notEmpty, ComparisonOperator.isNull, ComparisonOperator.isNotNull].includes(operator)
  6. }
  7. const notTranslateKey = [
  8. ComparisonOperator.equal, ComparisonOperator.notEqual,
  9. ComparisonOperator.largerThan, ComparisonOperator.largerThanOrEqual,
  10. ComparisonOperator.lessThan, ComparisonOperator.lessThanOrEqual,
  11. ]
  12. export const isComparisonOperatorNeedTranslate = (operator?: ComparisonOperator) => {
  13. if (!operator)
  14. return false
  15. return !notTranslateKey.includes(operator)
  16. }
  17. export const getOperators = (type?: VarType) => {
  18. switch (type) {
  19. case VarType.string:
  20. return [
  21. ComparisonOperator.contains,
  22. ComparisonOperator.notContains,
  23. ComparisonOperator.startWith,
  24. ComparisonOperator.endWith,
  25. ComparisonOperator.is,
  26. ComparisonOperator.isNot,
  27. ComparisonOperator.empty,
  28. ComparisonOperator.notEmpty,
  29. ComparisonOperator.regexMatch,
  30. ]
  31. case VarType.number:
  32. return [
  33. ComparisonOperator.equal,
  34. ComparisonOperator.notEqual,
  35. ComparisonOperator.largerThan,
  36. ComparisonOperator.lessThan,
  37. ComparisonOperator.largerThanOrEqual,
  38. ComparisonOperator.lessThanOrEqual,
  39. ComparisonOperator.empty,
  40. ComparisonOperator.notEmpty,
  41. ]
  42. case VarType.arrayString:
  43. case VarType.arrayNumber:
  44. return [
  45. ComparisonOperator.contains,
  46. ComparisonOperator.notContains,
  47. ComparisonOperator.empty,
  48. ComparisonOperator.notEmpty,
  49. ]
  50. case VarType.array:
  51. case VarType.arrayObject:
  52. return [
  53. ComparisonOperator.empty,
  54. ComparisonOperator.notEmpty,
  55. ]
  56. default:
  57. return [
  58. ComparisonOperator.is,
  59. ComparisonOperator.isNot,
  60. ComparisonOperator.empty,
  61. ComparisonOperator.notEmpty,
  62. ]
  63. }
  64. }
  65. export const comparisonOperatorNotRequireValue = (operator?: ComparisonOperator) => {
  66. if (!operator)
  67. return false
  68. return [ComparisonOperator.empty, ComparisonOperator.notEmpty, ComparisonOperator.isNull, ComparisonOperator.isNotNull].includes(operator)
  69. }
  70. export const branchNameCorrect = (branches: Branch[]) => {
  71. const branchLength = branches.length
  72. if (branchLength < 2)
  73. throw new Error('if-else node branch number must than 2')
  74. if (branchLength === 2) {
  75. return branches.map((branch) => {
  76. return {
  77. ...branch,
  78. name: branch.id === 'false' ? 'ELSE' : 'IF',
  79. }
  80. })
  81. }
  82. return branches.map((branch, index) => {
  83. return {
  84. ...branch,
  85. name: branch.id === 'false' ? 'ELSE' : `CASE ${index + 1}`,
  86. }
  87. })
  88. }