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