Some improvements to the visual part of the dashboard

This commit is contained in:
JKuijperM 2026-01-23 22:38:08 +01:00
parent 2a692534d0
commit ff87956fd5
2 changed files with 70 additions and 32 deletions

View File

@ -15,6 +15,12 @@
<!-- Filters -->
<!-- ========================= -->
<div>
<a href="{% url 'dashboard' %}?period=this_month">Este mes</a> |
<a href="{% url 'dashboard' %}?period=last_month">Mes anterior</a> |
<a href="{% url 'dashboard' %}?period=this_year">Este año</a>
</div>
<form method="get" class="filters">
<label>
Año:
@ -70,7 +76,7 @@
<div class="kpi">
<h3>Total</h3>
<p>{{ kpi_total }}</p>
<p>{{ kpi_total }}</p>
</div>
<div class="kpi">
@ -96,17 +102,16 @@
</p>
{% endif %}
<p>
<div>
Diferencia:
{% if kpi_difference > 0 %}
<span></span>
{% elif kpi_difference < 0 %}
<span></span>
{% if kpi_trend == "up" %}
<span style="color:red;"> {{ kpi_difference|floatformat:2 }}€</span>
{% elif kpi_trend == "down" %}
<span style="color:green;"> {{ kpi_difference|floatformat:2 }}€</span>
{% else %}
<span>=</span>
<span>0€</span>
{% endif %}
<strong>{{ kpi_difference|floatformat:2 }}</strong>
</p>
</div>
<p>
Variación:
{% if kpi_percentage is not None %}
@ -123,26 +128,30 @@
<!-- ========================= -->
<h2>Gastos por categoría</h2>
<table>
<thead>
<tr>
<th>Categoría</th>
<th>Total</th>
</tr>
</thead>
<tbody>
{% for row in by_category %}
{% if not by_category %}
<p>No hay gastos para este periodo.</p>
{% else %}
<table>
<thead>
<tr>
<td>{{ row.category__name }}</td>
<td>{{ row.total }}</td>
<th>Categoría</th>
<th>Total</th>
</tr>
{% empty %}
<tr>
<td colspan="2">Sin datos</td>
</tr>
{% endfor %}
</tbody>
</table>
</thead>
<tbody>
{% for row in by_category %}
<tr>
<td>{{ row.category__name }}</td>
<td>{{ row.total }}</td>
</tr>
{% empty %}
<tr>
<td colspan="2">Sin datos</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
{% if compare_enabled %}
<h3>Comparativa por categoría</h3>
@ -164,9 +173,9 @@
<td>{{ row.previous }}</td>
<td>
{% if row.difference > 0 %}
▲ {{ row.difference }}
<span style="color:red;">▲ {{ row.difference }}</span>
{% elif row.difference < 0 %}
▼ {{ row.difference }}
<span style="color:green;">▼ {{ row.difference }}</span>
{% else %}
=
{% endif %}

View File

@ -115,6 +115,7 @@ def dashboard(request):
# ------------------
year = _get_int(request.GET.get('year'))
month = _get_int(request.GET.get('month'))
period = request.GET.get('period')
current_year = date.today().year
@ -128,6 +129,24 @@ def dashboard(request):
# -----------------
expenses = Expense.objects.filter(owner=request.user)
today = date.today()
if period == 'this_month':
selected_year = today.year
selected_month = today.month
elif period == 'last_month':
if today.month == 1:
selected_year = today.year - 1
selected_month = 12
else:
selected_year = today.year
selected_month = today.month
elif period == 'this_year':
selected_year = today.year
selected_month = None
expenses_filtered = expenses.filter(date__year=selected_year)
if selected_month:
@ -241,6 +260,15 @@ def dashboard(request):
if previous_total:
percentage = (difference / previous_total) * 100
kpi_trend = None
if difference is not None:
if difference > 0:
kpi_trend = 'up'
elif difference < 0:
kpi_trend = 'down'
else:
kpi_trend = 'equal'
# ------------------
# Previous expenses by category
# ------------------
@ -295,4 +323,5 @@ def dashboard(request):
'kpi_difference': difference,
'kpi_percentage': percentage,
'category_comparison': category_comparison,
'kpi_trend': kpi_trend,
})