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>
67 lines
2.1 KiB
HTML
67 lines
2.1 KiB
HTML
{#
|
||
result_row.html — Ergebnislisten-Zeile
|
||
|
||
Props (über assessment-Dict):
|
||
assessment.score : float (0–10)
|
||
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 5–7 (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 %}
|