From 5191962ce0f6fa786aaa5e4ab2c000b232bd880e Mon Sep 17 00:00:00 2001 From: "Claude (cleanup)" Date: Sat, 9 May 2026 14:18:04 +0000 Subject: [PATCH] =?UTF-8?q?ux(quellen-health):=20Verschlankung=20-=20Besch?= =?UTF-8?q?reibung=20gek=C3=BCrzt,=20Verlauf=20eingeklappt,=20schmalere=20?= =?UTF-8?q?Health-Tabelle,=20Icon-Buttons?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Vier UX-Hebel zusammengelegt, alle reines Frontend: 1. Vorschlaege-Tabelle: Beschreibung als Einzeiler mit Ellipsis; voller Text im title-Tooltip. Spart bei 24 offenen Vorschlaegen ~25 Bildschirmhoehen. 2. Verlauf-Card: standardmaessig eingeklappt via
-Element. Header zeigt nur "Verlauf (N erledigte Vorschlaege - klick zum Aufklappen)". Klick expandiert die Tabelle. 3. Health-Tabelle: Spalten Domain und Sprache aus der Tabelle raus, beide als Tooltip auf dem Quellen-Namen. Tabelle hat statt 8 Spalten nur noch 6, ist schmaler und besser lesbar. 4. Aktionen-Spalten: Text-Buttons ("Annehmen", "Ablehnen", "Lösung suchen") durch kompakte Icon-Buttons ersetzt (✓ ✗ 🔍). Funktion identisch, Tooltip via title-Attribut. Cache-Buster fuer source-health.js auf 20260509h gebumpt. --- src/static/dashboard.html | 2 +- src/static/js/source-health.js | 46 ++++++++++++++++++++-------------- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/src/static/dashboard.html b/src/static/dashboard.html index 421014e..eda15ca 100644 --- a/src/static/dashboard.html +++ b/src/static/dashboard.html @@ -715,7 +715,7 @@ - +
diff --git a/src/static/js/source-health.js b/src/static/js/source-health.js index 2927c94..4c2c219 100644 --- a/src/static/js/source-health.js +++ b/src/static/js/source-health.js @@ -143,13 +143,13 @@ function renderHealthDashboard() { ${SUGGESTION_TYPE_LABELS[s.suggestion_type] || s.suggestion_type} ${esc(s.title)} - ${esc(s.description || "")} + ${esc(s.description || "")} ${PRIORITY_LABELS[s.priority] || s.priority} ${formatDateTime(s.created_at)} - ${s.suggestion_type === "deactivate_source" && s.source_id ? ` ` : ""} - - + ${s.suggestion_type === "deactivate_source" && s.source_id ? ` ` : ""} + + `, ) @@ -166,20 +166,23 @@ function renderHealthDashboard() { `; } - // Vergangene Vorschläge + // Vergangene Vorschläge - eingeklappt by default, weil rein historisch. let historyHtml = ""; if (recentSuggestions.length > 0) { + const shown = recentSuggestions.slice(0, 20); historyHtml = ` -
-

Verlauf

-
+
+ + Verlauf + (${recentSuggestions.length} erledigte Vorschläge - klick zum Aufklappen) + +
- ${recentSuggestions - .slice(0, 20) + ${shown .map( (s) => ` @@ -193,7 +196,7 @@ function renderHealthDashboard() {
TypTitelStatusBearbeitet
-
`; +
`; } // Health-Check Ergebnisse @@ -268,22 +271,27 @@ function renderHealthDashboard() {
- + ${filtered .map( - (c) => ` + (c) => { + // Domain + Sprache in Tooltip vom Quellnamen, statt eigene Spalten. + const tipParts = []; + if (c.domain) tipParts.push(c.domain); + if (c.language) tipParts.push(c.language); + const nameTip = tipParts.length ? ` title="${esc(tipParts.join(" · "))}"` : ""; + return ` - - + ${esc(c.name)} - - - - `, + + + `; + } ) .join("")}
QuelleDomainTypOrgSpracheStatusDetailsAktionen
QuelleTypOrgStatusDetailsAktion
${esc(c.name)}${esc(c.domain || "-")}${CHECK_TYPE_LABELS[c.check_type] || c.check_type} ${c.tenant_id == null ? 'global' : esc(c.org_name || ("Org " + c.tenant_id))}${esc(c.language || "-")} ${c.status === "error" ? "Fehler" : (c.status === "warning" ? "Warnung" : "OK")}${esc(c.message || "")}${c.status === "error" && c.check_type === "reachability" ? `` : ""}
${esc(c.message || "")}${c.status === "error" && c.check_type === "reachability" ? `` : ""}