Files
LehrerApp/LehrerApp.Desktop/Views/Groups/ParticipationAspectsDialog.axaml.cs
adminandClaude Sonnet 5 e40585801c 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>
2026-08-16 23:39:44 +02:00

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();
}