balibabu
commited on
Commit
·
182a723
1
Parent(s):
3accb26
fix: add spin to parsing status icon of dataset table (#649)
Browse files### What problem does this PR solve?
fix: add spin to parsing status icon of dataset table
#648
### Type of change
- [x] Bug Fix (non-breaking change which fixes an issue)
- web/src/hooks/documentHooks.ts +6 -0
- web/src/pages/add-knowledge/components/knowledge-file/hooks.ts +35 -0
- web/src/pages/add-knowledge/components/knowledge-file/parsing-status-cell/index.less +11 -0
- web/src/pages/add-knowledge/components/knowledge-file/parsing-status-cell/index.tsx +12 -8
- web/src/pages/file-manager/index.less +1 -1
web/src/hooks/documentHooks.ts
CHANGED
@@ -7,6 +7,7 @@ import { useCallback, useMemo, useState } from 'react';
|
|
7 |
import { IHighlight } from 'react-pdf-highlighter';
|
8 |
import { useDispatch, useSelector } from 'umi';
|
9 |
import { useGetKnowledgeSearchParams } from './routeHook';
|
|
|
10 |
|
11 |
export const useGetDocumentUrl = (documentId: string) => {
|
12 |
const url = useMemo(() => {
|
@@ -222,3 +223,8 @@ export const useRunDocument = () => {
|
|
222 |
|
223 |
return runDocumentByIds;
|
224 |
};
|
|
|
|
|
|
|
|
|
|
|
|
7 |
import { IHighlight } from 'react-pdf-highlighter';
|
8 |
import { useDispatch, useSelector } from 'umi';
|
9 |
import { useGetKnowledgeSearchParams } from './routeHook';
|
10 |
+
import { useOneNamespaceEffectsLoading } from './storeHooks';
|
11 |
|
12 |
export const useGetDocumentUrl = (documentId: string) => {
|
13 |
const url = useMemo(() => {
|
|
|
223 |
|
224 |
return runDocumentByIds;
|
225 |
};
|
226 |
+
|
227 |
+
export const useSelectRunDocumentLoading = () => {
|
228 |
+
const loading = useOneNamespaceEffectsLoading('kFModel', ['document_run']);
|
229 |
+
return loading;
|
230 |
+
};
|
web/src/pages/add-knowledge/components/knowledge-file/hooks.ts
CHANGED
@@ -2,7 +2,9 @@ import { useSetModalState, useTranslate } from '@/hooks/commonHooks';
|
|
2 |
import {
|
3 |
useCreateDocument,
|
4 |
useFetchDocumentList,
|
|
|
5 |
useSaveDocumentName,
|
|
|
6 |
useSetDocumentParser,
|
7 |
useUploadDocument,
|
8 |
} from '@/hooks/documentHooks';
|
@@ -283,3 +285,36 @@ export const useHandleUploadDocument = () => {
|
|
283 |
showDocumentUploadModal,
|
284 |
};
|
285 |
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
import {
|
3 |
useCreateDocument,
|
4 |
useFetchDocumentList,
|
5 |
+
useRunDocument,
|
6 |
useSaveDocumentName,
|
7 |
+
useSelectRunDocumentLoading,
|
8 |
useSetDocumentParser,
|
9 |
useUploadDocument,
|
10 |
} from '@/hooks/documentHooks';
|
|
|
285 |
showDocumentUploadModal,
|
286 |
};
|
287 |
};
|
288 |
+
|
289 |
+
export const useHandleRunDocumentByIds = (id: string) => {
|
290 |
+
const loading = useSelectRunDocumentLoading();
|
291 |
+
const runDocumentByIds = useRunDocument();
|
292 |
+
const [currentId, setCurrentId] = useState<string>('');
|
293 |
+
const isLoading = loading && currentId !== '' && currentId === id;
|
294 |
+
|
295 |
+
const handleRunDocumentByIds = async (
|
296 |
+
documentId: string,
|
297 |
+
knowledgeBaseId: string,
|
298 |
+
isRunning: boolean,
|
299 |
+
) => {
|
300 |
+
if (isLoading) {
|
301 |
+
return;
|
302 |
+
}
|
303 |
+
setCurrentId(documentId);
|
304 |
+
try {
|
305 |
+
await runDocumentByIds({
|
306 |
+
doc_ids: [documentId],
|
307 |
+
run: isRunning ? 2 : 1,
|
308 |
+
knowledgeBaseId,
|
309 |
+
});
|
310 |
+
setCurrentId('');
|
311 |
+
} catch (error) {
|
312 |
+
setCurrentId('');
|
313 |
+
}
|
314 |
+
};
|
315 |
+
|
316 |
+
return {
|
317 |
+
handleRunDocumentByIds,
|
318 |
+
loading: isLoading,
|
319 |
+
};
|
320 |
+
};
|
web/src/pages/add-knowledge/components/knowledge-file/parsing-status-cell/index.less
CHANGED
@@ -23,3 +23,14 @@
|
|
23 |
cursor: pointer;
|
24 |
}
|
25 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
cursor: pointer;
|
24 |
}
|
25 |
}
|
26 |
+
.operationIconSpin {
|
27 |
+
animation: spin 1s linear infinite;
|
28 |
+
@keyframes spin {
|
29 |
+
0% {
|
30 |
+
transform: rotate(0deg);
|
31 |
+
}
|
32 |
+
100% {
|
33 |
+
transform: rotate(360deg);
|
34 |
+
}
|
35 |
+
}
|
36 |
+
}
|
web/src/pages/add-knowledge/components/knowledge-file/parsing-status-cell/index.tsx
CHANGED
@@ -2,12 +2,13 @@ import { ReactComponent as CancelIcon } from '@/assets/svg/cancel.svg';
|
|
2 |
import { ReactComponent as RefreshIcon } from '@/assets/svg/refresh.svg';
|
3 |
import { ReactComponent as RunIcon } from '@/assets/svg/run.svg';
|
4 |
import { useTranslate } from '@/hooks/commonHooks';
|
5 |
-
import { useRunDocument } from '@/hooks/documentHooks';
|
6 |
import { IKnowledgeFile } from '@/interfaces/database/knowledge';
|
7 |
import { Badge, DescriptionsProps, Flex, Popover, Space, Tag } from 'antd';
|
|
|
8 |
import { useTranslation } from 'react-i18next';
|
9 |
import reactStringReplace from 'react-string-replace';
|
10 |
import { RunningStatus, RunningStatusMap } from '../constant';
|
|
|
11 |
import { isParserRunning } from '../utils';
|
12 |
import styles from './index.less';
|
13 |
|
@@ -81,7 +82,9 @@ export const ParsingStatusCell = ({ record }: IProps) => {
|
|
81 |
const text = record.run;
|
82 |
const runningStatus = RunningStatusMap[text];
|
83 |
const { t } = useTranslation();
|
84 |
-
const
|
|
|
|
|
85 |
|
86 |
const isRunning = isParserRunning(text);
|
87 |
|
@@ -90,11 +93,7 @@ export const ParsingStatusCell = ({ record }: IProps) => {
|
|
90 |
const label = t(`knowledgeDetails.runningStatus${text}`);
|
91 |
|
92 |
const handleOperationIconClick = () => {
|
93 |
-
|
94 |
-
doc_ids: [record.id],
|
95 |
-
run: isRunning ? 2 : 1,
|
96 |
-
knowledgeBaseId: record.kb_id,
|
97 |
-
});
|
98 |
};
|
99 |
|
100 |
return (
|
@@ -112,7 +111,12 @@ export const ParsingStatusCell = ({ record }: IProps) => {
|
|
112 |
)}
|
113 |
</Tag>
|
114 |
</Popover>
|
115 |
-
<div
|
|
|
|
|
|
|
|
|
|
|
116 |
<OperationIcon />
|
117 |
</div>
|
118 |
</Flex>
|
|
|
2 |
import { ReactComponent as RefreshIcon } from '@/assets/svg/refresh.svg';
|
3 |
import { ReactComponent as RunIcon } from '@/assets/svg/run.svg';
|
4 |
import { useTranslate } from '@/hooks/commonHooks';
|
|
|
5 |
import { IKnowledgeFile } from '@/interfaces/database/knowledge';
|
6 |
import { Badge, DescriptionsProps, Flex, Popover, Space, Tag } from 'antd';
|
7 |
+
import classNames from 'classnames';
|
8 |
import { useTranslation } from 'react-i18next';
|
9 |
import reactStringReplace from 'react-string-replace';
|
10 |
import { RunningStatus, RunningStatusMap } from '../constant';
|
11 |
+
import { useHandleRunDocumentByIds } from '../hooks';
|
12 |
import { isParserRunning } from '../utils';
|
13 |
import styles from './index.less';
|
14 |
|
|
|
82 |
const text = record.run;
|
83 |
const runningStatus = RunningStatusMap[text];
|
84 |
const { t } = useTranslation();
|
85 |
+
const { handleRunDocumentByIds, loading } = useHandleRunDocumentByIds(
|
86 |
+
record.id,
|
87 |
+
);
|
88 |
|
89 |
const isRunning = isParserRunning(text);
|
90 |
|
|
|
93 |
const label = t(`knowledgeDetails.runningStatus${text}`);
|
94 |
|
95 |
const handleOperationIconClick = () => {
|
96 |
+
handleRunDocumentByIds(record.id, record.kb_id, isRunning);
|
|
|
|
|
|
|
|
|
97 |
};
|
98 |
|
99 |
return (
|
|
|
111 |
)}
|
112 |
</Tag>
|
113 |
</Popover>
|
114 |
+
<div
|
115 |
+
onClick={handleOperationIconClick}
|
116 |
+
className={classNames(styles.operationIcon, {
|
117 |
+
[styles.operationIconSpin]: loading,
|
118 |
+
})}
|
119 |
+
>
|
120 |
<OperationIcon />
|
121 |
</div>
|
122 |
</Flex>
|
web/src/pages/file-manager/index.less
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
.fileManagerWrapper {
|
2 |
-
|
3 |
padding: 32px;
|
4 |
}
|
5 |
|
|
|
1 |
.fileManagerWrapper {
|
2 |
+
width: 100%;
|
3 |
padding: 32px;
|
4 |
}
|
5 |
|