Amélioration

This commit is contained in:
2026-06-18 08:32:27 +02:00
parent 03b7b87538
commit 08c70b7c55
+26 -9
View File
@@ -289,9 +289,12 @@ export default function Plateformes() {
/* ── État sélecteurs ── */
/* selectedPlatName et activeTab sont dans l'URL pour survivre au retour arrière */
const selectedPlatName = searchParams.get('plat') || null;
const setSelectedPlatName = (nom) => setSearchParams(p => { const n = new URLSearchParams(p); n.set('plat', nom); return n; }, { replace: true });
const [selectedDetenteurId, setSelectedDetenteurId] = useState('all');
const [selectedYear, setSelectedYear] = useState(String(new Date().getFullYear()));
const setSelectedPlatName = (nom) => {
try { localStorage.setItem('cl_plat_selected', nom); } catch {}
setSearchParams(p => { const n = new URLSearchParams(p); n.set('plat', nom); return n; }, { replace: true });
};
const [selectedDetenteurId, setSelectedDetenteurId] = useState(() => { try { return localStorage.getItem('cl_plat_detenteur') || 'all'; } catch { return 'all'; } });
const [selectedYear, setSelectedYear] = useState(() => { try { return localStorage.getItem('cl_plat_year') || String(new Date().getFullYear()); } catch { return String(new Date().getFullYear()); } });
const [windowStart, setWindowStart] = useState(0);
const [drDetaille, setDrDetaille] = useState(() => {
try { return localStorage.getItem('cl_dr_plat_detaille') === 'true'; } catch { return false; }
@@ -326,8 +329,11 @@ export default function Plateformes() {
const [pfuRates, setPfuRates] = useState([]);
/* ── État UI ── */
const activeTab = searchParams.get('tab') || 'remboursements';
const setActiveTab = (tab) => setSearchParams(p => { const n = new URLSearchParams(p); n.set('tab', tab); return n; }, { replace: true });
const activeTab = searchParams.get('tab') || (() => { try { return localStorage.getItem('cl_plat_tab') || 'remboursements'; } catch { return 'remboursements'; } })();
const setActiveTab = (tab) => {
try { localStorage.setItem('cl_plat_tab', tab); } catch {}
setSearchParams(p => { const n = new URLSearchParams(p); n.set('tab', tab); return n; }, { replace: true });
};
const [listFocused, setListFocused] = useState(false);
/* ── Chargement ── */
@@ -390,10 +396,12 @@ export default function Plateformes() {
return Object.values(map).sort((a, b) => b.investi - a.investi);
}, [allRows, plats]);
/* ── Init sélecteur plateforme ── */
/* ── Init sélecteur plateforme — préfère localStorage ── */
useEffect(() => {
if (!selectedPlatName && platOptions.length > 0) {
setSelectedPlatName(platOptions[0].nom);
const saved = (() => { try { return localStorage.getItem('cl_plat_selected'); } catch { return null; } })();
const target = platOptions.find(p => p.nom === saved) ? saved : platOptions[0].nom;
setSelectedPlatName(target);
}
}, [platOptions, selectedPlatName]);
@@ -416,8 +424,17 @@ export default function Plateformes() {
];
}, [platRows, investisseurs]);
/* ── Reset détenteur quand plateforme change ── */
useEffect(() => { setSelectedDetenteurId('all'); }, [selectedPlatName]);
/* ── Reset détenteur quand plateforme change (skip restauration initiale) ── */
const isFirstPlatChange = useRef(true);
useEffect(() => {
if (isFirstPlatChange.current) { isFirstPlatChange.current = false; return; }
setSelectedDetenteurId('all');
try { localStorage.setItem('cl_plat_detenteur', 'all'); } catch {}
}, [selectedPlatName]);
/* ── Persistance selectedYear et selectedDetenteurId ── */
useEffect(() => { try { localStorage.setItem('cl_plat_year', selectedYear); } catch {} }, [selectedYear]);
useEffect(() => { try { localStorage.setItem('cl_plat_detenteur', selectedDetenteurId); } catch {} }, [selectedDetenteurId]);
/* ── IDs des plateformes correspondant à la sélection nom + détenteur ── */
const filteredPlatIds = useMemo(() => {