From 2469715756e49f5d14ffd3742919455ca9747943 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reinhard=20X=2E=20F=C3=BCrst?= Date: Tue, 28 Apr 2026 13:35:21 +0200 Subject: [PATCH] Show Objekte in compact list; narrower columns and shorter date format Co-Authored-By: Claude Sonnet 4.6 --- components/LogbuchList.tsx | 57 +++++++++++++++++++++++--------------- migrate_art.sql | 25 +++++++++-------- 2 files changed, 47 insertions(+), 35 deletions(-) diff --git a/components/LogbuchList.tsx b/components/LogbuchList.tsx index 4fca3b0..680bcb7 100644 --- a/components/LogbuchList.tsx +++ b/components/LogbuchList.tsx @@ -11,10 +11,14 @@ interface Props { compact?: boolean; } -function formatDateTime(dt: string): string { +function formatDateTime(dt: string, short = false): string { if (!dt) return ''; const d = new Date(dt); if (isNaN(d.getTime())) return dt; + if (short) { + const pad = (n: number) => String(n).padStart(2, '0'); + return `${pad(d.getDate())}.${pad(d.getMonth() + 1)}. ${pad(d.getHours())}:${pad(d.getMinutes())}`; + } return d.toLocaleString('de-DE', { day: '2-digit', month: '2-digit', year: 'numeric', hour: '2-digit', minute: '2-digit' }); } @@ -30,7 +34,7 @@ export default function LogbuchList({ kuppel, refreshKey, onEdit, limit = 20, co .then((r) => { if (!r.ok) throw new Error(); return r.json(); }) .then((data) => { setEntries(data); setLoading(false); }) .catch(() => { setError('Fehler beim Laden.'); setLoading(false); }); - }, [kuppel, refreshKey]); + }, [kuppel, refreshKey, limit]); async function confirmDelete(id: number) { try { @@ -48,48 +52,55 @@ export default function LogbuchList({ kuppel, refreshKey, onEdit, limit = 20, co if (error) return
{error}
; if (entries.length === 0) return
Keine Einträge vorhanden.
; + const cell = compact + ? 'px-1.5 py-1 border border-gray-200 text-xs' + : 'px-3 py-2 border border-gray-200'; + const head = compact + ? 'px-1.5 py-1 border border-gray-300 text-xs font-semibold' + : 'px-3 py-2 border border-gray-300'; + return (
- +
- - - - - - {!compact && } - {!compact && } - + + + + {!compact && } + + + {!compact && } + {entries.map((e) => ( - - - - - - {!compact && } + + + + {!compact && } + + {!compact && ( - )} - diff --git a/migrate_art.sql b/migrate_art.sql index 35518ae..b465897 100644 --- a/migrate_art.sql +++ b/migrate_art.sql @@ -1,15 +1,16 @@ -- Migration: ArtFuehrung von Langtext auf Kürzel umstellen --- Erst Daten aktualisieren, dann ENUM ändern +-- Schritt 1: ENUM zu VARCHAR öffnen (nimmt alle Werte an) +ALTER TABLE logbuch MODIFY ArtFuehrung VARCHAR(50) NOT NULL DEFAULT 'RF'; -UPDATE logbuch SET ArtFuehrung = 'RF' WHERE ArtFuehrung = 'Reguläre Führung'; -UPDATE logbuch SET ArtFuehrung = 'SF' WHERE ArtFuehrung = 'Sonderführung'; -UPDATE logbuch SET ArtFuehrung = 'BEOS' WHERE ArtFuehrung = 'BEO-Sitzung'; -UPDATE logbuch SET ArtFuehrung = 'SonF' WHERE ArtFuehrung = 'Sonnenführung'; -UPDATE logbuch SET ArtFuehrung = 'TD' WHERE ArtFuehrung = 'Technischer Dienst'; -UPDATE logbuch SET ArtFuehrung = 'Beob' WHERE ArtFuehrung = 'Beobachtung'; -UPDATE logbuch SET ArtFuehrung = 'ToT' WHERE ArtFuehrung = 'Tag der offenen Tür'; -UPDATE logbuch SET ArtFuehrung = 'Sonst'WHERE ArtFuehrung = 'Sonstiges'; +-- Schritt 2: Bestehende Daten umschreiben +UPDATE logbuch SET ArtFuehrung = 'RF' WHERE ArtFuehrung = 'Reguläre Führung'; +UPDATE logbuch SET ArtFuehrung = 'SF' WHERE ArtFuehrung = 'Sonderführung'; +UPDATE logbuch SET ArtFuehrung = 'BEOS' WHERE ArtFuehrung = 'BEO-Sitzung'; +UPDATE logbuch SET ArtFuehrung = 'SonF' WHERE ArtFuehrung = 'Sonnenführung'; +UPDATE logbuch SET ArtFuehrung = 'TD' WHERE ArtFuehrung = 'Technischer Dienst'; +UPDATE logbuch SET ArtFuehrung = 'Beob' WHERE ArtFuehrung = 'Beobachtung'; +UPDATE logbuch SET ArtFuehrung = 'ToT' WHERE ArtFuehrung = 'Tag der offenen Tür'; +UPDATE logbuch SET ArtFuehrung = 'Sonst' WHERE ArtFuehrung = 'Sonstiges'; -ALTER TABLE logbuch - MODIFY ArtFuehrung ENUM('RF','SF','BEOS','SonF','TD','Beob','ToT','Sonst') - NOT NULL DEFAULT 'RF'; +-- Schritt 3: Zurück zu ENUM mit neuen Kürzeln +ALTER TABLE logbuch MODIFY ArtFuehrung ENUM('RF','SF','BEOS','SonF','TD','Beob','ToT','Sonst') NOT NULL DEFAULT 'RF';
BeginnEndeArtBesucherBEOsObjekteBemerkungenAktionenBeginnEndeArtBesucherBEOsObjekteBemerkungenAktionen
{formatDateTime(e.Beginn)}{formatDateTime(e.Ende)}{e.ArtFuehrung}{e.Besucher}{e.BEOs || '—'}{e.Objekte || '—'}{formatDateTime(e.Beginn, compact)}{formatDateTime(e.Ende, compact)}{e.ArtFuehrung}{e.Besucher}{e.BEOs || '—'}{e.Objekte || '—'} + {e.Bemerkungen || ''} +