mirror of
https://git.mirrors.martin98.com/https://github.com/infiniflow/ragflow.git
synced 2025-08-13 21:35:57 +08:00
### What problem does this PR solve? feat: Disable clicking the Next button while uploading files in RunDrawer #3355 ### Type of change - [x] New Feature (non-breaking change which adds functionality)
This commit is contained in:
parent
ed72d1100b
commit
eef84a86bf
@ -18,7 +18,9 @@ const FileIcon = ({ name, id }: IProps) => {
|
|||||||
const fileThumbnail = fileThumbnails[id];
|
const fileThumbnail = fileThumbnails[id];
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setDocumentIds([id]);
|
if (id) {
|
||||||
|
setDocumentIds([id]);
|
||||||
|
}
|
||||||
}, [id, setDocumentIds]);
|
}, [id, setDocumentIds]);
|
||||||
|
|
||||||
return fileThumbnail ? (
|
return fileThumbnail ? (
|
||||||
|
@ -94,6 +94,7 @@ export interface ITestingChunk {
|
|||||||
doc_id: string;
|
doc_id: string;
|
||||||
doc_name: string;
|
doc_name: string;
|
||||||
img_id: string;
|
img_id: string;
|
||||||
|
image_id: string;
|
||||||
important_kwd: any[];
|
important_kwd: any[];
|
||||||
kb_id: string;
|
kb_id: string;
|
||||||
similarity: number;
|
similarity: number;
|
||||||
|
@ -462,13 +462,13 @@ export const useSaveGraphBeforeOpeningDebugDrawer = (show: () => void) => {
|
|||||||
const resetRet = await resetFlow();
|
const resetRet = await resetFlow();
|
||||||
// After resetting, all previous messages will be cleared.
|
// After resetting, all previous messages will be cleared.
|
||||||
if (resetRet?.code === 0) {
|
if (resetRet?.code === 0) {
|
||||||
|
show();
|
||||||
// fetch prologue
|
// fetch prologue
|
||||||
const sendRet = await send({ id });
|
const sendRet = await send({ id });
|
||||||
if (receiveMessageError(sendRet)) {
|
if (receiveMessageError(sendRet)) {
|
||||||
message.error(sendRet?.data?.message);
|
message.error(sendRet?.data?.message);
|
||||||
} else {
|
} else {
|
||||||
refetch();
|
refetch();
|
||||||
show();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -641,13 +641,13 @@ export const useBuildComponentIdSelectOptions = (nodeId?: string) => {
|
|||||||
|
|
||||||
const groupedOptions = [
|
const groupedOptions = [
|
||||||
{
|
{
|
||||||
label: <span>Component id</span>,
|
label: <span>Component Output</span>,
|
||||||
title: 'Component Id',
|
title: 'Component Output',
|
||||||
options: componentIdOptions,
|
options: componentIdOptions,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: <span>Begin input</span>,
|
label: <span>Begin Input</span>,
|
||||||
title: 'Begin input',
|
title: 'Begin Input',
|
||||||
options: query.map((x) => ({
|
options: query.map((x) => ({
|
||||||
label: x.name,
|
label: x.name,
|
||||||
value: `begin@${x.key}`,
|
value: `begin@${x.key}`,
|
||||||
|
@ -20,7 +20,7 @@ import {
|
|||||||
} from 'antd';
|
} from 'antd';
|
||||||
import { pick } from 'lodash';
|
import { pick } from 'lodash';
|
||||||
import { Link2, Trash2 } from 'lucide-react';
|
import { Link2, Trash2 } from 'lucide-react';
|
||||||
import { useCallback } from 'react';
|
import React, { useCallback, useState } from 'react';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { BeginQueryType } from '../constant';
|
import { BeginQueryType } from '../constant';
|
||||||
import {
|
import {
|
||||||
@ -32,6 +32,7 @@ import useGraphStore from '../store';
|
|||||||
import { getDrawerWidth } from '../utils';
|
import { getDrawerWidth } from '../utils';
|
||||||
import { PopoverForm } from './popover-form';
|
import { PopoverForm } from './popover-form';
|
||||||
|
|
||||||
|
import { UploadChangeParam, UploadFile } from 'antd/es/upload';
|
||||||
import styles from './index.less';
|
import styles from './index.less';
|
||||||
|
|
||||||
const RunDrawer = ({
|
const RunDrawer = ({
|
||||||
@ -49,6 +50,7 @@ const RunDrawer = ({
|
|||||||
} = useSetModalState();
|
} = useSetModalState();
|
||||||
const { setRecord, currentRecord } = useSetSelectedRecord<number>();
|
const { setRecord, currentRecord } = useSetSelectedRecord<number>();
|
||||||
const { submittable } = useHandleSubmittable(form);
|
const { submittable } = useHandleSubmittable(form);
|
||||||
|
const [isUploading, setIsUploading] = useState(false);
|
||||||
|
|
||||||
const handleShowPopover = useCallback(
|
const handleShowPopover = useCallback(
|
||||||
(idx: number) => () => {
|
(idx: number) => () => {
|
||||||
@ -80,6 +82,16 @@ const RunDrawer = ({
|
|||||||
return e?.fileList;
|
return e?.fileList;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const onChange = useCallback(
|
||||||
|
(optional: boolean) =>
|
||||||
|
({ fileList }: UploadChangeParam<UploadFile>) => {
|
||||||
|
if (!optional) {
|
||||||
|
setIsUploading(fileList.some((x) => x.status === 'uploading'));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
[],
|
||||||
|
);
|
||||||
|
|
||||||
const renderWidget = useCallback(
|
const renderWidget = useCallback(
|
||||||
(q: BeginQuery, idx: number) => {
|
(q: BeginQuery, idx: number) => {
|
||||||
const props: FormItemProps & { key: number } = {
|
const props: FormItemProps & { key: number } = {
|
||||||
@ -124,6 +136,7 @@ const RunDrawer = ({
|
|||||||
action={api.parse}
|
action={api.parse}
|
||||||
multiple
|
multiple
|
||||||
headers={{ [Authorization]: getAuthorization() }}
|
headers={{ [Authorization]: getAuthorization() }}
|
||||||
|
onChange={onChange(q.optional)}
|
||||||
>
|
>
|
||||||
<p className="ant-upload-drag-icon">
|
<p className="ant-upload-drag-icon">
|
||||||
<InboxOutlined />
|
<InboxOutlined />
|
||||||
@ -146,7 +159,7 @@ const RunDrawer = ({
|
|||||||
</Form.Item>
|
</Form.Item>
|
||||||
),
|
),
|
||||||
[BeginQueryType.Url]: (
|
[BeginQueryType.Url]: (
|
||||||
<>
|
<React.Fragment key={idx}>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
{...pick(props, ['key', 'label', 'rules'])}
|
{...pick(props, ['key', 'label', 'rules'])}
|
||||||
required={!q.optional}
|
required={!q.optional}
|
||||||
@ -190,13 +203,21 @@ const RunDrawer = ({
|
|||||||
) : null;
|
) : null;
|
||||||
}}
|
}}
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</>
|
</React.Fragment>
|
||||||
),
|
),
|
||||||
};
|
};
|
||||||
|
|
||||||
return BeginQueryTypeMap[q.type as BeginQueryType];
|
return BeginQueryTypeMap[q.type as BeginQueryType];
|
||||||
},
|
},
|
||||||
[form, handleRemoveUrl, handleShowPopover, switchVisible, t, visible],
|
[
|
||||||
|
form,
|
||||||
|
handleRemoveUrl,
|
||||||
|
handleShowPopover,
|
||||||
|
onChange,
|
||||||
|
switchVisible,
|
||||||
|
t,
|
||||||
|
visible,
|
||||||
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
const { handleRun } = useSaveGraphBeforeOpeningDebugDrawer(showChatModal!);
|
const { handleRun } = useSaveGraphBeforeOpeningDebugDrawer(showChatModal!);
|
||||||
@ -221,9 +242,9 @@ const RunDrawer = ({
|
|||||||
value.forEach((x, idx) => {
|
value.forEach((x, idx) => {
|
||||||
if (x?.originFileObj instanceof File) {
|
if (x?.originFileObj instanceof File) {
|
||||||
if (idx === 0) {
|
if (idx === 0) {
|
||||||
nextValue += `${x.name}\n\n${x.response.data}\n\n`;
|
nextValue += `${x.name}\n\n${x.response?.data}\n\n`;
|
||||||
} else {
|
} else {
|
||||||
nextValue += `${x.response.data}\n\n`;
|
nextValue += `${x.response?.data}\n\n`;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (idx === 0) {
|
if (idx === 0) {
|
||||||
@ -274,7 +295,12 @@ const RunDrawer = ({
|
|||||||
</Form>
|
</Form>
|
||||||
</Form.Provider>
|
</Form.Provider>
|
||||||
</section>
|
</section>
|
||||||
<Button type={'primary'} block onClick={onOk} disabled={!submittable}>
|
<Button
|
||||||
|
type={'primary'}
|
||||||
|
block
|
||||||
|
onClick={onOk}
|
||||||
|
disabled={!submittable || isUploading}
|
||||||
|
>
|
||||||
{t('common.next')}
|
{t('common.next')}
|
||||||
</Button>
|
</Button>
|
||||||
</Drawer>
|
</Drawer>
|
||||||
|
@ -186,7 +186,7 @@ const SearchPage = () => {
|
|||||||
}
|
}
|
||||||
>
|
>
|
||||||
<FileIcon
|
<FileIcon
|
||||||
id={item.img_id}
|
id={item.image_id}
|
||||||
name={item.docnm_kwd}
|
name={item.docnm_kwd}
|
||||||
></FileIcon>
|
></FileIcon>
|
||||||
{item.docnm_kwd}
|
{item.docnm_kwd}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user