From c35a30a823439ca8967b0ef280cdf8c9fb536740 Mon Sep 17 00:00:00 2001 From: claude-dev Date: Sat, 25 Jul 2026 19:39:58 +0000 Subject: [PATCH] feat(quellen): leichteres Seitwaerts-Scrollen in der Quellenliste - Name-Spalte (und bei Kundenquellen-Filter die Checkbox-Spalte) bleibt links angepinnt, die Aktionen-Spalte rechts. Solide Hintergruende und weiche Trennkanten, damit nichts durchscheint (Dark + Light). - Kategorie-Ueberschriften und Ausklapp-Inhalte (Notizen, Health-Details) bleiben beim Scrollen im sichtbaren Bereich (position sticky). - Ziehen-zum-Scrollen: die Tabelle laesst sich mit gedrueckter Maustaste greifen und seitwaerts ziehen (generischer Helper enableDragScroll, Knoepfe/Checkboxen bleiben normal bedienbar, nach echtem Ziehen wird der Klick geschluckt). Co-Authored-By: Claude Fable 5 --- src/static/css/style.css | 59 +++++++++++++++++++++++++++++++++++++++ src/static/dashboard.html | 12 ++++---- src/static/js/app.js | 38 +++++++++++++++++++++++++ src/static/js/sources.js | 9 ++++-- 4 files changed, 109 insertions(+), 9 deletions(-) diff --git a/src/static/css/style.css b/src/static/css/style.css index a6754aa..bdfec94 100644 --- a/src/static/css/style.css +++ b/src/static/css/style.css @@ -958,6 +958,65 @@ input[type="date"].filter-select { padding: 6px 10px; } .select-col { display: none; } table.show-select .select-col { display: table-cell; } +/* === Quellenliste: leichteres Seitwaerts-Scrollen === */ +/* Name links und Aktionen rechts bleiben beim Scrollen angepinnt. + Zeilen sind transparent, angepinnte Zellen brauchen deshalb solide + Hintergruende, sonst scheint der Inhalt darunter durch. */ +#unifiedTable th.sticky-name, +#unifiedTable td.sticky-name { + position: sticky; + left: 0; + z-index: 2; + background: var(--bg-secondary); + max-width: 260px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + box-shadow: 6px 0 8px -6px rgba(0, 0, 0, 0.45); +} +#unifiedTable th.sticky-actions, +#unifiedTable td.sticky-actions { + position: sticky; + right: 0; + z-index: 2; + background: var(--bg-secondary); + white-space: nowrap; + box-shadow: -6px 0 8px -6px rgba(0, 0, 0, 0.45); +} +#unifiedTable.show-select th.select-col, +#unifiedTable.show-select td.select-col { + position: sticky; + left: 0; + z-index: 2; + width: 40px; + background: var(--bg-secondary); +} +#unifiedTable.show-select th.sticky-name, +#unifiedTable.show-select td.sticky-name { left: 40px; } +#unifiedTable tr:hover td.sticky-name, +#unifiedTable tr:hover td.sticky-actions, +#unifiedTable.show-select tr:hover td.select-col { + background: var(--bg-tertiary); +} +/* Kategorie-Zeile und Ausklapp-Inhalte bleiben im sichtbaren Bereich */ +.cat-header-sticky { + position: sticky; + left: 12px; + display: inline-flex; + align-items: center; +} +#unifiedTable .src-notes-cell > div { + position: sticky; + left: 16px; + max-width: 1080px; +} +/* Ziehen-zum-Scrollen */ +.drag-scroll { cursor: grab; } +.drag-scroll.drag-scrolling { + cursor: grabbing; + user-select: none; +} + /* Health-Details in der Ausklapp-Zeile */ .src-notes-text { margin-bottom: 8px; } .health-detail-head { diff --git a/src/static/dashboard.html b/src/static/dashboard.html index 8faa6a9..bb61073 100644 --- a/src/static/dashboard.html +++ b/src/static/dashboard.html @@ -6,7 +6,7 @@ AegisSight Monitor-Verwaltung - +