feat: Ringdiagramm faerbt Legende und Mitte nach Budget

Eingefaerbt war bisher nur die Listen-Darstellung der Ausgaben-Anteile. In der
Kreis-Darstellung blieben die Betraege der Legende grau, und die Summe in der
Mitte sagte gar nichts ueber den Stand.

Jetzt tragen beide die Aussage: gruen im geplanten Rahmen, rot darueber. Faehrt
man ein Segment an, zeigt die Mitte dessen Betrag – dann gilt dort das Budget
dieser Kategorie, sonst das des Ganzen.

Fuer die Mitte liefert der Server jetzt auch das Geplante ueber ALLE
Ausgaben-Einheiten, nicht nur ueber die mit Ausgaben: Der Monatsplan umfasst
auch, wofuer noch nichts ausgegeben wurde.

Ohne Plan bleibt alles, wie es war. Der Donut faerbt nur, wenn ein Segment die
Angabe mitbringt – die Budget-Karte, die dieselbe Komponente benutzt, bleibt
also unberuehrt.

Der Test hat dabei gleich einen Fehler gefunden: ``_units`` ist ein Generator,
und ich lief zweimal darueber – beim zweiten Mal war er leer und das Geplante
immer 0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Guido
2026-08-30 14:13:49 +02:00
co-authored by Claude Opus 5
parent 4d3b9a8207
commit 63056ae76a
5 changed files with 51 additions and 7 deletions
+6
View File
@@ -209,3 +209,9 @@ def test_ausgabenanteile_nennen_das_geplante(admin):
plane(max(1, ist - 10000))
assert zeile()["over"] is True, "ueberschritten"
# Und die Mitte des Ringdiagramms bekommt dieselbe Grundlage fuer das
# Ganze – sonst faerbte sich die Legende, die Summe aber nicht.
ganz = admin.get("/api/dashboard/expense-share").json()
assert ganz["total_planned"] > 0
assert ganz["total_over"] == (ganz["total"] > ganz["total_planned"])