'use client' import type { FC } from 'react' import React, { useCallback, useEffect, useMemo, useState } from 'react' import { useBoolean } from 'ahooks' import { ArrowDownIcon } from '@heroicons/react/24/outline' import { pick, uniq } from 'lodash-es' import { RiEditLine } from '@remixicon/react' import { useRouter } from 'next/navigation' import { useTranslation } from 'react-i18next' import dayjs from 'dayjs' import { Globe01 } from '../../base/icons/src/vender/line/mapsAndTravel' import ChunkingModeLabel from '../common/chunking-mode-label' import FileTypeIcon from '../../base/file-uploader/file-type-icon' import s from './style.module.css' import RenameModal from './rename-modal' import BatchAction from './detail/completed/common/batch-action' import cn from '@/utils/classnames' import Tooltip from '@/app/components/base/tooltip' import Toast from '@/app/components/base/toast' import { asyncRunSafe } from '@/utils' import { formatNumber } from '@/utils/format' import NotionIcon from '@/app/components/base/notion-icon' import ProgressBar from '@/app/components/base/progress-bar' import { ChunkingMode, DataSourceType, DocumentActionType, type SimpleDocumentDetail } from '@/models/datasets' import type { CommonResponse } from '@/models/common' import useTimestamp from '@/hooks/use-timestamp' import { useDatasetDetailContextWithSelector as useDatasetDetailContext } from '@/context/dataset-detail' import type { Props as PaginationProps } from '@/app/components/base/pagination' import Pagination from '@/app/components/base/pagination' import Checkbox from '@/app/components/base/checkbox' import { useDocumentArchive, useDocumentDelete, useDocumentDisable, useDocumentEnable } from '@/service/knowledge/use-document' import { extensionToFileType } from '@/app/components/datasets/hit-testing/utils/extension-to-file-type' import useBatchEditDocumentMetadata from '../metadata/hooks/use-batch-edit-document-metadata' import EditMetadataBatchModal from '@/app/components/datasets/metadata/edit-metadata-batch/modal' import StatusItem from './status-item' import Operations from './operations' export const renderTdValue = (value: string | number | null, isEmptyStyle = false) => { return (
e.stopPropagation()}>
{embeddingAvailable && (
|
{t('datasetDocuments.list.table.header.fileName')}
|
{t('datasetDocuments.list.table.header.chunkingMode')} | {t('datasetDocuments.list.table.header.words')} | {t('datasetDocuments.list.table.header.hitCount')} |
{t('datasetDocuments.list.table.header.uploadTime')}
|
{t('datasetDocuments.list.table.header.status')} | {t('datasetDocuments.list.table.header.action')} |
e.stopPropagation()}>
|
{doc?.data_source_type === DataSourceType.NOTION &&
{doc.name}
{
e.stopPropagation()
handleShowRenameModal(doc)
}}
>
|
|
{renderCount(doc.word_count)} | {renderCount(doc.hit_count)} | {formatTime(doc.created_at, t('datasetHitTesting.dateTimeFormat') as string)} |
{
(['indexing', 'splitting', 'parsing', 'cleaning'].includes(doc.indexing_status) && doc?.data_source_type === DataSourceType.NOTION)
? |
|