From 11e81843e7ba191f71520d5daa9981f4a4d0a8c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Menet=20Micka=C3=ABl?= Date: Thu, 15 Feb 2024 15:30:35 +0100 Subject: [PATCH] add textfield searchByName --- src/pages/SuiviPage.jsx | 55 +++++++++++++++++++++++++++++------------ 1 file changed, 39 insertions(+), 16 deletions(-) diff --git a/src/pages/SuiviPage.jsx b/src/pages/SuiviPage.jsx index a0f2a6a0..77c20be7 100644 --- a/src/pages/SuiviPage.jsx +++ b/src/pages/SuiviPage.jsx @@ -1,5 +1,8 @@ import Card from '@mui/material/Card'; import CardContent from '@mui/material/CardContent'; +import InputAdornment from '@mui/material/InputAdornment'; +import SearchOutlinedIcon from '@mui/icons-material/SearchOutlined'; +import TextField from '@mui/material/TextField'; import { Typography } from '../ui/Typography'; import Box from '@mui/material/Box'; import Stack from '@mui/material/Stack'; @@ -43,6 +46,7 @@ import { IconAsc } from '../ui/Icons/IconAsc'; export function SuiviPage() { const surveyUnits = useSurveyUnits(); const [campaign, setCampaign] = useState(''); + const [searchText, setSearchText] = useState(''); const campaigns = useMemo( () => Array.from(new Set(surveyUnits.map(su => su.campaign))).map(c => ({ @@ -52,6 +56,9 @@ export function SuiviPage() { [surveyUnits] ); const [tab, setTab] = useState('stats'); + const handleSearchTextChange = event => { + setSearchText(event.target.value); + }; return ( @@ -73,6 +80,21 @@ export function SuiviPage() { placeholder="Sélectionnez..." options={campaigns} /> + + + + ), + }} + /> )} @@ -91,7 +113,7 @@ export function SuiviPage() { {tab === 'stats' ? ( ) : ( - + )} @@ -140,7 +162,7 @@ function SuiviStats({ surveyUnits }) { * @param {string} campaign * @param {SurveyUnit[]} surveyUnits */ -function SuiviTable({ surveyUnits, campaign }) { +function SuiviTable({ surveyUnits, campaign, searchText }) { const [sortConfig, setSortConfig] = useState({ key: 'unit', direction: 'asc' }); const toggleSort = key => { let direction = 'asc'; @@ -178,7 +200,15 @@ function SuiviTable({ surveyUnits, campaign }) { }; const filteredSurveyUnits = surveyUnits - .filter(su => su.campaign === campaign) + .filter(su => { + const person = getprivilegedPerson(su); + return ( + su.campaign === campaign && + (searchText === '' || + person.lastName.toUpperCase().includes(searchText.toUpperCase()) || + person.firstName.toUpperCase().includes(searchText.toUpperCase())) + ); + }) .sort((a, b) => { const isAscending = sortConfig.direction === 'asc'; let compareA, compareB; @@ -209,6 +239,7 @@ function SuiviTable({ surveyUnits, campaign }) { compareA = getOutcomeIndex(a, order); compareB = getOutcomeIndex(b, order); if (!isAscending) { + // Inverse les valeurs pour le tri descendant compareA = compareA === Infinity ? -Infinity : compareA; compareB = compareB === Infinity ? -Infinity : compareB; } @@ -217,9 +248,9 @@ function SuiviTable({ surveyUnits, campaign }) { compareA = a.id; compareB = b.id; } - return compareValues(compareA, compareB, isAscending); }); + const defaultSortIcon = ; return ( @@ -228,9 +259,7 @@ function SuiviTable({ surveyUnits, campaign }) { - + Unité @@ -248,9 +277,7 @@ function SuiviTable({ surveyUnits, campaign }) { - + Nom/Prénom @@ -272,9 +299,7 @@ function SuiviTable({ surveyUnits, campaign }) { - + Status de l'unité @@ -298,9 +323,7 @@ function SuiviTable({ surveyUnits, campaign }) { Dernier essai de contact - + Bilan de contact