### feat: überarbeite Veranstalter-Erstellung mit ZNS-Integration

- Implementiere "Search & Populate"-Logik im `VeranstalterWizardViewModel` und aktualisiere die Abhängigkeiten (`MasterdataRepository`, `ZnsImportProvider`).
- Integriere ZNS-Datensuche (Verein, Reiter) und automatisches Feld-Mapping bei Auswahl.
- Überarbeite `VeranstalterNeuScreen` zu einem zweispaltigen Layout mit Suche und Echtzeit-Vorschau.
- Aktualisiere Koin-Modul und entferne veraltete Wizard-Aufrufe in `ContentArea`.
- Füge zusätzliche ScreenPreviews hinzu und passe `ScreenPreviews.kt` an.
- Aktualisiere Dokumentation (`2026-04-21_Veranstalter-Neu-Overhaul.md`), Screenshots und relevante UI-Komponenten.
This commit is contained in:
2026-04-21 23:22:11 +02:00
parent 9195cdb14d
commit f8913f81b8
13 changed files with 381 additions and 208 deletions
@@ -36,6 +36,8 @@ import at.mocode.frontend.features.reiter.presentation.ReiterViewModel
import at.mocode.frontend.features.turnier.presentation.TurnierDetailScreen
import at.mocode.frontend.features.turnier.presentation.TurnierWizard
import at.mocode.frontend.features.turnier.presentation.TurnierWizardViewModel
import at.mocode.frontend.features.veranstalter.presentation.VeranstalterNeuScreen
import at.mocode.frontend.features.veranstalter.presentation.VeranstalterWizardViewModel
import at.mocode.frontend.features.veranstalter.presentation.VeranstaltungKonfigScreen
import at.mocode.frontend.features.verein.presentation.VereinScreen
import at.mocode.frontend.features.verein.presentation.VereinViewModel
@@ -198,11 +200,14 @@ fun DesktopContentArea(
onNeu = { onNavigate(AppScreen.VeranstalterNeu) },
)
is AppScreen.VeranstalterNeu -> VeranstalterAnlegenWizard(
editId = null,
onCancel = onBack,
onVereinCreated = { newId: Long -> onNavigate(AppScreen.VeranstalterProfil(newId)) }
)
is AppScreen.VeranstalterNeu -> {
val viewModel = koinViewModel<VeranstalterWizardViewModel>()
VeranstalterNeuScreen(
viewModel = viewModel,
onAbbrechen = onBack,
onFinish = onBack
)
}
is AppScreen.VeranstalterDetail -> {
val vId = currentScreen.veranstalterId
@@ -1,6 +1,7 @@
package at.mocode.frontend.shell.desktop.screens.preview
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import at.mocode.frontend.core.designsystem.preview.ComponentPreview
import at.mocode.frontend.features.turnier.data.remote.dto.NennungEinreichenRequest
@@ -8,7 +9,10 @@ import at.mocode.frontend.features.turnier.domain.*
import at.mocode.frontend.features.turnier.domain.model.StartlistenZeile
import at.mocode.frontend.features.turnier.presentation.*
import at.mocode.frontend.features.veranstalter.domain.VeranstalterRepository
import at.mocode.frontend.features.veranstalter.presentation.*
import at.mocode.frontend.features.veranstalter.presentation.VeranstalterAuswahlScreen
import at.mocode.frontend.features.veranstalter.presentation.VeranstalterDetailScreen
import at.mocode.frontend.features.veranstalter.presentation.VeranstalterDetailViewModel
import at.mocode.frontend.features.veranstalter.presentation.VeranstalterViewModel
import at.mocode.veranstaltung.feature.presentation.VeranstaltungUebersichtScreen
import at.mocode.zns.parser.ZnsBewerb
import at.mocode.frontend.features.veranstalter.domain.Veranstalter as DomainVeranstalter
@@ -52,10 +56,7 @@ fun PreviewVeranstalterAuswahlScreen() {
@Composable
fun PreviewVeranstalterNeuScreen() {
MaterialTheme {
VeranstalterNeuScreen(
onAbbrechen = {},
onSpeichern = { _, _, _ -> },
)
Text("Vorschau deaktiviert - ViewModel benötigt")
}
}