Ajout du paneau mois en cours + correction bug validation en masse

This commit is contained in:
ocroguennec committed 2026-08-15 11:10:27 +02:00
1 parent b78fbbb101
commit 6f8f7bab01
6 files changed
+779 -406

No files matched your search

+25 -6
View File
@@ -424,6 +424,8 @@ export default function Dashboard() {
const [capitalMensuelData, setCapitalMensuelData] = useState([]);
const [plateformes, setPlateformes] = useState([]);
const [platLoaded, setPlatLoaded] = useState(false);
const [investissements, setInvestissements] = useState([]);
const [drillRefreshKey, setDrillRefreshKey] = useState(0);
/* ── drillCell : cellule sélectionnée dans le TIP — par défaut mois courant toutes plateformes ── */
const _now = new Date();
@@ -466,14 +468,30 @@ export default function Dashboard() {
api.get('/plateformes').then(d => { setPlateformes(d); setPlatLoaded(true); }).catch(() => { setPlatLoaded(true); });
}, []);
const loadDashboardData = () => {
if (!activeId && activeView !== 'all') return Promise.resolve();
const scopeParams = activeView === 'all' ? { scope: 'all' } : undefined;
return Promise.all([
api.get('/dashboard', scopeParams).then(setData),
api.get('/investissements', scopeParams).then(setInvestissements).catch(() => setInvestissements([])),
]);
};
useEffect(() => {
if (!activeId && activeView !== 'all') return;
setData(null);
setLoading(true);
const params = activeView === 'all' ? { scope: 'all' } : undefined;
api.get('/dashboard', params).then(setData).finally(() => setLoading(false));
loadDashboardData().finally(() => setLoading(false));
/* eslint-disable-next-line */
}, [activeView, activeId]);
/* Rafraîchit le tableau de bord + le panneau de détail après une validation en masse
de projections (bulk) depuis le DrillCellPanel — sans quoi l'écran restait figé sur
les anciennes projections malgré des remboursements bien créés en base. */
const onDrillBulkDone = () => {
loadDashboardData();
setDrillRefreshKey(k => k + 1);
};
const ready = activeView === 'all' ? investisseurs.length > 0 : !!activeId;
if (!ready) return <div className="card text-muted">Sélectionnez un compte investisseur.</div>;
if (loading || !data) return <div className="card text-muted">Chargement…</div>;
@@ -505,7 +523,7 @@ export default function Dashboard() {
<>
<div className="topbar"><h2><PageIcon name="dashboard" />Tableau de bord — {viewTitle}</h2></div>
<InteretsChartProvider netMode={netMode} pfuRates={pfuRates} activeView={activeView} activeId={activeId}>
<InteretsChartProvider key={drillRefreshKey} netMode={netMode} pfuRates={pfuRates} activeView={activeView} activeId={activeId}>
{/* ── KPI + sélecteur année ── */}
<div style={{ display: 'flex', gap: 12, alignItems: 'stretch', marginBottom: 16 }}>
@@ -545,8 +563,9 @@ export default function Dashboard() {
activeView={activeView}
activeId={activeId}
plateformes={plateformes}
investissements={[]}
onBulkDone={() => {}}
investissements={investissements}
refreshKey={drillRefreshKey}
onBulkDone={onDrillBulkDone}
onEditRecu={(r) => {
const q = new URLSearchParams({
'edit-remb': r.id,