default.ts 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import { BlockEnum, VarType } from '../../types'
  2. import type { NodeDefault } from '../../types'
  3. import { comparisonOperatorNotRequireValue } from '../if-else/utils'
  4. import { type ListFilterNodeType, OrderBy } from './types'
  5. import { ALL_CHAT_AVAILABLE_BLOCKS, ALL_COMPLETION_AVAILABLE_BLOCKS } from '@/app/components/workflow/constants'
  6. const i18nPrefix = 'workflow.errorMsg'
  7. const nodeDefault: NodeDefault<ListFilterNodeType> = {
  8. defaultValue: {
  9. variable: [],
  10. filter_by: {
  11. enabled: false,
  12. conditions: [],
  13. },
  14. order_by: {
  15. enabled: false,
  16. key: '',
  17. value: OrderBy.ASC,
  18. },
  19. limit: {
  20. enabled: false,
  21. size: 10,
  22. },
  23. },
  24. getAvailablePrevNodes(isChatMode: boolean) {
  25. const nodes = isChatMode
  26. ? ALL_CHAT_AVAILABLE_BLOCKS
  27. : ALL_COMPLETION_AVAILABLE_BLOCKS.filter(type => type !== BlockEnum.End)
  28. return nodes
  29. },
  30. getAvailableNextNodes(isChatMode: boolean) {
  31. const nodes = isChatMode ? ALL_CHAT_AVAILABLE_BLOCKS : ALL_COMPLETION_AVAILABLE_BLOCKS
  32. return nodes
  33. },
  34. checkValid(payload: ListFilterNodeType, t: any) {
  35. let errorMessages = ''
  36. const { variable, var_type, filter_by } = payload
  37. if (!errorMessages && !variable?.length)
  38. errorMessages = t(`${i18nPrefix}.fieldRequired`, { field: t('workflow.nodes.listFilter.inputVar') })
  39. // Check filter condition
  40. if (!errorMessages && filter_by?.enabled) {
  41. if (var_type === VarType.arrayFile && !filter_by.conditions[0]?.key)
  42. errorMessages = t(`${i18nPrefix}.fieldRequired`, { field: t('workflow.nodes.listFilter.filterConditionKey') })
  43. if (!errorMessages && !filter_by.conditions[0]?.comparison_operator)
  44. errorMessages = t(`${i18nPrefix}.fieldRequired`, { field: t('workflow.nodes.listFilter.filterConditionComparisonOperator') })
  45. if (!errorMessages && !comparisonOperatorNotRequireValue(filter_by.conditions[0]?.comparison_operator) && !filter_by.conditions[0]?.value)
  46. errorMessages = t(`${i18nPrefix}.fieldRequired`, { field: t('workflow.nodes.listFilter.filterConditionComparisonValue') })
  47. }
  48. return {
  49. isValid: !errorMessages,
  50. errorMessage: errorMessages,
  51. }
  52. },
  53. }
  54. export default nodeDefault