dify/web/app/components/workflow/nodes/assigner/utils.ts

90 lines
2.3 KiB
TypeScript

import type { AssignerNodeType } from './types'
import type { I18nKeysByPrefix } from '@/types/i18n'
import { AssignerNodeInputType, WriteMode } from './types'
export const checkNodeValid = (_payload: AssignerNodeType) => {
return true
}
export const formatOperationName = (type: string) => {
if (type === 'over-write')
return 'Overwrite'
return type.charAt(0).toUpperCase() + type.slice(1)
}
export type OperationName = I18nKeysByPrefix<'workflow', 'nodes.assigner.operations.'>
export type Item
= | { value: 'divider', name: 'divider' }
| { value: string | number, name: OperationName }
export function isOperationItem(item: Item): item is { value: string | number, name: OperationName } {
return item.value !== 'divider'
}
export const getOperationItems = (
assignedVarType?: string,
writeModeTypes?: WriteMode[],
writeModeTypesArr?: WriteMode[],
writeModeTypesNum?: WriteMode[],
): Item[] => {
if (assignedVarType?.startsWith('array') && writeModeTypesArr) {
return writeModeTypesArr.map(type => ({
value: type,
name: type,
}))
}
if (assignedVarType === 'number' && writeModeTypes && writeModeTypesNum) {
return [
...writeModeTypes.map(type => ({
value: type,
name: type,
})),
{ value: 'divider', name: 'divider' } as Item,
...writeModeTypesNum.map(type => ({
value: type,
name: type,
})),
]
}
if (writeModeTypes && ['string', 'boolean', 'object'].includes(assignedVarType || '')) {
return writeModeTypes.map(type => ({
value: type,
name: type,
}))
}
return []
}
const convertOldWriteMode = (oldMode: string): WriteMode => {
switch (oldMode) {
case 'over-write':
return WriteMode.overwrite
case 'append':
return WriteMode.append
case 'clear':
return WriteMode.clear
default:
return WriteMode.overwrite
}
}
export const convertV1ToV2 = (payload: any): AssignerNodeType => {
if (payload.version === '2' && payload.items)
return payload as AssignerNodeType
return {
version: '2',
items: [{
variable_selector: payload.assigned_variable_selector || [],
input_type: AssignerNodeInputType.variable,
operation: convertOldWriteMode(payload.write_mode),
value: payload.input_variable_selector || [],
}],
...payload,
}
}