From 8b70df329db76aff9a442139d53cd29ea5c978a0 Mon Sep 17 00:00:00 2001 From: jZonG Date: Sat, 26 Apr 2025 17:24:08 +0800 Subject: [PATCH] file & array[file] update --- .../variable-inspect/value-content.tsx | 64 +++++++++++++++---- 1 file changed, 53 insertions(+), 11 deletions(-) diff --git a/web/app/components/workflow/variable-inspect/value-content.tsx b/web/app/components/workflow/variable-inspect/value-content.tsx index 5b158d4e50..c3283e412e 100644 --- a/web/app/components/workflow/variable-inspect/value-content.tsx +++ b/web/app/components/workflow/variable-inspect/value-content.tsx @@ -3,6 +3,7 @@ import { useEffect, useRef, useState } from 'react' import { debounce } from 'lodash-es' import Textarea from '@/app/components/base/textarea' import SchemaEditor from '@/app/components/workflow/nodes/llm/components/json-schema-config-modal/schema-editor' +import { FileUploaderInAttachmentWrapper } from '@/app/components/base/file-uploader' import ErrorMessage from '@/app/components/workflow/nodes/llm/components/json-schema-config-modal/error-message' import { checkJsonSchemaDepth, @@ -12,7 +13,12 @@ import { import { validateJSONSchema, } from '@/app/components/workflow/variable-inspect/utils' +import { useFeatures } from '@/app/components/base/features/hooks' +import { getProcessedFiles } from '@/app/components/base/file-uploader/utils' import { JSON_SCHEMA_MAX_DEPTH } from '@/config' +import { TransferMethod } from '@/types/app' +import { FILE_EXTS } from '@/app/components/base/prompt-editor/constants' +import { SupportUploadFileTypes } from '@/app/components/workflow/types' import cn from '@/utils/classnames' export const currentVar = { @@ -23,19 +29,20 @@ export const currentVar = { name: 'out_put', // var_type: 'string', // var_type: 'number', - var_type: 'object', + // var_type: 'object', // var_type: 'array[string]', // var_type: 'array[number]', // var_type: 'array[object]', // var_type: 'file', - // var_type: 'array[file]', + var_type: 'array[file]', // value: 'tuituitui', // value: ['aaa', 'bbb', 'ccc'], - value: { - abc: '123', - def: 456, - fff: true, - }, + // value: { + // abc: '123', + // def: 456, + // fff: true, + // }, + value: [], edited: true, } @@ -53,6 +60,14 @@ const ValueContent = () => { const [json, setJson] = useState(JSON.stringify(jsonSchema, null, 2)) const [parseError, setParseError] = useState(null) const [validationError, setValidationError] = useState('') + const fileFeature = useFeatures(s => s.features.file) + const [fileValue, setFileValue] = useState( + current.var_type === 'array[file]' + ? current.value || [] + : current.value + ? [current.value] + : [], + ) const handleTextChange = (value: string) => { if (current.var_type === 'string') @@ -62,6 +77,7 @@ const ValueContent = () => { if (/^-?\d+(\.)?(\d+)?$/.test(value)) setValue(value) } + // TODO call api of value update } const jsonValueValidate = (value: string, type: string) => { @@ -110,12 +126,16 @@ const ValueContent = () => { } } - const handleFileChange = (value: string) => { + const handleFileChange = (value: any) => { + console.log('value', value) + setFileValue(value) + // TODO check every file upload progress + // invoke update api after every file uploaded if (current.var_type === 'file') { - // TODO update file + // TODO call api of value update } if (current.var_type === 'array[file]') { - // TODO update array[file] + // TODO call api of value update } } @@ -160,7 +180,29 @@ const ValueContent = () => { /> )} {showFileEditor && ( -
TODO
+
+ handleFileChange(getProcessedFiles(files))} + fileConfig={{ + allowed_file_types: [ + SupportUploadFileTypes.image, + SupportUploadFileTypes.document, + SupportUploadFileTypes.audio, + SupportUploadFileTypes.video, + ], + allowed_file_extensions: [ + ...FILE_EXTS[SupportUploadFileTypes.image], + ...FILE_EXTS[SupportUploadFileTypes.document], + ...FILE_EXTS[SupportUploadFileTypes.audio], + ...FILE_EXTS[SupportUploadFileTypes.video], + ], + allowed_file_upload_methods: [TransferMethod.local_file, TransferMethod.remote_url], + number_limits: current.var_type === 'file' ? 1 : (fileFeature as any).fileUploadConfig.workflow_file_upload_limit, + fileUploadConfig: (fileFeature as any).fileUploadConfig, + }} + /> +
)}