import ChunkMethodModal from '@/components/chunk-method-modal'; import SvgIcon from '@/components/svg-icon'; import { useFetchNextDocumentList, useSetNextDocumentStatus, } from '@/hooks/document-hooks'; import { useSetSelectedRecord } from '@/hooks/logic-hooks'; import { useSelectParserList } from '@/hooks/user-setting-hooks'; import { getExtension } from '@/utils/document-util'; import { Divider, Flex, Switch, Table, Typography } from 'antd'; import type { ColumnsType } from 'antd/es/table'; import { useTranslation } from 'react-i18next'; import CreateFileModal from './create-file-modal'; import DocumentToolbar from './document-toolbar'; import { useChangeDocumentParser, useCreateEmptyDocument, useGetRowSelection, useHandleUploadDocument, useHandleWebCrawl, useNavigateToOtherPage, useRenameDocument, useShowMetaModal, } from './hooks'; import ParsingActionCell from './parsing-action-cell'; import ParsingStatusCell from './parsing-status-cell'; import RenameModal from './rename-modal'; import WebCrawlModal from './web-crawl-modal'; import FileUploadModal from '@/components/file-upload-modal'; import { IDocumentInfo } from '@/interfaces/database/document'; import { formatDate } from '@/utils/date'; import styles from './index.less'; import { SetMetaModal } from './set-meta-modal'; const { Text } = Typography; const KnowledgeFile = () => { const { searchString, documents, pagination, handleInputChange } = useFetchNextDocumentList(); const parserList = useSelectParserList(); const { setDocumentStatus } = useSetNextDocumentStatus(); const { toChunk } = useNavigateToOtherPage(); const { currentRecord, setRecord } = useSetSelectedRecord(); const { renameLoading, onRenameOk, renameVisible, hideRenameModal, showRenameModal, } = useRenameDocument(currentRecord.id); const { createLoading, onCreateOk, createVisible, hideCreateModal, showCreateModal, } = useCreateEmptyDocument(); const { changeParserLoading, onChangeParserOk, changeParserVisible, hideChangeParserModal, showChangeParserModal, } = useChangeDocumentParser(currentRecord.id); const { documentUploadVisible, hideDocumentUploadModal, showDocumentUploadModal, onDocumentUploadOk, documentUploadLoading, } = useHandleUploadDocument(); const { webCrawlUploadVisible, hideWebCrawlUploadModal, showWebCrawlUploadModal, onWebCrawlUploadOk, webCrawlUploadLoading, } = useHandleWebCrawl(); const { t } = useTranslation('translation', { keyPrefix: 'knowledgeDetails', }); const { showSetMetaModal, hideSetMetaModal, setMetaVisible, setMetaLoading, onSetMetaModalOk, } = useShowMetaModal(currentRecord.id); const rowSelection = useGetRowSelection(); const columns: ColumnsType = [ { title: t('name'), dataIndex: 'name', key: 'name', fixed: 'left', render: (text: any, { id, thumbnail, name }) => (
toChunk(id)}> {thumbnail ? ( ) : ( )} {text}
), }, { title: t('chunkNumber'), dataIndex: 'chunk_num', key: 'chunk_num', }, { title: t('uploadDate'), dataIndex: 'create_time', key: 'create_time', render(value) { return formatDate(value); }, }, { title: t('chunkMethod'), dataIndex: 'parser_id', key: 'parser_id', render: (text) => { return parserList.find((x) => x.value === text)?.label; }, }, { title: t('enabled'), key: 'status', dataIndex: 'status', render: (_, { status, id }) => ( <> { setDocumentStatus({ status: e, documentId: id }); }} /> ), }, { title: t('parsingStatus'), dataIndex: 'run', key: 'run', render: (text, record) => { return ; }, }, { title: t('action'), key: 'action', render: (_, record) => ( ), }, ]; const finalColumns = columns.map((x) => ({ ...x, className: `${styles.column}`, })); return (

{t('dataset')}

{t('datasetDescription')}

{setMetaVisible && ( )} ); }; export default KnowledgeFile;