diff --git a/components/versions/list-versions.js b/components/versions/list-versions.js
index 01bb222..5619643 100644
--- a/components/versions/list-versions.js
+++ b/components/versions/list-versions.js
@@ -17,8 +17,11 @@ import {Box, Typography} from '@mui/material'
import SessionExpired from '../session/session-expired.js'
import VersionDialog from './version-dialog.js'
import VersionTimeline from './version-timeline.js'
+import VersionSearch from './version-search.js'
+import VersionFilters from './version-filters.js'
import {formatDate} from '@/lib/format.js'
import {compareVersion} from '@/lib/directus.js'
+import {filterVersions, getFilterStats} from '@/lib/version-utils.js'
const columns = [
{
@@ -118,9 +121,28 @@ export default function ListVersions({
const [viewMode, setViewMode] = useState('table')
const [isOpenComparison, setIsOpenComparison] = useState(false)
const [versionCompare, setVersionCompare] = useState(null)
+ const [searchTerm, setSearchTerm] = useState('')
+ const [filters, setFilters] = useState({
+ author: '',
+ dateFrom: '',
+ dateTo: '',
+ status: ''
+ })
+
+ // Filter data based on search and filters
+ const filteredData = filterVersions(data, searchTerm, filters)
+ const stats = getFilterStats(data, filteredData)
const versionData = data.find(({id}) => id === versionCompare?.versionId)
+ const handleSearchChange = newSearchTerm => {
+ setSearchTerm(newSearchTerm)
+ }
+
+ const handleFiltersChange = newFilters => {
+ setFilters(newFilters)
+ }
+
const handleViewModeChange = (event, newViewMode) => {
if (newViewMode !== null) {
setViewMode(newViewMode)
@@ -137,9 +159,16 @@ export default function ListVersions({
mb: 2
}}
>
-
- {collection}
-
+
+
+ {collection}
+
+ {stats.hidden > 0 && (
+
+ ({stats.filtered}/{stats.total} versions)
+
+ )}
+
- {viewMode === 'table' ? (
-
- rowContent({
- index, row, accessToken, userId, countdownRef, setError, setIsErrorAlertOpen, setIsOpenComparison, setVersionCompare
- })}
- />
-
+
+
+
+ {filteredData.length === 0 ? (
+
+
+ {searchTerm || Object.values(filters).some(Boolean)
+ ? 'Aucune version ne correspond aux critères de recherche'
+ : 'Aucune version disponible'}
+
+
) : (
-
+ viewMode === 'table' ? (
+
+ rowContent({
+ index, row, accessToken, userId, countdownRef, setError, setIsErrorAlertOpen, setIsOpenComparison, setVersionCompare
+ })}
+ />
+
+ ) : (
+
+ )
)}