UX: alarm-status, ablehnen-button, annika-footer, map polish

* Alarm-Status ist jetzt nur 'aktiv' wenn ein echter Push-Channel (Telegram
  mit Token+Chat oder E-Mail mit Adresse) konfiguriert ist. UI-only zählt
  nicht mehr als eingerichteter Alarm.
* Ablehnen-Button in der Wohnungsliste: flat_rejections (migration v4)
  speichert pro-User-Ablehnungen, abgelehnte Flats fallen aus Liste und
  Karte raus. Wiederholbar pro User unabhängig.
* Footer 'Programmiert für Annika ♥' erscheint nur auf Seiten, wenn annika
  angemeldet ist.
* Map: Hinweistext unter leerer Karte entfernt; alle Zoom-Mechanismen
  deaktiviert (Scrollrad, Doppelklick, Box, Touch, Tastatur, +/- Buttons).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Moritz 2026-04-21 12:09:44 +02:00
parent 376551213a
commit 42377f0b67
5 changed files with 97 additions and 18 deletions

View file

@ -29,4 +29,9 @@
<main class="max-w-6xl mx-auto px-6 py-6 space-y-6">
{% block content %}{% endblock %}
</main>
{% if user.username == 'annika' %}
<footer class="text-center text-xs text-slate-500 py-6">
Programmiert für Annika ♥
</footer>
{% endif %}
{% endblock %}

View file

@ -100,12 +100,6 @@
<section class="view-map">
<div class="card p-3">
<div id="flats-map" data-flats='{{ map_points | tojson }}'></div>
{% if not map_points %}
<p class="mt-3 text-xs text-slate-500">
Keine Koordinaten für passende Wohnungen vorhanden —
entweder sind noch keine neuen Flats geocoded worden oder die Filter lassen noch nichts durch.
</p>
{% endif %}
</div>
</section>
@ -153,11 +147,20 @@
</button>
</form>
{% endif %}
<form method="post" action="/actions/reject"
hx-post="/actions/reject" hx-target="#wohnungen-body" hx-swap="outerHTML">
<input type="hidden" name="csrf" value="{{ csrf }}">
<input type="hidden" name="flat_id" value="{{ f.id }}">
<button class="btn btn-ghost text-sm" type="submit"
hx-confirm="Ablehnen und aus der Liste entfernen?">
Ablehnen
</button>
</form>
</div>
</div>
{% else %}
<div class="px-4 py-8 text-center text-slate-500">
{% if alert_label == 'nicht eingerichtet' %}
{% if not has_filters %}
Bitte zuerst Filter einstellen, damit passende Wohnungen angezeigt werden.
{% else %}
Aktuell keine Wohnung, die alle Filter erfüllt.