Ajout du paneau mois en cours + correction bug validation en masse
This commit is contained in:
1 parent
b78fbbb101
commit
6f8f7bab01
6 files changed
+779
-406
No files matched your search
@@ -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,
|
||||
|
||||
Reference in new issue
Block a user