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>
36 lines
1.3 KiB
C#
36 lines
1.3 KiB
C#
using Avalonia.Controls;
|
|
using Avalonia.Interactivity;
|
|
using LehrerApp.Desktop.ViewModels.Groups;
|
|
using LehrerApp.Desktop.Views.Shared;
|
|
|
|
namespace LehrerApp.Desktop.Views.Groups;
|
|
|
|
public partial class ParticipationAspectsDialog : Window
|
|
{
|
|
public ParticipationAspectsDialog() => InitializeComponent();
|
|
|
|
protected override void OnDataContextChanged(EventArgs e)
|
|
{
|
|
base.OnDataContextChanged(e);
|
|
if (DataContext is ParticipationAspectsDialogViewModel vm)
|
|
vm.OnConfirmDelete = ConfirmDelete;
|
|
}
|
|
|
|
private async Task<bool> ConfirmDelete(AspectEditItem item)
|
|
{
|
|
var info = new ConfirmDialogInfo
|
|
{
|
|
Title = "Aspekt endgültig löschen?",
|
|
Message = $"„{item.Label}“ wird endgültig gelöscht. Falls er bereits in Bewertungen " +
|
|
"verwendet wurde, bleiben diese Werte in der Historie erhalten, sind dort " +
|
|
"aber keinem Aspekt mehr zuordenbar. Zum Erhalt der Zuordnung stattdessen " +
|
|
"deaktivieren statt löschen.",
|
|
ConfirmText = "Endgültig löschen",
|
|
};
|
|
var dialog = new ConfirmDialog { DataContext = info };
|
|
return await dialog.ShowDialog<bool>(this);
|
|
}
|
|
|
|
private void OnClose(object? s, RoutedEventArgs e) => Close();
|
|
}
|