diff --git a/nummi/main/static/main/css/plot.css b/nummi/main/static/main/css/plot.css
index 8271130..9651596 100644
--- a/nummi/main/static/main/css/plot.css
+++ b/nummi/main/static/main/css/plot.css
@@ -24,18 +24,15 @@ table.full-width col.bar {width: auto}
right: 0;
border-radius: var(--radius) 0 0 var(--radius);
}
-.plot td.bar.m div:not(.tot) {
- background: var(--red-1);
-}
-.plot td.bar.p div:not(.tot) {
- background: var(--green-1);
-}
+.plot td.bar.m div {background: var(--red-1)}
+.plot td.bar.p div {background: var(--green-1)}
.plot td.bar div.tot {
z-index: 10;
height: .5rem;
- background: black;
}
+.plot td.bar.m div.tot {background: var(--red)}
+.plot td.bar.p div.tot {background: var(--green)}
.plot td.bar div.tot span {
position: absolute;
display: inline-block;
diff --git a/nummi/main/templates/main/category_form.html b/nummi/main/templates/main/category_form.html
index c7046d4..c2c1782 100644
--- a/nummi/main/templates/main/category_form.html
+++ b/nummi/main/templates/main/category_form.html
@@ -11,6 +11,9 @@
+
{% endblock %}
{% block body %}
@@ -23,5 +26,7 @@
{% if form.instance.transactions %}
{% translate "Transactions" %}
{% include "main/table/transaction.html" %}
+ {% translate "History" %}
+ {% include "main/plot/history.html" %}
{% endif %}
{% endblock %}
diff --git a/nummi/main/views.py b/nummi/main/views.py
index 921ade7..f462130 100644
--- a/nummi/main/views.py
+++ b/nummi/main/views.py
@@ -228,11 +228,30 @@ class CategoryUpdateView(NummiUpdateView):
def get_context_data(self, **kwargs):
data = super().get_context_data(**kwargs)
category = data["form"].instance
+ _history = (
+ category.transaction_set.values(month=models.functions.TruncMonth("date"))
+ .annotate(
+ sum_p=models.Sum("value", filter=models.Q(value__gt=0)),
+ sum_m=models.Sum("value", filter=models.Q(value__lt=0)),
+ sum=models.Sum("value"),
+ )
+ .order_by("-month")
+ )
+
return data | {
"transactions": category.transaction_set.all()[:8],
"transactions_url": reverse_lazy(
"category_transactions", args=(category.pk,)
),
+ "history": {
+ "data": _history,
+ "max": max(
+ _history.aggregate(
+ max=models.Max("sum_p", default=0),
+ min=-models.Min("sum_m", default=0),
+ ).values(),
+ ),
+ },
}