antragstracker/static/_app/immutable/nodes/1.pFFIwPua.js
Dotty Dotter ea3e5cd329 feat: Intuitivere Bedienung — klickbare Stats + Abstimmungs-Filter + Fraktions-Normalisierung (#14)
Dashboard:
- Neuer Endpoint GET /api/stats/dashboard mit allen Kennzahlen
- Klickbare Kacheln: Vorlagen nach Typ, Ketten nach Status → navigieren zu Filterlisten
- Umsetzungsquote als horizontaler Balken mit klickbaren Segmenten

Abstimmungen:
- Stimmverhalten-Tabelle klickbar: Fraktion oder Ja/Nein/Enthaltung → filtert
- Neuer Endpoint GET /api/abstimmungen/details (?fraktion=&stimme=) mit Pagination
- Neuer Endpoint GET /api/abstimmungen/vergleich (?f1=&f2=) für Koalitionsmatrix-Drill-Down
- Koalitionsmatrix-Zellen klickbar → zeigt Abstimmungsvergleich beider Fraktionen

Fraktions-Normalisierung:
- fraktionen_mapping.py: 40+ DB-Varianten → kanonische Namen
- 'Bündnis 90 / Die Grünen' / 'Bündnis 90/Die Grünen' / 'Grüne' → 'Grüne'
- 'Die Linke' / 'Die Linke.' / 'Linke' → 'Linke'
- BfHo-Varianten, Hagen Aktiv, Einzelvertreter etc. normalisiert
- Mapping in allen Abstimmungs-Endpoints aktiv
- ist_ratsfraktion Flag in Fraktionen-Response

Closes #14
2026-04-01 14:32:06 +02:00

2 lines
1011 B
JavaScript

import{a as b,f as x}from"../chunks/B89f14j0.js";import{ao as k,aY as $,an as i,o as y,aZ as l,a_ as E,g as v,a$ as Y,x as Z,b0 as j,p as q,f as w,t as z,c as A,h as u,r as m,b as B}from"../chunks/reyx9_7L.js";import{s as _}from"../chunks/BwTTNG21.js";import{s as C,p as g}from"../chunks/BHBF0lbh.js";function D(r=!1){const t=k,e=t.l.u;if(!e)return;let a=()=>Y(t.s);if(r){let o=0,s={};const f=Z(()=>{let p=!1;const c=t.s;for(const n in c)c[n]!==s[n]&&(s[n]=c[n],p=!0);return p&&o++,o});a=()=>v(f)}e.b.length&&$(()=>{h(t,a),l(e.b)}),i(()=>{const o=y(()=>e.m.map(E));return()=>{for(const s of o)typeof s=="function"&&s()}}),e.a.length&&i(()=>{h(t,a),l(e.a)})}function h(r,t){if(r.l.s)for(const e of r.l.s)v(e);t()}j();const F={get error(){return g.error},get status(){return g.status}};C.updated.check;const d=F;var G=x("<h1> </h1> <p> </p>",1);function L(r,t){q(t,!1),D();var e=G(),a=w(e),o=u(a,!0);m(a);var s=B(a,2),f=u(s,!0);m(s),z(()=>{_(o,d.status),_(f,d.error?.message)}),b(r,e),A()}export{L as component};