import SvgIcon from '@/components/svg-icon'; import { useIsDarkTheme } from '@/components/theme-provider'; import { toFixed } from '@/utils/common-util'; import { CircleQuestionMark } from 'lucide-react'; import { FC, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { LogTabs } from './dataset-common'; import { DatasetFilter } from './dataset-filter'; import FileLogsTable from './overview-table'; interface StatCardProps { title: string; value: number; icon: JSX.Element; children?: JSX.Element; } const StatCard: FC = ({ title, value, children, icon }) => { return (

{title}

{icon}
{value}
{children}
); }; interface CardFooterProcessProps { total: number; success: number; failed: number; } const CardFooterProcess: FC = ({ total, success = 0, failed = 0, }) => { const { t } = useTranslation(); const successPrecentage = total ? (success / total) * 100 : 0; const failedPrecentage = total ? (failed / total) * 100 : 0; const completedPercentage = total ? ((success + failed) / total) * 100 : 0; return (
{success || 0} {t('knowledgeDetails.success')}
{failed || 0} {t('knowledgeDetails.failed')}
{toFixed(completedPercentage) as string}% {t('knowledgeDetails.completed')}
); }; const FileLogsPage: FC = () => { const { t } = useTranslation(); const [active, setActive] = useState<(typeof LogTabs)[keyof typeof LogTabs]>( LogTabs.FILE_LOGS, ); const topMockData = { totalFiles: { value: 2827, precent: 12.5, }, downloads: { value: 28, success: 8, failed: 2, }, processing: { value: 156, success: 8, failed: 2, }, }; const mockData = useMemo(() => { if (active === LogTabs.FILE_LOGS) { return Array(30) .fill(0) .map((_, i) => ({ id: i === 0 ? '952734' : `14`, fileName: 'PRD for DealBees 1.2 (1).txt', source: 'GitHub', pipeline: i === 0 ? 'data demo for...' : i === 1 ? 'test' : 'kiki’s demo', startDate: '14/03/2025 14:53:39', task: i === 0 ? 'chunck' : 'Parser', status: i === 0 ? 3 : i === 1 ? 4 : i === 2 ? 1 : 0, statusName: i === 0 ? 'Success' : i === 1 ? 'Failed' : i === 2 ? 'Running' : 'Pending', })); } if (active === LogTabs.DATASET_LOGS) { return Array(8) .fill(0) .map((_, i) => ({ id: i === 0 ? '952734' : `14`, fileName: 'PRD for DealBees 1.2 (1).txt', source: 'GitHub', startDate: '14/03/2025 14:53:39', task: i === 0 ? 'chunck' : 'Parser', pipeline: i === 0 ? 'data demo for...' : i === 1 ? 'test' : 'kiki’s demo', status: i === 0 ? 'Success' : i === 1 ? 'Failed' : i === 2 ? 'Running' : 'Pending', })); } }, [active]); const pagination = { current: 1, pageSize: 30, total: 100, }; const changeActiveLogs = (active: (typeof LogTabs)[keyof typeof LogTabs]) => { setActive(active); }; const handlePaginationChange = (page: number, pageSize: number) => { console.log('Pagination changed:', { page, pageSize }); }; const isDark = useIsDarkTheme(); return (
{/* Stats Cards */}
) : ( ) } >
{topMockData.totalFiles.precent > 0 ? '+' : ''} {topMockData.totalFiles.precent}%{' '} from last week
) : ( ) } > ) : ( ) } >
{/* Tabs & Search */} {/* Table */}
); }; export default FileLogsPage;