Phase D: zwei getrennte Suchfelder + Auswertungen-Link (#16, #59)

Schließt #16 (UI: zwei klar getrennte Suchen) und ergänzt den Header
um den Link auf das neue Auswertungen-Dashboard aus Phase C.

- Search-Row in `index.html` aufgespalten in zwei untereinanderliegende
  Inputs: oben "Suche in geprüften Anträgen (DB)" mit Live-Debouncing
  (wie bisher), unten "Im Landtag suchen (live)" mit Enter-Trigger und
  expliziter Such-Button. Beide Felder schreiben in dieselbe Liste,
  sind aber visuell und semantisch klar getrennt.
- `searchLandtag()` zieht jetzt aus `landtag-search-input` statt aus
  dem DB-Suchfeld
- `changeBundesland()` resettet zusätzlich das Landtag-Feld
- Header: neuer `📈 Auswertungen`-Link neben `📚 Quellen`

Refs: #16, #59 (Phase D)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dotty Dotter 2026-04-09 11:27:29 +02:00
parent 3631e5418c
commit 26f13bd29d

View File

@ -700,6 +700,7 @@
<button class="mode-btn" onclick="showMode('tags')">🏷️ Tags</button>
<button class="mode-btn" onclick="showMode('upload')">📤 Prüfen</button>
<a href="/quellen" class="mode-btn" style="text-decoration: none;">📚 Quellen</a>
<a href="/auswertungen" class="mode-btn" style="text-decoration: none;">📈 Auswertungen</a>
</div>
</header>
@ -707,9 +708,28 @@
<!-- Left: List -->
<aside class="list-panel">
<div class="list-header">
<div class="search-row">
<input type="text" class="search-box" id="search-input" placeholder="Suche in geprüften Anträgen..." oninput="debounceSearch(this.value)">
<button class="btn-landtag" id="btn-landtag" onclick="searchLandtag()">🔍 Im Landtag</button>
<!--
#16: zwei klar getrennte Suchfelder. Das erste filtert
in der DB der bereits geprüften Anträge (Live, debounced).
Das zweite triggert per Enter oder Button eine Live-
Anfrage gegen den Landtag-Adapter. Beide schreiben in
dieselbe Liste, unterscheiden sich aber visuell und
semantisch klar.
-->
<div class="search-row" style="flex-direction: column; gap: 0.4rem;">
<div style="display: flex; gap: 0.4rem; width: 100%;">
<input type="text" class="search-box" id="search-input"
placeholder="📊 Suche in geprüften Anträgen (DB)…"
oninput="debounceSearch(this.value)"
style="flex: 1;">
</div>
<div style="display: flex; gap: 0.4rem; width: 100%;">
<input type="text" class="search-box" id="landtag-search-input"
placeholder="🏛️ Im Landtag suchen (live)…"
onkeydown="if(event.key==='Enter')searchLandtag()"
style="flex: 1;">
<button class="btn-landtag" id="btn-landtag" onclick="searchLandtag()">🔍 Suchen</button>
</div>
</div>
<div class="list-filters">
<button class="filter-btn active" data-filter="all" onclick="setScoreFilter('all', this)">Alle</button>
@ -1226,6 +1246,8 @@
currentParteiFilter = '';
selectedTags.clear();
document.getElementById('search-input').value = '';
const landtagInput = document.getElementById('landtag-search-input');
if (landtagInput) landtagInput.value = '';
document.querySelectorAll('.filter-btn').forEach(b => {
b.classList.toggle('active', b.dataset.filter === 'all');
});
@ -1265,9 +1287,11 @@
alert('Landtag-Suche ist nur mit Auswahl eines konkreten Bundeslands möglich.\nBitte oben ein Bundesland auswählen.');
return;
}
const query = document.getElementById('search-input').value.trim();
// #16: Landtag-Suche zieht aus dem dedizierten Landtag-Input,
// nicht mehr aus dem DB-Suchfeld.
const query = document.getElementById('landtag-search-input').value.trim();
if (query.length < 2) {
alert('Bitte mindestens 2 Zeichen eingeben');
alert('Bitte mindestens 2 Zeichen ins Landtag-Suchfeld eingeben');
return;
}