Ajoute "Total des versements par compte" (+ par année) sur le dashboard SAS
Réutilise total_par_type_par_compte / total_par_type_par_compte_par_annee, déjà exposés par /dashboard/api/stats pour /dashboard/compte -- aucun changement backend nécessaire, juste extrait la clé "versement" par compte au lieu de la garder scindée par type.
This commit is contained in:
@@ -176,6 +176,32 @@
|
|||||||
return { annee, items };
|
return { annee, items };
|
||||||
}).filter((y) => y.items.length);
|
}).filter((y) => y.items.length);
|
||||||
},
|
},
|
||||||
|
// total_par_type_par_compte is already in the stats response --
|
||||||
|
// it's the same répartition-level query /dashboard/compte uses for
|
||||||
|
// its own (single-compte) type breakdown, just never sliced down
|
||||||
|
// to one type across every compte before now. No new backend
|
||||||
|
// field needed, just pull out the "versement" entry per compte.
|
||||||
|
versementsParCompteItems() {
|
||||||
|
if (!this.stats) return [];
|
||||||
|
return Object.entries(this.stats.total_par_type_par_compte)
|
||||||
|
.filter(([, parType]) => parType.versement !== undefined)
|
||||||
|
.map(([compte, parType]) => ({ label: compte, value: parType.versement }))
|
||||||
|
.sort((a, b) => b.value - a.value);
|
||||||
|
},
|
||||||
|
// Small multiples, one per year -- same source as typeItemsParAnnee
|
||||||
|
// above (total_par_type_par_compte_par_annee, already there for
|
||||||
|
// /dashboard/compte's own per-année breakdown).
|
||||||
|
versementsParCompteParAnnee() {
|
||||||
|
if (!this.stats) return [];
|
||||||
|
return this.stats.annees.map((annee) => {
|
||||||
|
const parCompte = this.stats.total_par_type_par_compte_par_annee[annee] || {};
|
||||||
|
const items = Object.entries(parCompte)
|
||||||
|
.filter(([, parType]) => parType.versement !== undefined)
|
||||||
|
.map(([compte, parType]) => ({ label: compte, value: parType.versement }))
|
||||||
|
.sort((a, b) => b.value - a.value);
|
||||||
|
return { annee, items };
|
||||||
|
}).filter((y) => y.items.length);
|
||||||
|
},
|
||||||
totalCA() {
|
totalCA() {
|
||||||
if (!this.stats) return 0;
|
if (!this.stats) return 0;
|
||||||
return Object.values(this.stats.ca_par_annee).reduce((a, b) => a + b, 0);
|
return Object.values(this.stats.ca_par_annee).reduce((a, b) => a + b, 0);
|
||||||
|
|||||||
@@ -59,6 +59,18 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<section class="figli-chart-section">
|
||||||
|
<h2>Total des versements par compte</h2>
|
||||||
|
<p class="figli-note">Montant total versé à chaque compte associé, toutes années confondues.</p>
|
||||||
|
<h-bar-chart :items="versementsParCompteItems" :format-value="formatEurRound"></h-bar-chart>
|
||||||
|
<div class="figli-year-hbar-grid">
|
||||||
|
<div class="figli-year-hbar-card" v-for="y in versementsParCompteParAnnee" :key="y.annee">
|
||||||
|
<div class="figli-year-hbar-title">{{ y.annee }}</div>
|
||||||
|
<h-bar-chart :items="y.items" :format-value="formatEurRound" compact></h-bar-chart>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
{% endverbatim %}
|
{% endverbatim %}
|
||||||
|
|||||||
Reference in New Issue
Block a user