Checkpoint: Ajout de gardes défensives sur e.nom et e.code dans filteredEtabs et sortedEtabs : conversion explicite en string avant toLowerCase/localeCompare pour éviter le crash quand un établissement a un nom non-string (undefined, null, objet).
This commit is contained in:
@@ -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]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user