Kapitel 3.1: Mitarbeit-Aspekte pro Gruppe verwalten (3.1.1/3.1.2/3.1.4)
Neuer Button "Aspekte verwalten" im Mitarbeit-Tab öffnet ParticipationAspectsDialog: Anlegen, Bezeichnung/Typ/Gewichtung/Aktiv-Status bearbeiten (speichert sofort, gleiches Muster wie die bestehende Gewichtungs-Bearbeitung in 3.2.1), Hoch/Runter-Reihenfolge, Löschen mit Rückfrage. Verwaltet bewusst nur die gruppenspezifischen Aspekte, nicht den bislang nirgends befüllten globalen Standardkatalog. Schlüssel ist nur beim Neuanlegen editierbar - er verknüpft AspectRating mit dem Aspekt per Key, ein nachträgliches Umbenennen würde historische Bewertungen unauffindbar machen. IParticipationAspectRepository.Save validiert jetzt Pflichtfelder und Schlüssel-Eindeutigkeit gegen globale Standards UND eigene Gruppen-Aspekte zusammen, da beide im Bewertungsraster kombiniert verwendet werden. Neue GetAllByGroup-Methode (inkl. inaktiver) für die Verwaltungsansicht. 3.1.3 (Scale3/Binary/Points im Bewertungsraster selbst) bewusst nicht angefasst - eigener, größerer Eingriff in die Bewertungs-UI. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -156,13 +156,43 @@ Grundfunktion ist umgesetzt (Sitzungen, Raster, Schnelleingabe-Dialog).
|
||||
Siehe [ParticipationViewModels.cs](LehrerApp.Desktop/ViewModels/Groups/ParticipationViewModels.cs).
|
||||
|
||||
### 3.1 Aspekte konfigurieren
|
||||
- [ ] **3.1.1** UI zum Anlegen/Bearbeiten/Löschen von `ParticipationAspect` **pro Gruppe**
|
||||
- [x] **3.1.1** UI zum Anlegen/Bearbeiten/Löschen von `ParticipationAspect` **pro Gruppe**
|
||||
(Fach Chemie: z.B. "Experiment", "Protokoll") — `GroupId = null` bleibt global.
|
||||
- [ ] **3.1.2** Reihenfolge der Aspekte per Drag & Drop oder Hoch/Runter-Buttons festlegen
|
||||
(bestimmt auch die Q/W/E/R/T-Belegung im Schnelleingabe-Dialog).
|
||||
**Umsetzung:** neuer Button "Aspekte verwalten" im Mitarbeit-Tab öffnet
|
||||
`ParticipationAspectsDialog`. Verwaltet bewusst nur die gruppenspezifischen Aspekte
|
||||
(`GroupId` = diese Gruppe), nicht den globalen Standardkatalog (`GroupId = null`) — der wird
|
||||
bislang nirgends befüllt (`DefaultParticipationAspects` ist reiner In-Memory-Fallback ohne
|
||||
UI) und eine Änderung dort würde sofort alle Gruppen betreffen; das wäre ein eigener,
|
||||
separat zu entscheidender Schritt. Label/Typ/Gewichtung/Aktiv-Status speichern sofort bei
|
||||
Änderung (gleiches Muster wie die bestehende Gewichtungs-Bearbeitung in 3.2.1), mit
|
||||
Rollback + Fehlermeldung an der Zeile, falls das Repository ablehnt (leerer Wert, doppelter
|
||||
Schlüssel). "Schlüssel" ist bewusst nur beim Neuanlegen editierbar: er verknüpft
|
||||
`AspectRating` mit dem Aspekt (per Key, nicht per Id) — ein nachträgliches Umbenennen würde
|
||||
historische Bewertungen unauffindbar machen. `IParticipationAspectRepository.Save` prüft
|
||||
jetzt zusätzlich Pflichtfelder und Schlüssel-Eindeutigkeit (gegen die globalen Standards UND
|
||||
die eigenen Gruppen-Aspekte zusammen, da beide in der Bewertungsübersicht kombiniert
|
||||
verwendet werden — siehe `ParticipationTabViewModel.LoadAspects`).
|
||||
- [x] **3.1.2** Reihenfolge der Aspekte per Hoch/Runter-Buttons festlegen (bestimmt auch die
|
||||
Q/W/E/R/T-Belegung im Schnelleingabe-Dialog) — gleiches Muster wie die Kompetenzbereiche in
|
||||
8.1.1, `SortOrder` wird bei jeder Verschiebung sofort und lückenlos gespeichert.
|
||||
**Drag & Drop nicht umgesetzt:** Hoch/Runter deckt die vollständige Bedienung bereits ab,
|
||||
analog zur Drag-Entscheidung bei 4.3.3.
|
||||
- [ ] **3.1.3** Aspekt-Typen `Scale3`, `Binary`, `Points` in Raster und Dialog vollständig unterstützen
|
||||
(bisher primär `Scale5`).
|
||||
- [ ] **3.1.4** Aspekt deaktivieren statt löschen, damit alte Einträge gültig bleiben.
|
||||
(bisher primär `Scale5`). **Weiterhin offen:** 3.1.1 macht den Typ zwar anlegbar/speicherbar
|
||||
(`AspectValueTypeDisplay`, ComboBox in der Verwaltung), das Bewertungsraster und der
|
||||
Schnelleingabe-Dialog rendern und interpretieren Eingaben aber weiterhin nach dem
|
||||
Scale5-Schema — ein als `Binary`/`Points`/`Scale3` angelegter Aspekt wird dort noch nicht
|
||||
passend dargestellt. Bewusst getrennt von 3.1.1, da das die Bewertungs-UI selbst betrifft.
|
||||
- [x] **3.1.4** Aspekt deaktivieren statt löschen, damit alte Einträge gültig bleiben.
|
||||
**Umsetzung:** Checkbox "Aktiv" je Zeile in der neuen Verwaltung (3.1.1); die bestehenden
|
||||
Abfragen (`GetByGroup`/`GetDefaults`, für Bewertungsraster und -aggregation) filterten
|
||||
inaktive Aspekte bereits vorher heraus, das war schon vor dieser Aufgabe so gebaut. Neu ist
|
||||
nur `GetAllByGroup` (inkl. inaktiver), damit die Verwaltungsansicht deaktivierte Aspekte
|
||||
weiterhin anzeigt und wieder aktivierbar macht. "Löschen" bleibt zusätzlich verfügbar (mit
|
||||
Rückfrage über den bestehenden `ConfirmDialog`, Warnhinweis auf mögliche bereits erfasste
|
||||
Bewertungen), aber "Deaktivieren" ist der empfohlene Weg — ein echter Verwendungs-Check vor
|
||||
dem Löschen (durchsucht alle `ParticipationEntry.Ratings` nach dem Key) ist nicht umgesetzt,
|
||||
da `AspectRating` nicht nach Aspekt-Key indiziert ist.
|
||||
|
||||
### 3.2 Aggregation zur Mitarbeitsnote
|
||||
- [x] **3.2.1** Gewichtung je Aspekt konfigurierbar (z.B. Qualität 50 %, Quantität 30 %, Experiment 20 %).
|
||||
|
||||
Reference in New Issue
Block a user