expenses_manager/expenses_manager/expenses/templates/goals/list.html
JKuijperM c371e4cdc3 Mejoras de accesibilidad en formularios, progreso y navegacion
- Anade la utilidad .sr-only en base.css para labels ocultos
  visualmente pero accesibles a lectores de pantalla.
- dashboard.html: labels sr-only en los selects de cuenta/ano/mes del
  formulario de filtros; ARIA completo (role=progressbar,
  aria-valuemin/max/now/label/valuetext) en la barra de progreso del
  widget de objetivos; corrige el bug real de esa barra, que usaba
  goal.percentage en vez de goal.bar_width y podia desbordar el 100%;
  corrige colspan="7" a colspan="5" en la fila vacia de gastos
  recientes (la tabla tiene 5 columnas).
- expense_list.html: id + label sr-only en los selects de ano/mes/
  cuenta; label explicito para el select de categoria; role="group"
  y aria-label en el bloque de filtros por etiquetas (con
  aria-hidden en el texto "Tags:" para evitar doble lectura);
  paginacion pasada de <div> a <nav aria-label="Paginacion de
  gastos">; corrige colspan="4" a colspan="6" en el estado vacio de
  la tabla (6 columnas).
- goals/list.html: mismo ARIA de progreso que en dashboard.html;
  <h2>Objetivos</h2> a <h1>, para que la pagina empiece en h1 como
  el resto.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-28 13:29:35 +02:00

65 lines
2.0 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{% extends "expenses/base.html" %}
{% load l10n %}
{% block title %}
Objetivos
{% endblock %}
{% block content %}
<h1>Objetivos</h1>
<a class="btn btn-primary" href="{% url 'goal_create' %}"> Nuevo objetivo</a>
<div class="table-wrap">
<table>
<tr>
<th>Nombre</th>
<th>Tipo</th>
<th>Progreso</th>
<th></th>
</tr>
{% for goal in goals %}
<tr>
<td>{{ goal.name }}</td>
<td>
{{ goal.get_kind_display }}
{% if goal.kind == "budget" %}
<small>({{ goal.get_period_display|lower }})</small>
{% endif %}
</td>
<td>
<div class="progress-container">
<span class="progress-label">
{{ goal.progress|floatformat:1 }}€ / {{ goal.target_amount|floatformat:1 }}€
</span>
<div class="progress-bar"
role="progressbar"
aria-valuemin="0"
aria-valuemax="100"
aria-valuenow="{{ goal.percentage|unlocalize }}"
aria-label="Progreso de {{ goal.name }}"
aria-valuetext="{{ goal.progress|floatformat:1 }}€ de {{ goal.target_amount|floatformat:1 }}€ ({{ goal.percentage|floatformat:1 }}%)">
<div class="progress-fill {{ goal.progress_state }}"
style="width: {{ goal.bar_width|unlocalize }}%"></div>
</div>
<span class="progress-label">
{{ goal.percentage|floatformat:1 }}%
</span>
{% if goal.is_exceeded %}
<span class="badge badge-inactive">Excedido</span>
{% endif %}
</div>
</td>
<td>
<a href="{% url 'goal_edit' goal.id %}">Editar</a>
<a href="{% url 'goal_delete' goal.id %}" class="danger">Eliminar</a>
</td>
</tr>
{% endfor %}
</table>
</div>
{% endblock %}