fix: iteration files type not support

pull/21369/head
Joel 11 months ago
parent f922454ee8
commit c5dcad3990

@ -95,6 +95,7 @@ const FormItem: FC<Props> = ({
const isArrayLikeType = [InputVarType.contexts, InputVarType.iterator].includes(type) const isArrayLikeType = [InputVarType.contexts, InputVarType.iterator].includes(type)
const isContext = type === InputVarType.contexts const isContext = type === InputVarType.contexts
const isIterator = type === InputVarType.iterator const isIterator = type === InputVarType.iterator
const isIteratorItemFile = isIterator && payload.isFileItem
const singleFileValue = useMemo(() => { const singleFileValue = useMemo(() => {
if (payload.variable === '#files#') if (payload.variable === '#files#')
return value?.[0] || [] return value?.[0] || []
@ -202,12 +203,12 @@ const FormItem: FC<Props> = ({
}} }}
/> />
)} )}
{(type === InputVarType.multiFiles) && ( {(type === InputVarType.multiFiles || isIteratorItemFile) && (
<FileUploaderInAttachmentWrapper <FileUploaderInAttachmentWrapper
value={value} value={value}
onChange={files => onChange(files)} onChange={files => onChange(files)}
fileConfig={{ fileConfig={{
allowed_file_types: inStepRun allowed_file_types: (inStepRun || isIteratorItemFile)
? [ ? [
SupportUploadFileTypes.image, SupportUploadFileTypes.image,
SupportUploadFileTypes.document, SupportUploadFileTypes.document,
@ -215,7 +216,7 @@ const FormItem: FC<Props> = ({
SupportUploadFileTypes.video, SupportUploadFileTypes.video,
] ]
: payload.allowed_file_types, : payload.allowed_file_types,
allowed_file_extensions: inStepRun allowed_file_extensions: (inStepRun || isIteratorItemFile)
? [ ? [
...FILE_EXTS[SupportUploadFileTypes.image], ...FILE_EXTS[SupportUploadFileTypes.image],
...FILE_EXTS[SupportUploadFileTypes.document], ...FILE_EXTS[SupportUploadFileTypes.document],
@ -223,8 +224,8 @@ const FormItem: FC<Props> = ({
...FILE_EXTS[SupportUploadFileTypes.video], ...FILE_EXTS[SupportUploadFileTypes.video],
] ]
: payload.allowed_file_extensions, : payload.allowed_file_extensions,
allowed_file_upload_methods: inStepRun ? [TransferMethod.local_file, TransferMethod.remote_url] : payload.allowed_file_upload_methods, allowed_file_upload_methods: (inStepRun || isIteratorItemFile) ? [TransferMethod.local_file, TransferMethod.remote_url] : payload.allowed_file_upload_methods,
number_limits: inStepRun ? 5 : payload.max_length, number_limits: (inStepRun || isIteratorItemFile) ? 5 : payload.max_length,
fileUploadConfig: fileSettings?.fileUploadConfig, fileUploadConfig: fileSettings?.fileUploadConfig,
}} }}
/> />
@ -272,7 +273,7 @@ const FormItem: FC<Props> = ({
} }
{ {
isIterator && ( (isIterator && !isIteratorItemFile) && (
<div className='space-y-2'> <div className='space-y-2'>
{(value || []).map((item: any, index: number) => ( {(value || []).map((item: any, index: number) => (
<TextEditor <TextEditor

@ -61,6 +61,8 @@ const Form: FC<Props> = ({
} }
}, [valuesRef, onChange, mapKeysWithSameValueSelector]) }, [valuesRef, onChange, mapKeysWithSameValueSelector])
const isArrayLikeType = [InputVarType.contexts, InputVarType.iterator].includes(inputs[0]?.type) const isArrayLikeType = [InputVarType.contexts, InputVarType.iterator].includes(inputs[0]?.type)
const isIteratorItemFile = inputs[0]?.type === InputVarType.iterator && inputs[0]?.isFileItem
const isContext = inputs[0]?.type === InputVarType.contexts const isContext = inputs[0]?.type === InputVarType.contexts
const handleAddContext = useCallback(() => { const handleAddContext = useCallback(() => {
const newValues = produce(values, (draft: any) => { const newValues = produce(values, (draft: any) => {
@ -77,7 +79,7 @@ const Form: FC<Props> = ({
{label && ( {label && (
<div className='mb-1 flex items-center justify-between'> <div className='mb-1 flex items-center justify-between'>
<div className='system-xs-medium-uppercase flex h-6 items-center text-text-tertiary'>{label}</div> <div className='system-xs-medium-uppercase flex h-6 items-center text-text-tertiary'>{label}</div>
{isArrayLikeType && ( {isArrayLikeType && !isIteratorItemFile && (
<AddButton onClick={handleAddContext} /> <AddButton onClick={handleAddContext} />
)} )}
</div> </div>

@ -11,6 +11,7 @@ export type IterationNodeType = CommonNodeType & {
start_node_id: string // start node id in the iteration start_node_id: string // start node id in the iteration
iteration_id?: string iteration_id?: string
iterator_selector: ValueSelector iterator_selector: ValueSelector
iterator_input_type: VarType
output_selector: ValueSelector output_selector: ValueSelector
output_type: VarType // output type. output_type: VarType // output type.
is_parallel: boolean // open the parallel mode or not is_parallel: boolean // open the parallel mode or not

@ -28,9 +28,10 @@ const useConfig = (id: string, payload: IterationNodeType) => {
return [VarType.array, VarType.arrayString, VarType.arrayNumber, VarType.arrayObject, VarType.arrayFile].includes(varPayload.type) return [VarType.array, VarType.arrayString, VarType.arrayNumber, VarType.arrayObject, VarType.arrayFile].includes(varPayload.type)
}, []) }, [])
const handleInputChange = useCallback((input: ValueSelector | string) => { const handleInputChange = useCallback((input: ValueSelector | string, _varKindType: VarKindType, varInfo?: Var) => {
const newInputs = produce(inputs, (draft) => { const newInputs = produce(inputs, (draft) => {
draft.iterator_selector = input as ValueSelector || [] draft.iterator_selector = input as ValueSelector || []
draft.iterator_input_type = varInfo?.type || VarType.arrayString
}) })
setInputs(newInputs) setInputs(newInputs)
}, [inputs, setInputs]) }, [inputs, setInputs])

@ -5,7 +5,7 @@ import type { IterationNodeType } from './types'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useIsNodeInIteration, useWorkflow } from '../../hooks' import { useIsNodeInIteration, useWorkflow } from '../../hooks'
import { getNodeInfoById, getNodeUsedVarPassToServerKey, getNodeUsedVars, isSystemVar } from '../_base/components/variable/utils' import { getNodeInfoById, getNodeUsedVarPassToServerKey, getNodeUsedVars, isSystemVar } from '../_base/components/variable/utils'
import { InputVarType } from '@/app/components/workflow/types' import { InputVarType, VarType } from '@/app/components/workflow/types'
import formatTracing from '@/app/components/workflow/run/utils/format-log' import formatTracing from '@/app/components/workflow/run/utils/format-log'
import type { NodeTracing } from '@/types/workflow' import type { NodeTracing } from '@/types/workflow'
import { VALUE_SELECTOR_DELIMITER as DELIMITER } from '@/config' import { VALUE_SELECTOR_DELIMITER as DELIMITER } from '@/config'
@ -124,12 +124,13 @@ const useSingleRunFormParams = ({
type: InputVarType.iterator, type: InputVarType.iterator,
required: false, required: false,
getVarValueFromDependent: true, getVarValueFromDependent: true,
isFileItem: payload.iterator_input_type === VarType.arrayFile,
}], }],
values: { [iteratorInputKey]: iterator }, values: { [iteratorInputKey]: iterator },
onChange: (keyValue: Record<string, any>) => setIterator(keyValue[iteratorInputKey]), onChange: (keyValue: Record<string, any>) => setIterator(keyValue[iteratorInputKey]),
}, },
] ]
}, [inputVarValues, iterator, iteratorInputKey, setInputVarValues, setIterator, t, usedOutVars]) }, [inputVarValues, iterator, iteratorInputKey, payload.iterator_input_type, setInputVarValues, setIterator, t, usedOutVars])
const nodeInfo = formatTracing(iterationRunResult, t)[0] const nodeInfo = formatTracing(iterationRunResult, t)[0]

@ -201,6 +201,7 @@ export type InputVar = {
value_selector?: ValueSelector value_selector?: ValueSelector
getVarValueFromDependent?: boolean getVarValueFromDependent?: boolean
hide?: boolean hide?: boolean
isFileItem?: boolean
} & Partial<UploadFileSetting> } & Partial<UploadFileSetting>
export type ModelConfig = { export type ModelConfig = {

Loading…
Cancel
Save