diff --git a/web/app/components/datasets/documents/create-from-pipeline/index.tsx b/web/app/components/datasets/documents/create-from-pipeline/index.tsx index 34027ccc84..758aeb1908 100644 --- a/web/app/components/datasets/documents/create-from-pipeline/index.tsx +++ b/web/app/components/datasets/documents/create-from-pipeline/index.tsx @@ -416,6 +416,7 @@ const CreateFormPipeline = () => { ) => void onPreview: () => void ref: React.RefObject + isRunning: boolean } const Form = ({ @@ -22,6 +23,7 @@ const Form = ({ onSubmit, onPreview, ref, + isRunning, }: OptionsProps) => { const form = useAppForm({ defaultValues: initialData, @@ -74,6 +76,7 @@ const Form = ({ onReset={handleReset} resetDisabled={!isDirty} onPreview={onPreview} + previewDisabled={isRunning} /> )} /> diff --git a/web/app/components/datasets/documents/create-from-pipeline/process-documents/header.tsx b/web/app/components/datasets/documents/create-from-pipeline/process-documents/header.tsx index 1ca9840a6a..04c50249a0 100644 --- a/web/app/components/datasets/documents/create-from-pipeline/process-documents/header.tsx +++ b/web/app/components/datasets/documents/create-from-pipeline/process-documents/header.tsx @@ -6,12 +6,14 @@ import { RiSearchEyeLine } from '@remixicon/react' type HeaderProps = { onReset: () => void resetDisabled: boolean + previewDisabled: boolean onPreview?: () => void } const Header = ({ onReset, resetDisabled, + previewDisabled, onPreview, }: HeaderProps) => { const { t } = useTranslation() @@ -28,6 +30,7 @@ const Header = ({ variant='secondary-accent' onClick={onPreview} className='gap-x-0.5' + disabled={previewDisabled} > {t('datasetPipeline.addDocuments.stepTwo.previewChunks')} diff --git a/web/app/components/datasets/documents/create-from-pipeline/process-documents/index.tsx b/web/app/components/datasets/documents/create-from-pipeline/process-documents/index.tsx index 0cb8f472d7..edb74a667c 100644 --- a/web/app/components/datasets/documents/create-from-pipeline/process-documents/index.tsx +++ b/web/app/components/datasets/documents/create-from-pipeline/process-documents/index.tsx @@ -8,6 +8,7 @@ import { useConfigurations, useInitialData } from '@/app/components/rag-pipeline type ProcessDocumentsProps = { dataSourceNodeId: string ref: React.RefObject + isRunning: boolean onProcess: () => void onPreview: () => void onSubmit: (data: Record) => void @@ -16,6 +17,7 @@ type ProcessDocumentsProps = { const ProcessDocuments = ({ dataSourceNodeId, + isRunning, onProcess, onPreview, onSubmit, @@ -36,8 +38,9 @@ const ProcessDocuments = ({ schema={schema} onSubmit={onSubmit} onPreview={onPreview} + isRunning={isRunning} /> - + ) } diff --git a/web/app/components/datasets/documents/detail/settings/pipeline-settings/index.tsx b/web/app/components/datasets/documents/detail/settings/pipeline-settings/index.tsx index 95e67f9466..0ebed7ab35 100644 --- a/web/app/components/datasets/documents/detail/settings/pipeline-settings/index.tsx +++ b/web/app/components/datasets/documents/detail/settings/pipeline-settings/index.tsx @@ -8,12 +8,13 @@ import Loading from '@/app/components/base/loading' import ProcessDocuments from './process-documents' import LeftHeader from './left-header' import { usePipelineExecutionLog, useRunPublishedPipeline } from '@/service/use-pipeline' -import type { PublishedPipelineRunPreviewResponse } from '@/models/pipeline' -import { DatasourceType } from '@/models/pipeline' +import type { OnlineDriveFile, PublishedPipelineRunPreviewResponse } from '@/models/pipeline' +import { DatasourceType, OnlineDriveFileType } from '@/models/pipeline' import { noop } from 'lodash-es' import { useDatasetDetailContextWithSelector } from '@/context/dataset-detail' import { useRouter } from 'next/navigation' import { useInvalidDocumentDetail, useInvalidDocumentList } from '@/service/knowledge/use-document' +import { isFile } from '../../../create-from-pipeline/data-source/online-drive/utils' type PipelineSettingsProps = { datasetId: string @@ -76,6 +77,21 @@ const PipelineSettings = ({ return onlineDocuments }, [lastRunData]) + const onlineDriveFiles = useMemo(() => { + const onlineDriveFiles: OnlineDriveFile[] = [] + if (lastRunData?.datasource_type === DatasourceType.onlineDrive) { + const { key } = lastRunData.datasource_info + const isFileType = isFile(key) + const filePathList = key.split('/') + onlineDriveFiles.push({ + key, + displayName: `${isFileType ? filePathList.pop() : filePathList[filePathList.length - 2]}${isFileType ? '' : '/'}`, + type: isFileType ? OnlineDriveFileType.file : OnlineDriveFileType.folder, + }) + } + return onlineDriveFiles + }, [lastRunData]) + const { mutateAsync: runPublishedPipeline, isIdle, isPending } = useRunPublishedPipeline() const handlePreviewChunks = useCallback(async (data: Record) => { @@ -117,10 +133,10 @@ const PipelineSettings = ({ onSuccess: () => { invalidDocumentList() invalidDocumentDetail() - push(`/datasets/${datasetId}/documents/${documentId}`) + push(`/datasets/${datasetId}/documents`) }, }) - }, [datasetId, documentId, invalidDocumentDetail, invalidDocumentList, lastRunData, pipelineId, push, runPublishedPipeline]) + }, [datasetId, invalidDocumentDetail, invalidDocumentList, lastRunData, pipelineId, push, runPublishedPipeline]) const onClickProcess = useCallback(() => { isPreview.current = false @@ -160,6 +176,7 @@ const PipelineSettings = ({ onProcess={onClickProcess} onPreview={onClickPreview} onSubmit={handleSubmit} + isRunning={isPending} /> @@ -169,9 +186,10 @@ const PipelineSettings = ({
diff --git a/web/app/components/datasets/documents/detail/settings/pipeline-settings/process-documents/index.tsx b/web/app/components/datasets/documents/detail/settings/pipeline-settings/process-documents/index.tsx index da30f4be90..f53ddd3cc0 100644 --- a/web/app/components/datasets/documents/detail/settings/pipeline-settings/process-documents/index.tsx +++ b/web/app/components/datasets/documents/detail/settings/pipeline-settings/process-documents/index.tsx @@ -7,6 +7,7 @@ import { useConfigurations, useInitialData } from '@/app/components/rag-pipeline type ProcessDocumentsProps = { datasourceNodeId: string lastRunInputData: Record + isRunning: boolean ref: React.RefObject onProcess: () => void onPreview: () => void @@ -16,6 +17,7 @@ type ProcessDocumentsProps = { const ProcessDocuments = ({ datasourceNodeId, lastRunInputData, + isRunning, onProcess, onPreview, onSubmit, @@ -35,8 +37,9 @@ const ProcessDocuments = ({ schema={schema} onSubmit={onSubmit} onPreview={onPreview} + isRunning={isRunning} /> - + ) }