mirror of
https://github.com/langgenius/dify.git
synced 2026-04-29 12:37:20 +08:00
refactor: Add useOnlineDrive hook and integrate it into CreateFormPipeline and TestRunPanel components
This commit is contained in:
parent
a81dc49ad2
commit
0db7967e5f
@ -8,6 +8,7 @@ import type { CrawlResult, CrawlResultItem, DocumentItem, FileItem } from '@/mod
|
|||||||
import { CrawlStep } from '@/models/datasets'
|
import { CrawlStep } from '@/models/datasets'
|
||||||
import produce from 'immer'
|
import produce from 'immer'
|
||||||
import type { DataSourceNotionPageMap, DataSourceNotionWorkspace, NotionPage } from '@/models/common'
|
import type { DataSourceNotionPageMap, DataSourceNotionWorkspace, NotionPage } from '@/models/common'
|
||||||
|
import { type OnlineDriveFile, OnlineDriveFileType } from '@/models/pipeline'
|
||||||
|
|
||||||
export const useAddDocumentsSteps = () => {
|
export const useAddDocumentsSteps = () => {
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
@ -227,3 +228,30 @@ export const useWebsiteCrawl = () => {
|
|||||||
hideWebsitePreview,
|
hideWebsitePreview,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const useOnlineDrive = () => {
|
||||||
|
const [prefix, setPrefix] = useState<string[]>([])
|
||||||
|
const [keywords, setKeywords] = useState('')
|
||||||
|
const [startAfter, setStartAfter] = useState('')
|
||||||
|
const [selectedFileList, setSelectedFileList] = useState<string[]>([])
|
||||||
|
const [fileList, setFileList] = useState<OnlineDriveFile[]>([
|
||||||
|
{
|
||||||
|
key: 'Bucket_1',
|
||||||
|
size: 1024, // unit bytes
|
||||||
|
type: OnlineDriveFileType.bucket,
|
||||||
|
},
|
||||||
|
])
|
||||||
|
|
||||||
|
return {
|
||||||
|
prefix,
|
||||||
|
setPrefix,
|
||||||
|
keywords,
|
||||||
|
setKeywords,
|
||||||
|
startAfter,
|
||||||
|
setStartAfter,
|
||||||
|
selectedFileList,
|
||||||
|
setSelectedFileList,
|
||||||
|
fileList,
|
||||||
|
setFileList,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -26,7 +26,7 @@ import Processing from './processing'
|
|||||||
import type { InitialDocumentDetail, PublishedPipelineRunPreviewResponse, PublishedPipelineRunResponse } from '@/models/pipeline'
|
import type { InitialDocumentDetail, PublishedPipelineRunPreviewResponse, PublishedPipelineRunResponse } from '@/models/pipeline'
|
||||||
import { DatasourceType } from '@/models/pipeline'
|
import { DatasourceType } from '@/models/pipeline'
|
||||||
import { TransferMethod } from '@/types/app'
|
import { TransferMethod } from '@/types/app'
|
||||||
import { useAddDocumentsSteps, useLocalFile, useOnlineDocuments, useWebsiteCrawl } from './hooks'
|
import { useAddDocumentsSteps, useLocalFile, useOnlineDocuments, useOnlineDrive, useWebsiteCrawl } from './hooks'
|
||||||
import OnlineDrive from '@/app/components/rag-pipeline/components/panel/test-run/data-source/online-drive'
|
import OnlineDrive from '@/app/components/rag-pipeline/components/panel/test-run/data-source/online-drive'
|
||||||
|
|
||||||
const CreateFormPipeline = () => {
|
const CreateFormPipeline = () => {
|
||||||
@ -90,6 +90,18 @@ const CreateFormPipeline = () => {
|
|||||||
previewIndex,
|
previewIndex,
|
||||||
hideWebsitePreview,
|
hideWebsitePreview,
|
||||||
} = useWebsiteCrawl()
|
} = useWebsiteCrawl()
|
||||||
|
const {
|
||||||
|
prefix,
|
||||||
|
setPrefix,
|
||||||
|
keywords,
|
||||||
|
setKeywords,
|
||||||
|
startAfter,
|
||||||
|
setStartAfter,
|
||||||
|
selectedFileList,
|
||||||
|
setSelectedFileList,
|
||||||
|
fileList: onlineDriveFileList,
|
||||||
|
setFileList,
|
||||||
|
} = useOnlineDrive()
|
||||||
|
|
||||||
const isVectorSpaceFull = plan.usage.vectorSpace >= plan.total.vectorSpace
|
const isVectorSpaceFull = plan.usage.vectorSpace >= plan.total.vectorSpace
|
||||||
const isShowVectorSpaceFull = allFileLoaded && isVectorSpaceFull && enableBilling
|
const isShowVectorSpaceFull = allFileLoaded && isVectorSpaceFull && enableBilling
|
||||||
@ -302,6 +314,16 @@ const CreateFormPipeline = () => {
|
|||||||
{datasourceType === DatasourceType.onlineDrive && (
|
{datasourceType === DatasourceType.onlineDrive && (
|
||||||
<OnlineDrive
|
<OnlineDrive
|
||||||
nodeData={datasource!.nodeData}
|
nodeData={datasource!.nodeData}
|
||||||
|
prefix={prefix}
|
||||||
|
setPrefix={setPrefix}
|
||||||
|
keywords={keywords}
|
||||||
|
setKeywords={setKeywords}
|
||||||
|
startAfter={startAfter}
|
||||||
|
setStartAfter={setStartAfter}
|
||||||
|
selectedFileList={selectedFileList}
|
||||||
|
setSelectedFileList={setSelectedFileList}
|
||||||
|
fileList={onlineDriveFileList}
|
||||||
|
setFileList={setFileList}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{isShowVectorSpaceFull && (
|
{isShowVectorSpaceFull && (
|
||||||
|
|||||||
@ -1,38 +1,43 @@
|
|||||||
import type { DataSourceNodeType } from '@/app/components/workflow/nodes/data-source/types'
|
import type { DataSourceNodeType } from '@/app/components/workflow/nodes/data-source/types'
|
||||||
import Header from './header'
|
import Header from './header'
|
||||||
import { useCallback, useMemo, useState } from 'react'
|
import { useCallback } from 'react'
|
||||||
import FileList from './file-list'
|
import FileList from './file-list'
|
||||||
import { OnlineDriveFileType } from '@/models/pipeline'
|
import type { OnlineDriveFile } from '@/models/pipeline'
|
||||||
|
|
||||||
type OnlineDriveProps = {
|
type OnlineDriveProps = {
|
||||||
nodeData: DataSourceNodeType
|
nodeData: DataSourceNodeType
|
||||||
|
prefix: string[]
|
||||||
|
setPrefix: (prefix: string[]) => void
|
||||||
|
keywords: string
|
||||||
|
setKeywords: (keywords: string) => void
|
||||||
|
startAfter: string
|
||||||
|
setStartAfter: (startAfter: string) => void
|
||||||
|
selectedFileList: string[]
|
||||||
|
setSelectedFileList: (selectedFileList: string[]) => void
|
||||||
|
fileList: OnlineDriveFile[]
|
||||||
|
setFileList: (fileList: OnlineDriveFile[]) => void
|
||||||
}
|
}
|
||||||
|
|
||||||
const OnlineDrive = ({
|
const OnlineDrive = ({
|
||||||
nodeData,
|
nodeData,
|
||||||
|
prefix,
|
||||||
|
setPrefix,
|
||||||
|
keywords,
|
||||||
|
setKeywords,
|
||||||
|
startAfter,
|
||||||
|
setStartAfter,
|
||||||
|
selectedFileList,
|
||||||
|
setSelectedFileList,
|
||||||
|
fileList,
|
||||||
|
setFileList,
|
||||||
}: OnlineDriveProps) => {
|
}: OnlineDriveProps) => {
|
||||||
const [prefix, setPrefix] = useState<string[]>([])
|
|
||||||
const [keywords, setKeywords] = useState('')
|
|
||||||
const [startAfter, setStartAfter] = useState('')
|
|
||||||
const [selectedFileList, setSelectedFileList] = useState<string[]>([])
|
|
||||||
|
|
||||||
const updateKeywords = useCallback((keywords: string) => {
|
const updateKeywords = useCallback((keywords: string) => {
|
||||||
setKeywords(keywords)
|
setKeywords(keywords)
|
||||||
}, [])
|
}, [setKeywords])
|
||||||
|
|
||||||
const resetPrefix = useCallback(() => {
|
const resetPrefix = useCallback(() => {
|
||||||
setKeywords('')
|
setKeywords('')
|
||||||
}, [])
|
}, [setKeywords])
|
||||||
|
|
||||||
const fileList = useMemo(() => {
|
|
||||||
return [
|
|
||||||
{
|
|
||||||
key: 'Bucket_1',
|
|
||||||
size: 1024, // unit bytes
|
|
||||||
type: OnlineDriveFileType.bucket,
|
|
||||||
},
|
|
||||||
]
|
|
||||||
}, [])
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='flex flex-col gap-y-2'>
|
<div className='flex flex-col gap-y-2'>
|
||||||
|
|||||||
@ -9,6 +9,8 @@ import type { CrawlResult } from '@/models/datasets'
|
|||||||
import { type CrawlResultItem, CrawlStep, type FileItem } from '@/models/datasets'
|
import { type CrawlResultItem, CrawlStep, type FileItem } from '@/models/datasets'
|
||||||
import produce from 'immer'
|
import produce from 'immer'
|
||||||
import type { DataSourceNotionPageMap, DataSourceNotionWorkspace, NotionPage } from '@/models/common'
|
import type { DataSourceNotionPageMap, DataSourceNotionWorkspace, NotionPage } from '@/models/common'
|
||||||
|
import type { OnlineDriveFile } from '@/models/pipeline'
|
||||||
|
import { OnlineDriveFileType } from '@/models/pipeline'
|
||||||
|
|
||||||
export const useTestRunSteps = () => {
|
export const useTestRunSteps = () => {
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
@ -167,3 +169,30 @@ export const useWebsiteCrawl = () => {
|
|||||||
setStep,
|
setStep,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const useOnlineDrive = () => {
|
||||||
|
const [prefix, setPrefix] = useState<string[]>([])
|
||||||
|
const [keywords, setKeywords] = useState('')
|
||||||
|
const [startAfter, setStartAfter] = useState('')
|
||||||
|
const [selectedFileList, setSelectedFileList] = useState<string[]>([])
|
||||||
|
const [fileList, setFileList] = useState<OnlineDriveFile[]>([
|
||||||
|
{
|
||||||
|
key: 'Bucket_1',
|
||||||
|
size: 1024, // unit bytes
|
||||||
|
type: OnlineDriveFileType.bucket,
|
||||||
|
},
|
||||||
|
])
|
||||||
|
|
||||||
|
return {
|
||||||
|
prefix,
|
||||||
|
setPrefix,
|
||||||
|
keywords,
|
||||||
|
setKeywords,
|
||||||
|
startAfter,
|
||||||
|
setStartAfter,
|
||||||
|
selectedFileList,
|
||||||
|
setSelectedFileList,
|
||||||
|
fileList,
|
||||||
|
setFileList,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { useStore as useWorkflowStoreWithSelector } from '@/app/components/workflow/store'
|
import { useStore as useWorkflowStoreWithSelector } from '@/app/components/workflow/store'
|
||||||
import { useCallback, useMemo, useState } from 'react'
|
import { useCallback, useMemo, useState } from 'react'
|
||||||
import { useLocalFile, useOnlineDocuments, useTestRunSteps, useWebsiteCrawl } from './hooks'
|
import { useLocalFile, useOnlineDocuments, useOnlineDrive, useTestRunSteps, useWebsiteCrawl } from './hooks'
|
||||||
import DataSourceOptions from './data-source-options'
|
import DataSourceOptions from './data-source-options'
|
||||||
import LocalFile from './data-source/local-file'
|
import LocalFile from './data-source/local-file'
|
||||||
import OnlineDocuments from './data-source/online-documents'
|
import OnlineDocuments from './data-source/online-documents'
|
||||||
@ -52,6 +52,18 @@ const TestRunPanel = () => {
|
|||||||
step,
|
step,
|
||||||
setStep,
|
setStep,
|
||||||
} = useWebsiteCrawl()
|
} = useWebsiteCrawl()
|
||||||
|
const {
|
||||||
|
prefix,
|
||||||
|
setPrefix,
|
||||||
|
keywords,
|
||||||
|
setKeywords,
|
||||||
|
startAfter,
|
||||||
|
setStartAfter,
|
||||||
|
selectedFileList,
|
||||||
|
setSelectedFileList,
|
||||||
|
fileList: onlineDriveFileList,
|
||||||
|
setFileList,
|
||||||
|
} = useOnlineDrive()
|
||||||
const { handleRun } = useWorkflowRun()
|
const { handleRun } = useWorkflowRun()
|
||||||
|
|
||||||
const datasourceType = datasource?.nodeData.provider_type
|
const datasourceType = datasource?.nodeData.provider_type
|
||||||
@ -165,6 +177,16 @@ const TestRunPanel = () => {
|
|||||||
{datasourceType === DatasourceType.onlineDrive && (
|
{datasourceType === DatasourceType.onlineDrive && (
|
||||||
<OnlineDrive
|
<OnlineDrive
|
||||||
nodeData={datasource!.nodeData}
|
nodeData={datasource!.nodeData}
|
||||||
|
prefix={prefix}
|
||||||
|
setPrefix={setPrefix}
|
||||||
|
keywords={keywords}
|
||||||
|
setKeywords={setKeywords}
|
||||||
|
startAfter={startAfter}
|
||||||
|
setStartAfter={setStartAfter}
|
||||||
|
selectedFileList={selectedFileList}
|
||||||
|
setSelectedFileList={setSelectedFileList}
|
||||||
|
fileList={onlineDriveFileList}
|
||||||
|
setFileList={setFileList}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user