utils.ts 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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. ]
  30. case VarType.number:
  31. return [
  32. ComparisonOperator.equal,
  33. ComparisonOperator.notEqual,
  34. ComparisonOperator.largerThan,
  35. ComparisonOperator.lessThan,
  36. ComparisonOperator.largerThanOrEqual,
  37. ComparisonOperator.lessThanOrEqual,
  38. ComparisonOperator.empty,
  39. ComparisonOperator.notEmpty,
  40. ]
  41. case VarType.arrayString:
  42. case VarType.arrayNumber:
  43. return [
  44. ComparisonOperator.contains,
  45. ComparisonOperator.notContains,
  46. ComparisonOperator.empty,
  47. ComparisonOperator.notEmpty,
  48. ]
  49. case VarType.array:
  50. case VarType.arrayObject:
  51. return [
  52. ComparisonOperator.empty,
  53. ComparisonOperator.notEmpty,
  54. ]
  55. default:
  56. return [
  57. ComparisonOperator.is,
  58. ComparisonOperator.isNot,
  59. ComparisonOperator.empty,
  60. ComparisonOperator.notEmpty,
  61. ]
  62. }
  63. }
  64. export const comparisonOperatorNotRequireValue = (operator?: ComparisonOperator) => {
  65. if (!operator)
  66. return false
  67. return [ComparisonOperator.empty, ComparisonOperator.notEmpty, ComparisonOperator.isNull, ComparisonOperator.isNotNull].includes(operator)
  68. }
  69. export const branchNameCorrect = (branches: Branch[]) => {
  70. const branchLength = branches.length
  71. if (branchLength < 2)
  72. throw new Error('if-else node branch number must than 2')
  73. if (branchLength === 2) {
  74. return branches.map((branch) => {
  75. return {
  76. ...branch,
  77. name: branch.id === 'false' ? 'ELSE' : 'IF',
  78. }
  79. })
  80. }
  81. return branches.map((branch, index) => {
  82. return {
  83. ...branch,
  84. name: branch.id === 'false' ? 'ELSE' : `CASE ${index + 1}`,
  85. }
  86. })
  87. }