dify/web/app/components/workflow/nodes/assigner/default.ts
yyh 2ec34b2cfb
feat(workflow): improve block selector navigation and previews (#39212)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-07-18 09:56:36 +00:00

69 lines
2.2 KiB
TypeScript

import type { TFunction } from 'i18next'
import type { NodeDefault } from '../../types'
import type { AssignerNodeType } from './types'
import { BlockClassification } from '@/app/components/workflow/block-selector/types'
import { BlockEnum } from '@/app/components/workflow/types'
import { genNodeMetaData } from '@/app/components/workflow/utils'
import { WriteMode } from './types'
const i18nPrefix = 'errorMsg'
const metaData = genNodeMetaData({
classification: BlockClassification.Transform,
sort: 5,
type: BlockEnum.Assigner,
helpLinkUri: 'variable-assigner',
})
const nodeDefault: NodeDefault<AssignerNodeType> = {
metaData,
defaultValue: {
version: '2',
items: [],
},
checkValid(payload: AssignerNodeType, t: TFunction<'workflow'>) {
let errorMessages = ''
const { items: operationItems } = payload
operationItems?.forEach((value) => {
if (!errorMessages && !value.variable_selector?.length)
errorMessages = t(($) => $[`${i18nPrefix}.fieldRequired`], {
ns: 'workflow',
field: t(($) => $['nodes.assigner.assignedVariable'], { ns: 'workflow' }),
})
if (
!errorMessages &&
value.operation !== WriteMode.clear &&
value.operation !== WriteMode.removeFirst &&
value.operation !== WriteMode.removeLast
) {
if (
value.operation === WriteMode.set ||
value.operation === WriteMode.increment ||
value.operation === WriteMode.decrement ||
value.operation === WriteMode.multiply ||
value.operation === WriteMode.divide
) {
if (!value.value && value.value !== false && typeof value.value !== 'number')
errorMessages = t(($) => $[`${i18nPrefix}.fieldRequired`], {
ns: 'workflow',
field: t(($) => $['nodes.assigner.variable'], { ns: 'workflow' }),
})
} else if (!value.value?.length) {
errorMessages = t(($) => $[`${i18nPrefix}.fieldRequired`], {
ns: 'workflow',
field: t(($) => $['nodes.assigner.variable'], { ns: 'workflow' }),
})
}
}
})
return {
isValid: !errorMessages,
errorMessage: errorMessages,
}
},
}
export default nodeDefault