Spaces:
Running
Running
import React from 'react'; | |
import ReplayHeader from '@/components/replay/ReplayHeader'; | |
import DatasetSelector from '@/components/replay/DatasetSelector'; | |
import EpisodePlayer from '@/components/replay/EpisodePlayer'; | |
import ReplayVisualizer from '@/components/replay/ReplayVisualizer'; | |
// Mock data for now, this would be fetched from the backend | |
const mockDatasets = [ | |
{ id: 'dataset-1', name: 'Kitchen Task - Day 1' }, | |
{ id: 'dataset-2', name: 'Assembly Task - Morning' }, | |
{ id: 'dataset-3', name: 'Sorting Cans - Run 4' }, | |
]; | |
const mockEpisodes = { | |
'dataset-1': [ | |
{ id: 'ep-1', name: 'Episode 1', duration: 62 }, | |
{ id: 'ep-2', name: 'Episode 2', duration: 58 }, | |
], | |
'dataset-2': [ | |
{ id: 'ep-3', name: 'Episode 1', duration: 120 }, | |
], | |
'dataset-3': [ | |
{ id: 'ep-4', name: 'Episode 1', duration: 45 }, | |
{ id: 'ep-5', name: 'Episode 2', duration: 47 }, | |
{ id: 'ep-6', name: 'Episode 3', duration: 43 }, | |
], | |
}; | |
const ReplayDataset = () => { | |
// Normally you would fetch datasets and handle loading/error states | |
const [selectedDataset, setSelectedDataset] = React.useState<string | null>(mockDatasets.length > 0 ? mockDatasets[0].id : null); | |
const [selectedEpisode, setSelectedEpisode] = React.useState<string | null>(null); | |
const episodes = selectedDataset ? mockEpisodes[selectedDataset] || [] : []; | |
React.useEffect(() => { | |
// When dataset changes, reset episode selection | |
setSelectedEpisode(null); | |
}, [selectedDataset]); | |
return ( | |
<div className="min-h-screen bg-black text-white flex flex-col p-4 sm:p-6 lg:p-8"> | |
<ReplayHeader /> | |
<div className="flex-1 flex flex-col lg:flex-row gap-6 mt-6"> | |
<div className="w-full lg:w-1/3 xl:w-1/4 flex flex-col gap-6"> | |
<DatasetSelector | |
datasets={mockDatasets} | |
selectedDataset={selectedDataset} | |
onSelectDataset={setSelectedDataset} | |
/> | |
<EpisodePlayer | |
episodes={episodes} | |
selectedEpisode={selectedEpisode} | |
onSelectEpisode={setSelectedEpisode} | |
/> | |
</div> | |
<div className="flex-1"> | |
<ReplayVisualizer /> | |
</div> | |
</div> | |
</div> | |
); | |
}; | |
export default ReplayDataset; | |