feat: ajoute bascule table/timeline dans ListVersions

This commit is contained in:
2025-07-23 17:41:00 +04:00
parent 824408afa9
commit e5b2671289
+61 -12
View File
@@ -8,10 +8,15 @@ import TableHead from '@mui/material/TableHead'
import TableRow from '@mui/material/TableRow' import TableRow from '@mui/material/TableRow'
import Paper from '@mui/material/Paper' import Paper from '@mui/material/Paper'
import Button from '@mui/material/Button' import Button from '@mui/material/Button'
import ToggleButton from '@mui/material/ToggleButton'
import ToggleButtonGroup from '@mui/material/ToggleButtonGroup'
import ViewListIcon from '@mui/icons-material/ViewList'
import TimelineIcon from '@mui/icons-material/Timeline'
import {TableVirtuoso} from 'react-virtuoso' import {TableVirtuoso} from 'react-virtuoso'
import {Box, Typography} from '@mui/material' import {Box, Typography} from '@mui/material'
import SessionExpired from '../session/session-expired.js' import SessionExpired from '../session/session-expired.js'
import VersionDialog from './version-dialog.js' import VersionDialog from './version-dialog.js'
import VersionTimeline from './version-timeline.js'
import {formatDate} from '@/lib/format.js' import {formatDate} from '@/lib/format.js'
import {compareVersion} from '@/lib/directus.js' import {compareVersion} from '@/lib/directus.js'
@@ -110,29 +115,73 @@ export default function ListVersions({
setIsErrorAlertOpen setIsErrorAlertOpen
}) { }) {
const countdownRef = useRef() const countdownRef = useRef()
const [viewMode, setViewMode] = useState('table')
const [isOpenComparison, setIsOpenComparison] = useState(false) const [isOpenComparison, setIsOpenComparison] = useState(false)
const [versionCompare, setVersionCompare] = useState(null) const [versionCompare, setVersionCompare] = useState(null)
const versionData = data.find(({id}) => id === versionCompare?.versionId) const versionData = data.find(({id}) => id === versionCompare?.versionId)
const handleViewModeChange = (event, newViewMode) => {
if (newViewMode !== null) {
setViewMode(newViewMode)
}
}
return ( return (
<> <>
<Box> <Box>
<Typography variant='button' textAlign='center' sx={{display: 'block', fontWeight: 'bold'}}> <Box sx={{
{collection} display: 'flex',
</Typography> justifyContent: 'space-between',
<Paper style={{height: 350, width: '100%', marginBlock: 5}}> alignItems: 'center',
<TableVirtuoso mb: 2
}}
>
<Typography variant='button' sx={{fontWeight: 'bold'}}>
{collection}
</Typography>
<ToggleButtonGroup
exclusive
color='primary'
size='small'
value={viewMode}
onChange={handleViewModeChange}
>
<ToggleButton value='table' aria-label='vue tableau'>
<ViewListIcon sx={{mr: 1}} />
Table
</ToggleButton>
<ToggleButton value='timeline' aria-label='vue chronologique'>
<TimelineIcon sx={{mr: 1}} />
Timeline
</ToggleButton>
</ToggleButtonGroup>
</Box>
{viewMode === 'table' ? (
<Paper style={{height: 350, width: '100%', marginBlock: 5}}>
<TableVirtuoso
data={data}
components={VirtuosoTableComponents}
fixedHeaderContent={fixedHeaderContent}
itemContent={(index, row) => rowContent({
index, row, accessToken, userId, countdownRef, setError, setIsErrorAlertOpen, setIsOpenComparison, setVersionCompare
})}
/>
</Paper>
) : (
<VersionTimeline
collection={collection}
data={data} data={data}
components={VirtuosoTableComponents} accessToken={accessToken}
fixedHeaderContent={fixedHeaderContent} userId={userId}
itemContent={(index, row) => rowContent({ setError={setError}
index, row, accessToken, userId, countdownRef, setError, setIsErrorAlertOpen, setIsOpenComparison, setVersionCompare setIsErrorAlertOpen={setIsErrorAlertOpen}
})}
/> />
</Paper> )}
</Box> </Box>
{isOpenComparison && ( {isOpenComparison && (
<VersionDialog versionData={versionData} versionCompare={versionCompare} isOpen={isOpenComparison} setIsOpen={setIsOpenComparison} /> <VersionDialog versionData={versionData} versionCompare={versionCompare} isOpen={isOpenComparison} setIsOpen={setIsOpenComparison} />
)} )}