Artikel-Liste mit Löschfunktion (ViewModel + UI) #26

Closed
opened 2026-05-13 22:39:23 +00:00 by jreinemann-euris · 1 comment
jreinemann-euris commented 2026-05-13 22:39:23 +00:00 (Migrated from github.com)

Feature: Artikel-Liste mit Löschfunktion

Part of: #6
Depends on: #25

Ziel

Benutzer sehen alle Artikel in einer übersichtlichen Liste, gruppiert nach Kategorie, und können Artikel löschen.

Scope

  • ItemListViewModel:
    • Kombiniert Items mit Category- und Location-Namen (Flow.combine)
    • Gruppierung nach Kategorie
    • Delete-Funktion mit Bestätigung
  • ItemListScreen:
    • LazyColumn mit Kategorie-Headern und Item-Cards
    • Item-Card zeigt: Name, Menge + Einheit, Lagerort, MHD (farblich wenn bald ablaufend)
    • Delete per Swipe-to-Dismiss oder Icon-Button mit Bestätigungsdialog
    • FloatingActionButton für 'Artikel hinzufügen' (Navigation-Callback)
    • Empty State wenn keine Artikel vorhanden

Technische Hinweise

  • Bestehende Repositories: ItemRepository (getAll, getByCategory, delete), CategoryRepository (getAll), LocationRepository (getAll)
  • ItemEntity hat Foreign Keys zu CategoryEntity und LocationEntity
  • UI-Model erstellen das Entity-Daten mit aufgelösten Namen kombiniert (z.B. ItemUiModel)
  • Material 3: Card, SwipeToDismissBox oder IconButton, TopAppBar

Akzeptanzkriterien

  • Alle Artikel werden gruppiert nach Kategorie angezeigt
  • Artikelname, Menge, Einheit und Lagerort sind sichtbar
  • Artikel können mit Bestätigungsdialog gelöscht werden
  • Empty State wird angezeigt wenn keine Artikel vorhanden
  • Tests: Unit-Tests für ItemListViewModel
## Feature: Artikel-Liste mit Löschfunktion Part of: #6 Depends on: #25 ### Ziel Benutzer sehen alle Artikel in einer übersichtlichen Liste, gruppiert nach Kategorie, und können Artikel löschen. ### Scope - ItemListViewModel: - Kombiniert Items mit Category- und Location-Namen (Flow.combine) - Gruppierung nach Kategorie - Delete-Funktion mit Bestätigung - ItemListScreen: - LazyColumn mit Kategorie-Headern und Item-Cards - Item-Card zeigt: Name, Menge + Einheit, Lagerort, MHD (farblich wenn bald ablaufend) - Delete per Swipe-to-Dismiss oder Icon-Button mit Bestätigungsdialog - FloatingActionButton für 'Artikel hinzufügen' (Navigation-Callback) - Empty State wenn keine Artikel vorhanden ### Technische Hinweise - Bestehende Repositories: ItemRepository (getAll, getByCategory, delete), CategoryRepository (getAll), LocationRepository (getAll) - ItemEntity hat Foreign Keys zu CategoryEntity und LocationEntity - UI-Model erstellen das Entity-Daten mit aufgelösten Namen kombiniert (z.B. ItemUiModel) - Material 3: Card, SwipeToDismissBox oder IconButton, TopAppBar ### Akzeptanzkriterien - [ ] Alle Artikel werden gruppiert nach Kategorie angezeigt - [ ] Artikelname, Menge, Einheit und Lagerort sind sichtbar - [ ] Artikel können mit Bestätigungsdialog gelöscht werden - [ ] Empty State wird angezeigt wenn keine Artikel vorhanden - [ ] Tests: Unit-Tests für ItemListViewModel
jreinemann-euris commented 2026-05-13 23:03:50 +00:00 (Migrated from github.com)

Abgeschlossen (2025-05-14)

Zyklen: 1
Tests: 9 Tests, 0 Fehler (64 Tests gesamt, 0 Fehler)

Implementierte Artefakte

  • ItemUiModel: UI-Datenklasse mit aufgelösten Kategorie-/Lagerort-Namen und MHD-Berechnung
  • ItemListViewModel: Flow.combine für Items+Categories+Locations, Gruppierung nach Kategorie, Delete-Flow
  • ItemListScreen: LazyColumn mit Kategorie-Headern, Item-Cards, Delete-Dialog, FAB, Empty State
  • ItemListViewModelTest: 9 Unit-Tests (Init, Gruppierung, Namensauflösung, Delete-Dialog, Sortierung)

Abweichungen

  • Swipe-to-Dismiss nicht implementiert, stattdessen konsistenter IconButton+Dialog (wie Category/Location Screens)
  • Navigation-Integration (NavHost) nicht Teil dieses Tickets
## Abgeschlossen (2025-05-14) **Zyklen:** 1 **Tests:** ✅ 9 Tests, 0 Fehler (64 Tests gesamt, 0 Fehler) ### Implementierte Artefakte - ✅ ItemUiModel: UI-Datenklasse mit aufgelösten Kategorie-/Lagerort-Namen und MHD-Berechnung - ✅ ItemListViewModel: Flow.combine für Items+Categories+Locations, Gruppierung nach Kategorie, Delete-Flow - ✅ ItemListScreen: LazyColumn mit Kategorie-Headern, Item-Cards, Delete-Dialog, FAB, Empty State - ✅ ItemListViewModelTest: 9 Unit-Tests (Init, Gruppierung, Namensauflösung, Delete-Dialog, Sortierung) ### Abweichungen - Swipe-to-Dismiss nicht implementiert, stattdessen konsistenter IconButton+Dialog (wie Category/Location Screens) - Navigation-Integration (NavHost) nicht Teil dieses Tickets
Sign in to join this conversation.
No description provided.