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>
122 lines
5.8 KiB
XML
122 lines
5.8 KiB
XML
<UserControl xmlns="https://github.com/avaloniaui"
|
||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||
xmlns:vm="clr-namespace:LehrerApp.Desktop.ViewModels.Groups"
|
||
x:Class="LehrerApp.Desktop.Views.Groups.ParticipationTabView"
|
||
x:DataType="vm:ParticipationTabViewModel">
|
||
|
||
<Grid ColumnDefinitions="220,*">
|
||
|
||
<!-- Linke Seite: Sitzungsliste -->
|
||
<Border Grid.Column="0"
|
||
BorderBrush="{DynamicResource SystemControlForegroundBaseLowBrush}"
|
||
BorderThickness="0,0,1,0">
|
||
<Grid RowDefinitions="Auto,Auto,Auto,Auto,Auto,*">
|
||
|
||
<Button Grid.Row="0" Content="+ Sitzung" Command="{Binding AddSessionCommand}"
|
||
HorizontalAlignment="Stretch" Margin="10,10,10,6" IsEnabled="{Binding !IsReadOnly}"/>
|
||
|
||
<StackPanel Grid.Row="1" Orientation="Horizontal" Spacing="6" Margin="10,0,10,6">
|
||
<Button Content="Schnell Mitarbeit" Command="{Binding QuickInputCommand}"
|
||
HorizontalAlignment="Stretch" IsEnabled="{Binding !IsReadOnly}"/>
|
||
<Button Content="Anw./HA" Command="{Binding StatusQuickInputCommand}" IsEnabled="{Binding !IsReadOnly}"/>
|
||
</StackPanel>
|
||
|
||
<Button Grid.Row="2" Content="Ø Mitarbeitsnote" Command="{Binding ComputeGradeCommand}"
|
||
HorizontalAlignment="Stretch" Margin="10,0,10,6" IsEnabled="{Binding !IsReadOnly}"/>
|
||
|
||
<Button Grid.Row="3" Content="Mitarbeits-Assistent" Command="{Binding OpenWizardCommand}"
|
||
HorizontalAlignment="Stretch" Margin="10,0,10,6" IsEnabled="{Binding !IsReadOnly}"/>
|
||
|
||
<Button Grid.Row="4" Content="Aspekte verwalten" Command="{Binding ManageAspectsCommand}"
|
||
HorizontalAlignment="Stretch" Margin="10,0,10,6" IsEnabled="{Binding !IsReadOnly}"/>
|
||
|
||
<ListBox Grid.Row="5"
|
||
ItemsSource="{Binding Sessions}"
|
||
SelectedItem="{Binding SelectedSession}"
|
||
BorderThickness="0">
|
||
<ListBox.ItemTemplate>
|
||
<DataTemplate x:DataType="vm:ParticipationSessionItem">
|
||
<TextBlock Text="{Binding Display}" TextWrapping="Wrap" Padding="4,3" FontSize="12"/>
|
||
</DataTemplate>
|
||
</ListBox.ItemTemplate>
|
||
</ListBox>
|
||
</Grid>
|
||
</Border>
|
||
|
||
<!-- Rechte Seite -->
|
||
<Grid Grid.Column="1" RowDefinitions="Auto,Auto,*">
|
||
|
||
<!-- Header: Session-Titel + Toggle-Buttons -->
|
||
<Grid Grid.Row="0" ColumnDefinitions="*,Auto" Margin="12,8,12,4"
|
||
IsVisible="{Binding SelectedSession, Converter={x:Static ObjectConverters.IsNotNull}}">
|
||
<TextBlock Grid.Column="0"
|
||
Text="{Binding SelectedSessionDisplay}"
|
||
FontSize="13" FontWeight="SemiBold"
|
||
VerticalAlignment="Center"/>
|
||
<StackPanel Grid.Column="1" Orientation="Horizontal" Spacing="6"
|
||
IsVisible="{Binding HasCompetencyCatalog}">
|
||
<ToggleButton Content="◇ Kompetenzen"
|
||
IsChecked="{Binding CompetencyTagsVisible}"
|
||
FontSize="11" Padding="8,3"/>
|
||
<ToggleButton Content="◈ Schüler-Bewertungen"
|
||
IsChecked="{Binding StudentCompetencyRatingsVisible}"
|
||
FontSize="11" Padding="8,3"/>
|
||
</StackPanel>
|
||
</Grid>
|
||
|
||
<!-- Kompetenz-Tag-Panel -->
|
||
<Border Grid.Row="1"
|
||
IsVisible="{Binding CompetencyTagsVisible}"
|
||
BorderBrush="{DynamicResource SystemControlForegroundBaseLowBrush}"
|
||
BorderThickness="0,0,0,1"
|
||
Padding="12,8">
|
||
<ScrollViewer HorizontalScrollBarVisibility="Disabled" MaxHeight="200">
|
||
<ItemsControl ItemsSource="{Binding CompetencyTagGroups}" IsEnabled="{Binding !IsReadOnly}">
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate DataType="vm:CompetencyTagGroup">
|
||
<StackPanel Spacing="4" Margin="0,0,0,10">
|
||
<TextBlock Text="{Binding DisplayName}"
|
||
FontSize="11" FontWeight="SemiBold" Opacity="0.55"/>
|
||
<ItemsControl ItemsSource="{Binding Items}">
|
||
<ItemsControl.ItemsPanel>
|
||
<ItemsPanelTemplate>
|
||
<WrapPanel Orientation="Horizontal"/>
|
||
</ItemsPanelTemplate>
|
||
</ItemsControl.ItemsPanel>
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate DataType="vm:CompetencyTag">
|
||
<ToggleButton IsChecked="{Binding IsSelected}"
|
||
Content="{Binding Display}"
|
||
FontSize="11"
|
||
Padding="6,3"
|
||
Margin="0,0,4,4"/>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
</StackPanel>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
</ScrollViewer>
|
||
</Border>
|
||
|
||
<!-- DataGrid: Spalten werden in ParticipationTabView.axaml.cs dynamisch erzeugt -->
|
||
<DataGrid Grid.Row="2"
|
||
x:Name="RatingGrid"
|
||
ItemsSource="{Binding StudentRows}"
|
||
AutoGenerateColumns="False"
|
||
IsReadOnly="True"
|
||
GridLinesVisibility="All"
|
||
CanUserReorderColumns="False"
|
||
CanUserResizeColumns="True"
|
||
IsVisible="{Binding SelectedSession, Converter={x:Static ObjectConverters.IsNotNull}}"/>
|
||
|
||
<TextBlock Grid.Row="2"
|
||
Text="{Binding NoDataText}"
|
||
HorizontalAlignment="Center" VerticalAlignment="Center"
|
||
Opacity="0.35" FontSize="14"
|
||
IsVisible="{Binding SelectedSession, Converter={x:Static ObjectConverters.IsNull}}"/>
|
||
</Grid>
|
||
</Grid>
|
||
</UserControl>
|