You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

default.ts 1.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import { type NodeDefault, VarType } from '../../types'
  2. import type { VariableAssignerNodeType } from './types'
  3. import { genNodeMetaData } from '@/app/components/workflow/utils'
  4. import { BlockEnum } from '@/app/components/workflow/types'
  5. import { BlockClassificationEnum } from '@/app/components/workflow/block-selector/types'
  6. const i18nPrefix = 'workflow'
  7. const metaData = genNodeMetaData({
  8. classification: BlockClassificationEnum.Transform,
  9. sort: 3,
  10. type: BlockEnum.VariableAggregator,
  11. })
  12. const nodeDefault: NodeDefault<VariableAssignerNodeType> = {
  13. metaData,
  14. defaultValue: {
  15. output_type: VarType.any,
  16. variables: [],
  17. },
  18. checkValid(payload: VariableAssignerNodeType, t: any) {
  19. let errorMessages = ''
  20. const { variables, advanced_settings } = payload
  21. const { group_enabled = false, groups = [] } = advanced_settings || {}
  22. // enable group
  23. const validateVariables = (variables: any[], field: string) => {
  24. variables.forEach((variable) => {
  25. if (!variable || variable.length === 0)
  26. errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(field) })
  27. })
  28. }
  29. if (group_enabled) {
  30. if (!groups || groups.length === 0) {
  31. errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.variableAssigner.title`) })
  32. }
  33. else if (!errorMessages) {
  34. groups.forEach((group) => {
  35. validateVariables(group.variables || [], `${i18nPrefix}.errorMsg.fields.variableValue`)
  36. })
  37. }
  38. }
  39. else {
  40. if (!variables || variables.length === 0)
  41. errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.variableAssigner.title`) })
  42. else if (!errorMessages)
  43. validateVariables(variables, `${i18nPrefix}.errorMsg.fields.variableValue`)
  44. }
  45. return {
  46. isValid: !errorMessages,
  47. errorMessage: errorMessages,
  48. }
  49. },
  50. }
  51. export default nodeDefault