Files
YG-Datasets/easy-dataset-main/app/projects/[projectId]/image-datasets/[datasetId]/page.js

83 lines
2.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
'use client';
import { Container, Box, CircularProgress, Alert } from '@mui/material';
import { useParams } from 'next/navigation';
import { useTranslation } from 'react-i18next';
import useImageDatasetDetails from '../hooks/useImageDatasetDetails';
import ImageDatasetHeader from '../components/ImageDatasetHeader';
import DatasetContent from '../components/DatasetContent';
import DatasetSidebar from '../components/DatasetSidebar';
export default function ImageDatasetDetailPage() {
const { projectId, datasetId } = useParams();
const { t } = useTranslation();
const {
currentDataset,
loading,
confirming,
unconfirming,
datasetsAllCount,
datasetsConfirmCount,
updateDataset,
handleNavigate,
handleConfirm,
handleUnconfirm,
handleDelete
} = useImageDatasetDetails(projectId, datasetId);
// 加载状态
if (loading) {
return (
<Container maxWidth="xl" sx={{ mt: 4 }}>
<Box sx={{ display: 'flex', justifyContent: 'center', alignItems: 'center', height: '70vh' }}>
<CircularProgress />
</Box>
</Container>
);
}
// 无数据状态
if (!currentDataset) {
return (
<Container maxWidth="xl" sx={{ mt: 4 }}>
<Alert severity="error">{t('imageDatasets.notFound', '数据集不存在')}</Alert>
</Container>
);
}
return (
<Container maxWidth="xl" sx={{ mt: 4, mb: 4 }}>
{/* 顶部导航栏 */}
<ImageDatasetHeader
projectId={projectId}
datasetsAllCount={datasetsAllCount}
datasetsConfirmCount={datasetsConfirmCount}
confirming={confirming}
unconfirming={unconfirming}
currentDataset={currentDataset}
onNavigate={handleNavigate}
onConfirm={handleConfirm}
onUnconfirm={handleUnconfirm}
onDelete={handleDelete}
/>
{/* 主要布局:左右分栏 */}
<Box sx={{ display: 'flex', gap: 3, alignItems: 'flex-start' }}>
{/* 左侧主要内容区域 */}
<DatasetContent
dataset={currentDataset}
projectId={projectId}
onAnswerChange={async newAnswer => {
// 直接传递答案字符串DatasetContent 已经处理了格式转换
await updateDataset({ answer: newAnswer });
}}
/>
{/* 右侧固定侧边栏 */}
<DatasetSidebar dataset={currentDataset} projectId={projectId} onUpdate={updateDataset} />
</Box>
</Container>
);
}