mirror of
https://github.com/langgenius/dify.git
synced 2025-09-26 17:46:00 +00:00
refactor: enhance datasource handling by adding fileExtensions support
This commit is contained in:
parent
754a1d1197
commit
31e183ef0d
@ -36,6 +36,7 @@ export const useDatasourceOptions = (pipelineNodes: Node<DataSourceNodeType>[])
|
|||||||
description: node.data.desc || '',
|
description: node.data.desc || '',
|
||||||
docTitle: '', // todo: Add docTitle and docLink if needed, or remove these properties if not used
|
docTitle: '', // todo: Add docTitle and docLink if needed, or remove these properties if not used
|
||||||
docLink: '',
|
docLink: '',
|
||||||
|
fileExtensions: node.data.fileExtensions || [],
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}, [datasourceNodes])
|
}, [datasourceNodes])
|
||||||
|
@ -265,6 +265,7 @@ const TestRunPanel = () => {
|
|||||||
{datasource?.type === DatasourceType.localFile && (
|
{datasource?.type === DatasourceType.localFile && (
|
||||||
<LocalFile
|
<LocalFile
|
||||||
files={fileList}
|
files={fileList}
|
||||||
|
allowedExtensions={datasource?.fileExtensions || []}
|
||||||
updateFile={updateFile}
|
updateFile={updateFile}
|
||||||
updateFileList={updateFileList}
|
updateFileList={updateFileList}
|
||||||
onPreview={updateCurrentFile}
|
onPreview={updateCurrentFile}
|
||||||
|
@ -14,12 +14,13 @@ import { LanguagesSupported } from '@/i18n/language'
|
|||||||
import { IS_CE_EDITION } from '@/config'
|
import { IS_CE_EDITION } from '@/config'
|
||||||
import { Theme } from '@/types/app'
|
import { Theme } from '@/types/app'
|
||||||
import useTheme from '@/hooks/use-theme'
|
import useTheme from '@/hooks/use-theme'
|
||||||
import { useFileSupportTypes, useFileUploadConfig } from '@/service/use-common'
|
import { useFileUploadConfig } from '@/service/use-common'
|
||||||
|
|
||||||
const FILES_NUMBER_LIMIT = 20
|
const FILES_NUMBER_LIMIT = 20
|
||||||
|
|
||||||
type IFileUploaderProps = {
|
type IFileUploaderProps = {
|
||||||
fileList: FileItem[]
|
fileList: FileItem[]
|
||||||
|
allowedExtensions: string[]
|
||||||
prepareFileList: (files: FileItem[]) => void
|
prepareFileList: (files: FileItem[]) => void
|
||||||
onFileUpdate: (fileItem: FileItem, progress: number, list: FileItem[]) => void
|
onFileUpdate: (fileItem: FileItem, progress: number, list: FileItem[]) => void
|
||||||
onFileListUpdate?: (files: FileItem[]) => void
|
onFileListUpdate?: (files: FileItem[]) => void
|
||||||
@ -29,6 +30,7 @@ type IFileUploaderProps = {
|
|||||||
|
|
||||||
const FileUploader = ({
|
const FileUploader = ({
|
||||||
fileList,
|
fileList,
|
||||||
|
allowedExtensions,
|
||||||
prepareFileList,
|
prepareFileList,
|
||||||
onFileUpdate,
|
onFileUpdate,
|
||||||
onFileListUpdate,
|
onFileListUpdate,
|
||||||
@ -45,9 +47,7 @@ const FileUploader = ({
|
|||||||
const hideUpload = notSupportBatchUpload && fileList.length > 0
|
const hideUpload = notSupportBatchUpload && fileList.length > 0
|
||||||
|
|
||||||
const { data: fileUploadConfigResponse } = useFileUploadConfig()
|
const { data: fileUploadConfigResponse } = useFileUploadConfig()
|
||||||
const { data: supportFileTypesResponse } = useFileSupportTypes() // Todo: replace with extensions configured in node
|
const supportTypesShowNames = useMemo(() => {
|
||||||
const supportTypes = supportFileTypesResponse?.allowed_extensions || []
|
|
||||||
const supportTypesShowNames = (() => {
|
|
||||||
const extensionMap: { [key: string]: string } = {
|
const extensionMap: { [key: string]: string } = {
|
||||||
md: 'markdown',
|
md: 'markdown',
|
||||||
pptx: 'pptx',
|
pptx: 'pptx',
|
||||||
@ -56,14 +56,14 @@ const FileUploader = ({
|
|||||||
docx: 'docx',
|
docx: 'docx',
|
||||||
}
|
}
|
||||||
|
|
||||||
return [...supportTypes]
|
return allowedExtensions
|
||||||
.map(item => extensionMap[item] || item) // map to standardized extension
|
.map(item => extensionMap[item] || item) // map to standardized extension
|
||||||
.map(item => item.toLowerCase()) // convert to lower case
|
.map(item => item.toLowerCase()) // convert to lower case
|
||||||
.filter((item, index, self) => self.indexOf(item) === index) // remove duplicates
|
.filter((item, index, self) => self.indexOf(item) === index) // remove duplicates
|
||||||
.map(item => item.toUpperCase()) // convert to upper case
|
.map(item => item.toUpperCase()) // convert to upper case
|
||||||
.join(locale !== LanguagesSupported[1] ? ', ' : '、 ')
|
.join(locale !== LanguagesSupported[1] ? ', ' : '、 ')
|
||||||
})()
|
}, [locale, allowedExtensions])
|
||||||
const ACCEPTS = supportTypes.map((ext: string) => `.${ext}`)
|
const ACCEPTS = allowedExtensions.map((ext: string) => `.${ext}`)
|
||||||
const fileUploadConfig = useMemo(() => fileUploadConfigResponse ?? {
|
const fileUploadConfig = useMemo(() => fileUploadConfigResponse ?? {
|
||||||
file_size_limit: 15,
|
file_size_limit: 15,
|
||||||
batch_count_limit: 5,
|
batch_count_limit: 5,
|
||||||
@ -266,7 +266,7 @@ const FileUploader = ({
|
|||||||
|
|
||||||
<span>
|
<span>
|
||||||
{t('datasetCreation.stepOne.uploader.button')}
|
{t('datasetCreation.stepOne.uploader.button')}
|
||||||
{supportTypes.length > 0 && (
|
{allowedExtensions.length > 0 && (
|
||||||
<label className='ml-1 cursor-pointer text-text-accent' onClick={selectHandle}>{t('datasetCreation.stepOne.uploader.browse')}</label>
|
<label className='ml-1 cursor-pointer text-text-accent' onClick={selectHandle}>{t('datasetCreation.stepOne.uploader.browse')}</label>
|
||||||
)}
|
)}
|
||||||
</span>
|
</span>
|
||||||
|
@ -3,6 +3,7 @@ import FileUploader from './file-uploader'
|
|||||||
|
|
||||||
type LocalFileProps = {
|
type LocalFileProps = {
|
||||||
files: FileItem[]
|
files: FileItem[]
|
||||||
|
allowedExtensions: string[]
|
||||||
updateFileList: (files: FileItem[]) => void
|
updateFileList: (files: FileItem[]) => void
|
||||||
updateFile: (fileItem: FileItem, progress: number, list: FileItem[]) => void
|
updateFile: (fileItem: FileItem, progress: number, list: FileItem[]) => void
|
||||||
onPreview?: (file: File) => void
|
onPreview?: (file: File) => void
|
||||||
@ -11,6 +12,7 @@ type LocalFileProps = {
|
|||||||
|
|
||||||
const LocalFile = ({
|
const LocalFile = ({
|
||||||
files,
|
files,
|
||||||
|
allowedExtensions,
|
||||||
updateFileList,
|
updateFileList,
|
||||||
updateFile,
|
updateFile,
|
||||||
onPreview,
|
onPreview,
|
||||||
@ -19,6 +21,7 @@ const LocalFile = ({
|
|||||||
return (
|
return (
|
||||||
<FileUploader
|
<FileUploader
|
||||||
fileList={files}
|
fileList={files}
|
||||||
|
allowedExtensions={allowedExtensions}
|
||||||
prepareFileList={updateFileList}
|
prepareFileList={updateFileList}
|
||||||
onFileListUpdate={updateFileList}
|
onFileListUpdate={updateFileList}
|
||||||
onFileUpdate={updateFile}
|
onFileUpdate={updateFile}
|
||||||
|
@ -31,9 +31,10 @@ export const useDatasourceOptions = () => {
|
|||||||
nodeId: node.id,
|
nodeId: node.id,
|
||||||
type: node.data.provider_type as DatasourceType,
|
type: node.data.provider_type as DatasourceType,
|
||||||
variables: node.data.variables || [],
|
variables: node.data.variables || [],
|
||||||
description: node.data.desc || '',
|
description: '', // todo: Add description
|
||||||
docTitle: '', // todo: Add docTitle and docLink
|
docTitle: '', // todo: Add docTitle and docLink
|
||||||
docLink: '',
|
docLink: '',
|
||||||
|
fileExtensions: node.data.fileExtensions || [],
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}, [datasourceNodes])
|
}, [datasourceNodes])
|
||||||
|
@ -157,6 +157,7 @@ const TestRunPanel = () => {
|
|||||||
{datasource?.type === DatasourceType.localFile && (
|
{datasource?.type === DatasourceType.localFile && (
|
||||||
<LocalFile
|
<LocalFile
|
||||||
files={fileList}
|
files={fileList}
|
||||||
|
allowedExtensions={datasource?.fileExtensions || []}
|
||||||
updateFile={updateFile}
|
updateFile={updateFile}
|
||||||
updateFileList={updateFileList}
|
updateFileList={updateFileList}
|
||||||
notSupportBatchUpload={false} // only support single file upload in test run
|
notSupportBatchUpload={false} // only support single file upload in test run
|
||||||
|
@ -19,4 +19,5 @@ export type Datasource = {
|
|||||||
description: string
|
description: string
|
||||||
docTitle?: string
|
docTitle?: string
|
||||||
docLink?: string
|
docLink?: string
|
||||||
|
fileExtensions?: string[]
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user