gwoe-antragspruefer/app/templates/v2/components/result_row.html
Dotty Dotter 565849bd84 feat(#139,#129,#138,#141): v2-Frontend (ECOnGOOD-CD), Login-Modal, Auto-DL, OG-Cards
v2-Frontend (#139, ECOnGOOD CD Manual Juni 2024):
- app/static/v2/: tokens.css, fonts.css, v2.css, Nunito-Sans woff2, Phosphor-Icons (21 SVGs)
- app/templates/v2/: base.html + 11 Screens + 8 Component-Macros
- AppShell mit Sidebar (Lesen/Pruefen/Daten/Admin), v2-Detail mit allen Features
  (ScoreHero, MatrixMini, QuoteCard, Redline, Fraktions-Scores)
- v2 ist jetzt Default unter / — classic unter /classic
- Login-Modal in v2-Topbar mit Tabs Anmelden/Registrieren (#129)
- Phosphor-Icons in Sidebar + Topbar mit dynamischem Theme-Toggle
- Keyboard-Shortcuts (j/k/Enter/Esc/?/path), Landtag-Suche, Antrag-Historie,
  Sort-Dropdown, Matrix-Feld-Info-Modal, Bookmarks/Comments/Voting/Share/Re-Analyze

Backend-Erweiterungen:
- main.py: ~30 neue Routes (/v2/*, /antrag/{ds}, /api/auth/{login,refresh,logout},
  /api/me/merkliste/*, /api/admin/*, /v2/admin/*, OG-Cards, etc.)
- og_card.py + og_template: Open-Graph-Bilder via Playwright (#141)
- wahlprogramm_fetch.py + wahlprogramm-links.yaml: SHA-Gate Auto-DL (#138)
- auswertungen.py: BL-Filter + get_wahlperioden Helper (#137)
- auth.py: Direct-Access-Grant + Refresh-Token-Cookie

Classic-Updates:
- Header-DRY via _header.html, Auswertungen redirected, Batch-Inline raus

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 20:55:57 +02:00

67 lines
2.1 KiB
HTML
Raw Permalink 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.

{#
result_row.html — Ergebnislisten-Zeile
Props (über assessment-Dict):
assessment.score : float (010)
assessment.title : str — Antragstitel (Avenir Black, 14.5 px)
assessment.drucksache : str — Drucksache-ID
assessment.bundesland : str — Bundesland-Kürzel
assessment.parteien : list[str] — Liste der einreichenden Fraktionen
assessment.tags : list[str] — Themen-Tags (optional)
assessment.datum : str — Datum (YYYY-MM-DD oder lesbar)
assessment.href : str — Link zur Detailseite
Score-Band-Klassen:
s-high : Score >= 8 (Grün-Tint)
s-mid : Score 57 (Grau)
s-low : Score < 5 (Rot-Tint)
Verwendung:
{% from "v2/components/result_row.html" import result_row %}
{% for a in assessments %}
{{ result_row(a) }}
{% endfor %}
#}
{% macro result_row(assessment) %}
{% set score = assessment.score | float %}
{% if score >= 8 %}
{% set band = "s-high" %}
{% elif score >= 5 %}
{% set band = "s-mid" %}
{% else %}
{% set band = "s-low" %}
{% endif %}
<a class="v2-result-row"
href="{{ assessment.href | default('/v2/antrag/' ~ assessment.drucksache) }}"
aria-label="{{ assessment.title }} — Score {{ '%.1f'|format(score) }}">
<div class="v2-score-cell {{ band }}" aria-label="Score {{ '%.1f'|format(score) }}">
{{ "%.1f" | format(score) }}
<small>Score</small>
</div>
<div>
<div class="v2-r-title">{{ assessment.title }}</div>
<div class="v2-r-sub">
{% for p in (assessment.parteien | default([])) %}
<span class="v2-party-chip">{{ p }}</span>
{% endfor %}
· Drucksache {{ assessment.drucksache }}
{% if assessment.tags is defined and assessment.tags %}
· {{ assessment.tags | join(", ") }}
{% endif %}
</div>
</div>
<div class="v2-r-state">
{{ assessment.bundesland | default("") }}
{% if assessment.parlament is defined %} · {{ assessment.parlament }}{% endif %}
</div>
<div class="v2-r-date">{{ assessment.datum | default("") }}</div>
</a>
{% endmacro %}