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 |
|