diff --git a/src/routers/incidents.py b/src/routers/incidents.py index 9debb69..921538b 100644 --- a/src/routers/incidents.py +++ b/src/routers/incidents.py @@ -507,6 +507,14 @@ async def get_articles_sources_summary( d = dict(r) langs = (d.pop("languages") or "de").split(",") d["languages"] = sorted({(l or "de").strip() for l in langs if l is not None}) + # Quellentyp aus dem source-Praefix ableiten (fuer den Typ-Filter der Quellenuebersicht) + src = d.get("source") or "" + if src.startswith("X: "): + d["source_type"] = "x" + elif src.startswith("Telegram: "): + d["source_type"] = "telegram" + else: + d["source_type"] = "web" sources.append(d) # Sprach-Verteilung gesamt cursor = await db.execute( diff --git a/src/static/css/style.css b/src/static/css/style.css index 38862cd..236d9de 100644 --- a/src/static/css/style.css +++ b/src/static/css/style.css @@ -1715,6 +1715,39 @@ a.dev-source-pill:hover { color: var(--text-primary); } +.source-type-filter-chips { + display: flex; + flex-wrap: wrap; + gap: var(--sp-xs); + margin: var(--sp-sm) 0 var(--sp-xs); +} + +.source-type-filter-chip { + font: inherit; + font-size: 11px; + padding: 3px 10px; + border-radius: var(--radius); + border: 1px solid var(--border); + background: var(--bg-secondary); + color: var(--text-secondary); + cursor: pointer; +} + +.source-type-filter-chip:hover { + border-color: var(--accent); + color: var(--text-primary); +} + +.source-type-filter-chip.active { + background: var(--accent); + border-color: var(--accent); + color: #fff; +} + +.source-type-filter-chip.active strong { + color: #fff; +} + .source-overview-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); diff --git a/src/static/dashboard.html b/src/static/dashboard.html index cd5c270..229e9b9 100644 --- a/src/static/dashboard.html +++ b/src/static/dashboard.html @@ -13,7 +13,7 @@ - +