import { useTranslation } from 'react-i18next'
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table'
import { Badge } from '@/components/ui/badge'
import { Button } from '@/components/ui/button'
import type { FileResult } from '@/types/api'
interface ResultsTableProps {
files: FileResult[]
onViewResult?: (fileId: number) => void
onDownloadPDF?: (fileId: number) => void
}
export default function ResultsTable({ files, onViewResult, onDownloadPDF }: ResultsTableProps) {
const { t } = useTranslation()
const getStatusBadge = (status: FileResult['status']) => {
switch (status) {
case 'completed':
return {t('processing.completed')}
case 'processing':
return {t('processing.processing')}
case 'failed':
return {t('processing.failed')}
default:
return {t('processing.pending')}
}
}
const formatTime = (seconds?: number) => {
if (!seconds) return 'N/A'
return `${seconds.toFixed(2)}s`
}
return (
{t('results.filename')}
{t('results.status')}
{t('results.processingTime')}
{t('results.actions')}
{files.length === 0 ? (
{t('results.noResults')}
) : (
files.map((file) => (
{file.filename}
{getStatusBadge(file.status)}
{formatTime(file.processing_time)}
{file.status === 'completed' && (
<>
>
)}
{file.status === 'failed' && file.error && (
{file.error}
)}
))
)}
)
}