chore: implementiere Logo-Upload-Zone mit Base64-Unterstützung, verbessere Vereinsverwaltung mit kompakten Feldern und nutzerspezifischen Uploadoptionen, optimiere Desktop-UX und Navigation
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
# Journal: 20. April 2026 - Desktop UX & Navigation Refinement
|
||||
|
||||
## 🏗️ Desktop-App: UX & Eingabe-Optimierung
|
||||
|
||||
* **Tastatur-Navigation (Fokus-Flow):**
|
||||
* **Device-Setup:** In `DeviceInitializationConfig.jvm.kt` wurde das Verhalten der **Enter-Taste** korrigiert. Sie führt nun konsistent zum nächsten Eingabefeld (Gerätename -> Schlüssel -> Pfad) oder schließt den Prozess ab, anstatt Zeilenumbrüche in einzeiligen Feldern zu erzeugen.
|
||||
* **Veranstaltungs-Konfig:** Das Formular nutzt nun `MsTextField` mit dedizierten `KeyboardActions`. Der Fokus springt beim Drücken von **Enter** oder **Tab** logisch zum nächsten Feld.
|
||||
|
||||
* **Neuer Date-Picker:**
|
||||
* Implementierung einer kompakten, Desktop-optimierten Komponente `MsDatePickerField`.
|
||||
* Ersetzt die manuellen Text-Eingabefelder für den Veranstaltungs-Zeitraum ("von" / "bis") durch einen visuellen Kalender-Dialog.
|
||||
* Erhöht die Datenqualität durch standardisiertes Datumsformat (ISO 8601).
|
||||
|
||||
## 🧭 Navigation & Stabilität
|
||||
|
||||
* **Robuste Neuanlage:**
|
||||
* Der direkte Aufruf von `VeranstaltungKonfig(veranstalterId=0)` aus der Gesamtübersicht wurde unterbunden.
|
||||
* User werden nun zuerst zur **Veranstalter-Auswahl** geleitet, um eine valide Kontext-ID sicherzustellen.
|
||||
* **Fehler-Handling:**
|
||||
* Die `InvalidContextNotice` (Fehlermeldung bei ungültigen IDs) wurde verbessert. Der Button "Zur Auswahl" führt nun kontextsensitiv entweder zurück zur Veranstalter-Auswahl oder zum Veranstalter-Profil, anstatt den User im "Nichts" stehen zu lassen.
|
||||
* **UI-Kompaktheit:**
|
||||
* Alle Formularfelder in der Veranstaltungs-Konfiguration wurden auf den `compact`-Modus (44dp Höhe) umgestellt, um dem High-Density Standard des Projekts zu entsprechen.
|
||||
|
||||
## 🧹 Curator Hinweis
|
||||
Die gemeldeten UX-Blocker in der Geräte-Konfiguration und bei der Veranstaltungs-Neuanlage sind behoben. Der neue Date-Picker erfüllt den Wunsch nach einer komfortableren Datumsauswahl und verhindert Tippfehler im Zeitraum-Format.
|
||||
@@ -1,15 +1,25 @@
|
||||
# Journal-Eintrag: Vereins-Verwaltung Erweiterung (Logo & Adresse)
|
||||
|
||||
**Datum:** 20. April 2026
|
||||
**Status:** In Umsetzung / Teilweise abgeschlossen
|
||||
**Beteiligte Agenten:** 🏗️ [Lead Architect], 🎨 [Frontend Expert], 🧹 [Curator]
|
||||
**Status:** Abgeschlossen (Bugfix & Feature-Integration)
|
||||
**Beteiligte Agenten:** 🏗️ [Lead Architect], 🎨 [Frontend Expert], 🧹 [Curator], 🧐 [QA Specialist]
|
||||
|
||||
## 📝 Zusammenfassung
|
||||
Die Vereins-Verwaltung wurde um detaillierte Adressdaten und ein verbessertes Logo-Management erweitert. Dies unterstützt die Professionalisierung der Stammdaten und verbessert die UX durch direkte Integration von Google Maps.
|
||||
Die Vereins-Verwaltung wurde um detaillierte Adressdaten und ein funktionales Logo-Management erweitert. Ein kritischer Bug, der zum Einfrieren der App beim Datei-Import führte, wurde behoben. Logos werden nun in der Vorschau korrekt gerendert.
|
||||
|
||||
## 🛠️ Technische Änderungen
|
||||
|
||||
### 1. Domain-Modell (`Verein.kt`)
|
||||
### 0. Bugfix: Logo-Picker UI-Freeze
|
||||
* **Problem:** Der `FileDialog` (AWT) blockierte den Main-Thread, was zum Einfrieren der App führte.
|
||||
* **Lösung:** Auslagerung des Dialog-Aufrufs in einen asynchronen `Dispatchers.IO` Kontext in `LogoUploadZone.jvm.kt`.
|
||||
* **Stabilität:** Integration von Try-Catch Blöcken und detailliertem Logging für den Datei-Import-Prozess.
|
||||
|
||||
### 1. Feature: Logo-Rendering (Base64)
|
||||
* **Implementation:** Einführung einer `expect/actual` Funktion `decodeBase64ToImage`.
|
||||
* **JVM-Logic:** Nutzung von `org.jetbrains.skia.Image` zur Dekodierung der Base64-Bytes in eine `ImageBitmap`.
|
||||
* **UI-Integration:** Die `VereinCardPreview` rendert nun das Vereinslogo direkt aus dem gespeicherten Base64-String mittels `androidx.compose.foundation.Image`.
|
||||
|
||||
### 2. Domain-Modell (`Verein.kt`)
|
||||
* Erweiterung um Felder: `strasse`, `hausnummer`, `bundesland` (Enum).
|
||||
* Neues Feld `logoBase64` für die Offline-Speicherung von optimierten Vereinslogos.
|
||||
* Einführung des Enums `Bundesland` mit den 9 österreichischen Bundesländern zur Sicherstellung der Datenqualität (ÖTO-konform).
|
||||
@@ -29,15 +39,15 @@ Die Vereins-Verwaltung wurde um detaillierte Adressdaten und ein verbessertes Lo
|
||||
* Einsatz des `MsEnumDropdown` für die Bundesland-Auswahl.
|
||||
* Vorbereitung einer "Logo-Upload-Zone" mit visuellem Feedback für Drag-and-Drop / FilePicker.
|
||||
|
||||
## 🔍 Verifikation (Vorschau)
|
||||
* [x] Domain-Modell kompiliert.
|
||||
* [x] ViewModel-Logik deckt alle neuen Felder ab.
|
||||
* [x] UI-Layout ist für High-Density Enterprise-UIs optimiert (44dp Standard).
|
||||
## 🔍 Verifikation
|
||||
* [x] Bugfix: Datei-Dialog friert die UI nicht mehr ein (IO-Dispatcher).
|
||||
* [x] Feature: Base64-Logo wird in der Card-Vorschau gerendert.
|
||||
* [x] Feature: Logging im ViewModel und Logo-Service implementiert.
|
||||
* [x] UI: Kompakte Adressfelder und Google-Maps-Link funktionieren.
|
||||
|
||||
## 📌 Nächste Schritte
|
||||
* Implementierung der tatsächlichen Bild-Skalierung und Konvertierung (JVM-spezifisch) im `VereinViewModel`.
|
||||
* Anbindung des nativen `JFileChooser` für den Logo-Import.
|
||||
* Finalisierung der Drag-and-Drop Logik (`onExternalDrag`).
|
||||
* Implementierung einer tatsächlichen Bild-Skalierung vor dem Base64-Encoding, um Datenbank-Größe zu optimieren.
|
||||
* Finalisierung der Drag-and-Drop Logik (`onExternalDrag`), sobald Bibliotheks-Support stabil ist.
|
||||
|
||||
---
|
||||
*Dokumentiert durch den Curator.*
|
||||
|
||||
Reference in New Issue
Block a user