From fc65fcb9c5756aea7e5ebc4d10d2499b4666d8cb Mon Sep 17 00:00:00 2001 From: fds2610-bot Date: Sun, 2 Aug 2026 20:12:09 +0200 Subject: [PATCH] Fix #165: Bereichs- und Schweregradfilter stehen nebeneinander --- Changes.md | 2 +- src/Views/ereignisse/index.php | 4 ++-- tests/e2e/specs/ereignisse.spec.js | 13 +++++++++++++ 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/Changes.md b/Changes.md index 6e5c054..cf1e49c 100644 --- a/Changes.md +++ b/Changes.md @@ -18,7 +18,7 @@ - **`migrations/091_system_events_level.sql`** (neu): Spalte `level` (info/warning/error) samt Indizes. Bestehende Einträge werden anhand ihres Textpräfixes eingestuft, nach dem die Liste sie bisher eingefärbt hat. - **`src/Models/EventLog.php`:** `add()` nimmt einen Schweregrad entgegen, dazu `warning()`, `error()`, `find()` mit Filter nach Bereich und Schweregrad sowie `channels()`. `tryAdd()` schreibt das Ereignis, ohne selbst scheitern zu können – nötig für Aufrufer, die bereits einen Fehler behandeln. - **Neue Fehlerquellen:** `View::redirect()` protokolliert jede Meldung vom Typ `error` oder `warning` im Bereich `meldungen` – damit ist jede dem Nutzer angezeigte Fehlermeldung erfasst, ohne sie einzeln anbinden zu müssen. `BelegController::renderUploadErrors()` schreibt zusätzlich im Bereich `beleg-upload` mit Dateiname, `public/index.php` protokolliert unbehandelte Ausnahmen und schwere PHP-Fehler im Bereich `system`. -- **`src/Controllers/EventController.php`, `src/Views/ereignisse/index.php`, `src/Views/ereignisse/_body.php`:** Aus der Nextcloud-Seite wird eine Übersicht über alle Bereiche mit zwei Auswahlfeldern (Bereich, Schweregrad). Der automatische Neuaufbau alle 60 Sekunden behält den eingestellten Filter. `/ereignisse/nextcloud-import` leitet auf die gefilterte Übersicht weiter, der bisherige Daten-Endpunkt bleibt erreichbar. +- **`src/Controllers/EventController.php`, `src/Views/ereignisse/index.php`, `src/Views/ereignisse/_body.php`:** Aus der Nextcloud-Seite wird eine Übersicht über alle Bereiche mit zwei Auswahlfeldern (Bereich, Schweregrad), die nebeneinander stehen – beide setzen `width:auto` gegen das globale `select { width: 100% }`, das sie sonst im Flex-Formular untereinander schiebt. Der automatische Neuaufbau alle 60 Sekunden behält den eingestellten Filter. `/ereignisse/nextcloud-import` leitet auf die gefilterte Übersicht weiter, der bisherige Daten-Endpunkt bleibt erreichbar. - **`tests/81_EreignisseAlleFehlerTest.php`** (neu), **`tests/e2e/specs/ereignisse.spec.js`** (neu), **`tests/58_EreignisAutoReloadTest.php`** (angepasst). ### Buchungszeilen brauchen weniger Breite (#166) diff --git a/src/Views/ereignisse/index.php b/src/Views/ereignisse/index.php index e9d078c..f58f351 100644 --- a/src/Views/ereignisse/index.php +++ b/src/Views/ereignisse/index.php @@ -31,13 +31,13 @@ $levelLabels = [
- - $label): ?> diff --git a/tests/e2e/specs/ereignisse.spec.js b/tests/e2e/specs/ereignisse.spec.js index f792f49..d6f7bd1 100644 --- a/tests/e2e/specs/ereignisse.spec.js +++ b/tests/e2e/specs/ereignisse.spec.js @@ -23,6 +23,19 @@ test.describe('Ereignisse', () => { await expect(page.locator('select[name="channel"] option[value=""]')).toContainText('Alle Bereiche') }) + test('Beide Auswahlfelder stehen nebeneinander', async ({ page }) => { + // Global gilt `select { width: 100% }` – ohne eigene Breite bricht das + // zweite Feld im Flex-Formular in die nächste Zeile um. + await page.setViewportSize({ width: 1280, height: 800 }) + await gotoOk(page, '/ereignisse') + + const bereich = await page.locator('select[name="channel"]').boundingBox() + const grad = await page.locator('select[name="level"]').boundingBox() + + expect(Math.abs(bereich.y - grad.y)).toBeLessThan(5) + expect(grad.x).toBeGreaterThan(bereich.x + bereich.width - 1) + }) + test('Der alte Nextcloud-Pfad landet auf der gefilterten Übersicht', async ({ page }) => { await page.goto('/ereignisse/nextcloud-import') const url = new URL(page.url())