feat: add shared task assignments and quick win sorting

This commit is contained in:
2026-04-15 13:18:50 +02:00
parent f8f3641811
commit 4233175067
18 changed files with 414 additions and 55 deletions

View File

@@ -11,6 +11,9 @@
<option value="all" {% if filters.status == 'all' %}selected{% endif %}>Alle</option>
<option value="open" {% if filters.status == 'open' %}selected{% endif %}>Offen</option>
<option value="soon" {% if filters.status == 'soon' %}selected{% endif %}>Bald fällig</option>
<option value="today" {% if filters.status == 'today' %}selected{% endif %}>Heute fällig</option>
<option value="tomorrow" {% if filters.status == 'tomorrow' %}selected{% endif %}>Morgen fällig</option>
<option value="day_after_tomorrow" {% if filters.status == 'day_after_tomorrow' %}selected{% endif %}>Übermorgen fällig</option>
<option value="overdue" {% if filters.status == 'overdue' %}selected{% endif %}>Überfällig</option>
<option value="completed" {% if filters.status == 'completed' %}selected{% endif %}>Erledigt</option>
</select>
@@ -48,4 +51,3 @@
{% endfor %}
</section>
{% endblock %}

View File

@@ -75,8 +75,8 @@
<small class="calendar-task__person" lang="de">
{% if task.completed_by_user %}
{{ task.completed_by_user.name|hyphenate_de }}
{% elif task.assigned_user %}
{{ task.assigned_user.name|hyphenate_de }}
{% elif task.assigned_users %}
{{ task.assignee_label|hyphenate_de }}
{% else %}
{{ 'Ohne Zuweisung'|hyphenate_de }}
{% endif %}
@@ -108,8 +108,8 @@
<small class="calendar-task__person" lang="de">
{% if task.completed_by_user %}
{{ task.completed_by_user.name|hyphenate_de }}
{% elif task.assigned_user %}
{{ task.assigned_user.name|hyphenate_de }}
{% elif task.assigned_users %}
{{ task.assignee_label|hyphenate_de }}
{% else %}
{{ 'Ohne Zuweisung'|hyphenate_de }}
{% endif %}

View File

@@ -46,13 +46,41 @@
<section class="stack">
<div class="section-heading">
<h2>Bald fällig</h2>
<span class="section-heading__count">{{ sections.soon|length }}</span>
<span class="section-heading__count">{{ sections.due_today|length }}</span>
</div>
<div class="task-grid">
{% for task in sections.soon %}
{% for task in sections.due_today %}
{{ task_card(task, current_user) }}
{% else %}
<div class="empty-state">Gerade nichts, was in den nächsten Tagen drängt.</div>
<div class="empty-state">Heute ist gerade nichts mehr auf Kante.</div>
{% endfor %}
</div>
</section>
<section class="stack">
<div class="section-heading">
<h2>Morgen fällig</h2>
<span class="section-heading__count">{{ sections.due_tomorrow|length }}</span>
</div>
<div class="task-grid">
{% for task in sections.due_tomorrow %}
{{ task_card(task, current_user) }}
{% else %}
<div class="empty-state">Für morgen sieht es gerade entspannt aus.</div>
{% endfor %}
</div>
</section>
<section class="stack">
<div class="section-heading">
<h2>Übermorgen fällig</h2>
<span class="section-heading__count">{{ sections.due_day_after_tomorrow|length }}</span>
</div>
<div class="task-grid">
{% for task in sections.due_day_after_tomorrow %}
{{ task_card(task, current_user) }}
{% else %}
<div class="empty-state">Auch übermorgen ist noch nichts Drängendes drin.</div>
{% endfor %}
</div>
</section>
@@ -85,4 +113,3 @@
</div>
</section>
{% endblock %}

View File

@@ -35,6 +35,13 @@
{% for error in form.assigned_user_id.errors %}<small class="error">{{ error }}</small>{% endfor %}
</div>
<div class="field">
{{ form.assigned_user_secondary_id.label }}
{{ form.assigned_user_secondary_id() }}
<small class="muted">Wenn du hier noch jemanden auswählst, zählen die Punkte pro Person halbiert.</small>
{% for error in form.assigned_user_secondary_id.errors %}<small class="error">{{ error }}</small>{% endfor %}
</div>
<div class="field">
{{ form.due_date.label }}
{{ form.due_date() }}