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 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 runDocumentByIds = useRunDocument();
 
 
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
- runDocumentByIds({
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 onClick={handleOperationIconClick} className={styles.operationIcon}>
 
 
 
 
 
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
- flex-basis: 100%;
3
  padding: 32px;
4
  }
5
 
 
1
  .fileManagerWrapper {
2
+ width: 100%;
3
  padding: 32px;
4
  }
5