From bd9b52d39a516b690b9bad2c17caf17365411c6a Mon Sep 17 00:00:00 2001 From: Manus Date: Wed, 10 Jun 2026 09:15:38 +0000 Subject: [PATCH] =?UTF-8?q?Checkpoint:=20Ajout=20de=20gardes=20d=C3=A9fens?= =?UTF-8?q?ives=20sur=20e.nom=20et=20e.code=20dans=20filteredEtabs=20et=20?= =?UTF-8?q?sortedEtabs=20:=20conversion=20explicite=20en=20string=20avant?= =?UTF-8?q?=20toLowerCase/localeCompare=20pour=20=C3=A9viter=20le=20crash?= =?UTF-8?q?=20quand=20un=20=C3=A9tablissement=20a=20un=20nom=20non-string?= =?UTF-8?q?=20(undefined,=20null,=20objet).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/src/pages/DsiOpex.tsx | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/client/src/pages/DsiOpex.tsx b/client/src/pages/DsiOpex.tsx index 7c6d019..62f3273 100644 --- a/client/src/pages/DsiOpex.tsx +++ b/client/src/pages/DsiOpex.tsx @@ -699,8 +699,10 @@ export default function DsiOpex() { const filteredEtabs = useMemo(() => { return etablissementsRecalcules.filter(e => { - if (search && !e.nom.toLowerCase().includes(search.toLowerCase()) && - !e.code.toLowerCase().includes(search.toLowerCase())) return false; + const nom = typeof e.nom === 'string' ? e.nom : String(e.nom ?? ''); + const code = typeof e.code === 'string' ? e.code : String(e.code ?? ''); + if (search && !nom.toLowerCase().includes(search.toLowerCase()) && + !code.toLowerCase().includes(search.toLowerCase())) return false; return true; }); }, [etablissementsRecalcules, search]); @@ -708,7 +710,11 @@ export default function DsiOpex() { const sortedEtabs = useMemo(() => { const arr = [...filteredEtabs]; if (sortCol === 'total') arr.sort((a, b) => sortDir === 'asc' ? a.total - b.total : b.total - a.total); - else if (sortCol === 'nom') arr.sort((a, b) => sortDir === 'asc' ? a.nom.localeCompare(b.nom) : b.nom.localeCompare(a.nom)); + else if (sortCol === 'nom') arr.sort((a, b) => { + const na = typeof a.nom === 'string' ? a.nom : String(a.nom ?? ''); + const nb = typeof b.nom === 'string' ? b.nom : String(b.nom ?? ''); + return sortDir === 'asc' ? na.localeCompare(nb) : nb.localeCompare(na); + }); return arr; }, [filteredEtabs, sortCol, sortDir]);