From 71f18d69098f1af728c51ef447dd12301dad0995 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20FAMIBELLE-PRONZOLA?= Date: Thu, 28 Nov 2024 07:55:51 +0400 Subject: [PATCH] Improve ListVersion component --- components/versions/list-versions.js | 97 +++++++++++++++++++++------- 1 file changed, 75 insertions(+), 22 deletions(-) diff --git a/components/versions/list-versions.js b/components/versions/list-versions.js index 21067f8..c5d0bf4 100644 --- a/components/versions/list-versions.js +++ b/components/versions/list-versions.js @@ -1,5 +1,4 @@ - -import * as React from 'react' +import {forwardRef, useRef, useState} from 'react' import PropTypes from 'prop-types' import Table from '@mui/material/Table' import TableBody from '@mui/material/TableBody' @@ -11,7 +10,10 @@ import Paper from '@mui/material/Paper' import Button from '@mui/material/Button' import {TableVirtuoso} from 'react-virtuoso' import {Box, Typography} from '@mui/material' +import LogoutCountdown from '../session/logout-countdown.js' +import VersionDialog from './version-dialog.js' import {formatDate} from '@/lib/format.js' +import {compareVersion} from '@/lib/directus.js' const columns = [ { @@ -28,15 +30,15 @@ const columns = [ ] const VirtuosoTableComponents = { - Scroller: React.forwardRef((props, ref) => ( + Scroller: forwardRef((props, ref) => ( )), Table: props => ( ), - TableHead: React.forwardRef((props, ref) => ), + TableHead: forwardRef((props, ref) => ), TableRow, - TableBody: React.forwardRef((props, ref) => ), + TableBody: forwardRef((props, ref) => ), } function fixedHeaderContent() { @@ -57,7 +59,32 @@ function fixedHeaderContent() { ) } -function rowContent(_index, row) { +function rowContent({ + row, + accessToken, + userId, + countdownRef, + setError, + setIsErrorAlertOpen, + setIsOpenComparison, + setVersionData +}) { + const handleButtonClick = async versionId => { + const version = await compareVersion({ + accessToken, + userId, + versionId, + countdownRef, + setError, + setIsErrorAlertOpen + }) + + if (version) { + setVersionData(version) + setIsOpenComparison(true) + } + } + return ( <> {columns.map(column => ( @@ -65,32 +92,58 @@ function rowContent(_index, row) { key={column.dataKey} align={column.numeric || false ? 'right' : 'left'} > - {column.dataKey === 'date_created' ? formatDate(row[column.dataKey], 'Pp') : } + {column.dataKey === 'date_created' + ? formatDate(row[column.dataKey], 'Pp') + : } ))} ) } -export default function ListVersions({collection, data}) { +export default function ListVersions({ + collection, + data, + accessToken, + userId, + setError, + setIsErrorAlertOpen +}) { + const countdownRef = useRef() + + const [isOpenComparison, setIsOpenComparison] = useState(false) + const [versionData, setVersionData] = useState(null) + return ( - - - {collection} - - - - - + <> + + + {collection} + + + rowContent({ + index, row, accessToken, userId, countdownRef, setError, setIsErrorAlertOpen, setIsOpenComparison, setVersionData + })} + /> + + + {isOpenComparison && ( + + )} + + ) } ListVersions.propTypes = { collection: PropTypes.oneOf(['titres', 'articles']).isRequired, - data: PropTypes.array.isRequired + data: PropTypes.array.isRequired, + accessToken: PropTypes.string.isRequired, + userId: PropTypes.string.isRequired, + setError: PropTypes.func.isRequired, + setIsErrorAlertOpen: PropTypes.func.isRequired }