Files
LehrerApp/LehrerApp.Desktop/Views/Groups/ParticipationWizardDialog.axaml
T
adminandClaude Sonnet 5 629b8d1bf0 Codepflege: CLAUDE.md und UI-Konsolidierung (Kapitel 13.4)
CLAUDE.md mit Projektkonventionen für künftige Claude-Code-Sitzungen.
Wiederkehrende UI-Muster konsolidiert: neue PageHeader-Control für
Titel/Untertitel in den Listen- und Detailansichten, globale Styles für
Dialog-Titel und Leerlisten-Hinweise statt inline wiederholter Werte.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-13 16:14:40 +02:00

164 lines
11 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:LehrerApp.Desktop.ViewModels.Groups"
xmlns:views="clr-namespace:LehrerApp.Desktop.Views.Groups"
x:Class="LehrerApp.Desktop.Views.Groups.ParticipationWizardDialog"
x:DataType="vm:ParticipationWizardDialogViewModel"
Title="Mitarbeits-Assistent"
Width="1080" Height="820" MinWidth="760" MinHeight="620"
CanResize="True" WindowStartupLocation="CenterOwner">
<Grid RowDefinitions="Auto,Auto,*,Auto,Auto,Auto" Margin="24">
<StackPanel Grid.Row="0" Spacing="2">
<TextBlock Text="{Binding GroupLabel}" FontSize="13" Opacity="0.5"/>
<Grid ColumnDefinitions="Auto,*,Auto">
<TextBlock Grid.Column="0" Text="{Binding StudentName}" Classes="dialogtitle"/>
<StackPanel Grid.Column="2" Orientation="Horizontal" Spacing="8">
<Button Content="◂ Zurück" Command="{Binding PreviousStudentCommand}"/>
<TextBlock Text="{Binding ProgressText}" VerticalAlignment="Center" Opacity="0.6" FontSize="12"/>
<Button Content="Weiter ▸" Command="{Binding NextStudentCommand}"/>
</StackPanel>
</Grid>
</StackPanel>
<Grid Grid.Row="1" RowDefinitions="Auto,Auto" ColumnDefinitions="*,Auto" Margin="0,14,0,6">
<TextBlock Grid.Row="0" Grid.Column="0" Text="Mitarbeit im Zeitverlauf" FontSize="13"
FontWeight="SemiBold" VerticalAlignment="Center"/>
<StackPanel Grid.Row="0" Grid.Column="1" Orientation="Horizontal" Spacing="7" VerticalAlignment="Center">
<TextBlock Text="Zoom" FontSize="10" Opacity="0.6" VerticalAlignment="Center"/>
<Slider Minimum="0.65" Maximum="2.25" Value="{Binding TimelineZoom}" Width="120"
TickFrequency="0.1"/>
<Button Content="Legende ▾" Padding="8,3" FontSize="10">
<Button.Flyout>
<Flyout Placement="BottomEdgeAlignedRight">
<StackPanel Width="310" Spacing="6" Margin="12">
<TextBlock Text="Hausaufgaben" FontWeight="SemiBold" FontSize="11"/>
<TextBlock Text="· keine Hausaufgabe aufgegeben" FontSize="10" Opacity="0.65"/>
<TextBlock Text="✓ gemacht" FontSize="10" Foreground="#2E9D57"/>
<TextBlock Text="◐ teilweise angefertigt Rest offen" FontSize="10" Foreground="#D98200"/>
<TextBlock Text="◕ teilweise angefertigt Rest nachgereicht" FontSize="10" Foreground="#7F77DD"/>
<TextBlock Text="◒ teilweise angefertigt Rest nicht nachgereicht" FontSize="10" Foreground="#D64545"/>
<TextBlock Text="! nicht gemacht Nachreichen offen" FontSize="10" Foreground="#D98200"/>
<TextBlock Text="✕ nicht gemacht nicht mehr nachgereicht" FontSize="10" Foreground="#D64545"/>
<TextBlock Text="↺ nachgereicht" FontSize="10" Foreground="#7F77DD"/>
<Separator Margin="0,4"/>
<TextBlock Text="Anwesenheit" FontWeight="SemiBold" FontSize="11"/>
<TextBlock Text="· noch nicht kontrolliert" FontSize="10" Opacity="0.65"/>
<TextBlock Text="✓ anwesend" FontSize="10" Foreground="#2E9D57"/>
<TextBlock Text="? Entschuldigung offen" FontSize="10" Foreground="#D98200"/>
<TextBlock Text="⊘ krank, entschuldigt" FontSize="10" Foreground="#4C86A8"/>
<TextBlock Text="! unentschuldigt" FontSize="10" Foreground="#D96C00"/>
<TextBlock Text="✕ geschwänzt" FontSize="10" Foreground="#D64545"/>
<TextBlock Text="◇ andere Schulveranstaltung" FontSize="10" Foreground="#5277C3"/>
<TextBlock Text="Klick auf ein Symbol wechselt zum nächsten Status."
FontSize="9" Opacity="0.55" Margin="0,5,0,0" TextWrapping="Wrap"/>
</StackPanel>
</Flyout>
</Button.Flyout>
</Button>
</StackPanel>
<WrapPanel Grid.Row="1" Grid.ColumnSpan="2" Margin="0,7,0,0" VerticalAlignment="Center">
<TextBlock Text="Kurven" FontSize="10" FontWeight="SemiBold" Opacity="0.6"
VerticalAlignment="Center" Margin="0,0,7,0"/>
<ToggleButton IsChecked="{Binding ShowQuality}" Padding="7,2" FontSize="10" Margin="0,0,5,3">
<StackPanel Orientation="Horizontal" Spacing="5"><Border Width="9" Height="9" CornerRadius="5" Background="#2E86DE"/><TextBlock Text="Qualität"/></StackPanel>
</ToggleButton>
<ToggleButton IsChecked="{Binding ShowQuantity}" Padding="7,2" FontSize="10" Margin="0,0,5,3">
<StackPanel Orientation="Horizontal" Spacing="5"><Border Width="9" Height="9" CornerRadius="5" Background="#E67E22"/><TextBlock Text="Quantität"/></StackPanel>
</ToggleButton>
<ToggleButton IsChecked="{Binding ShowWorkphase}" Padding="7,2" FontSize="10" Margin="0,0,12,3">
<StackPanel Orientation="Horizontal" Spacing="5"><Border Width="9" Height="9" CornerRadius="5" Background="#16A085"/><TextBlock Text="Arbeitsphase"/></StackPanel>
</ToggleButton>
<ToggleButton Content="Datenpunkte" IsChecked="{Binding ShowDataPoints}"
Padding="7,2" FontSize="10" Margin="0,0,12,3"/>
<TextBlock Text="Trends (121)" FontSize="10" FontWeight="SemiBold" Opacity="0.6"
VerticalAlignment="Center" Margin="0,0,7,0"/>
<ToggleButton Content="Gesamt gewichtet" IsChecked="{Binding ShowWeightedTrend}"
Padding="7,2" FontSize="10" Margin="0,0,5,3"/>
<ToggleButton Content="Qualität" IsChecked="{Binding ShowQualityTrend}"
Padding="7,2" FontSize="10" Margin="0,0,5,3"/>
<ToggleButton Content="Quantität" IsChecked="{Binding ShowQuantityTrend}"
Padding="7,2" FontSize="10" Margin="0,0,5,3"/>
<ToggleButton Content="Arbeitsphase" IsChecked="{Binding ShowWorkphaseTrend}"
Padding="7,2" FontSize="10" Margin="0,0,0,3"/>
</WrapPanel>
</Grid>
<Border Grid.Row="2" BorderBrush="{DynamicResource SystemControlForegroundBaseLowBrush}"
BorderThickness="1" CornerRadius="7" ClipToBounds="True">
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled">
<views:ParticipationTimelineChart Timeline="{Binding Timeline}" Zoom="{Binding TimelineZoom}"
ShowQuality="{Binding ShowQuality}"
ShowQuantity="{Binding ShowQuantity}"
ShowWorkphase="{Binding ShowWorkphase}"
ShowDataPoints="{Binding ShowDataPoints}"
ShowWeightedTrend="{Binding ShowWeightedTrend}"
ShowQualityTrend="{Binding ShowQualityTrend}"
ShowQuantityTrend="{Binding ShowQuantityTrend}"
ShowWorkphaseTrend="{Binding ShowWorkphaseTrend}"/>
</ScrollViewer>
</Border>
<StackPanel Grid.Row="3" Spacing="4" Margin="0,14,0,0">
<TextBlock Text="Abschnittsnoten dieses Schülers" FontSize="13" FontWeight="SemiBold"/>
<ItemsControl ItemsSource="{Binding Sections}">
<ItemsControl.ItemTemplate>
<DataTemplate x:DataType="vm:WizardSectionRow">
<Grid ColumnDefinitions="140,170,100,Auto,*" Margin="0,3">
<TextBlock Grid.Column="0" Text="{Binding Label}" VerticalAlignment="Center" FontSize="12"/>
<TextBlock Grid.Column="1" Text="{Binding RangeDisplay}" VerticalAlignment="Center" FontSize="11" Opacity="0.6"/>
<TextBox Grid.Column="2" Text="{Binding Value}" IsEnabled="{Binding !IsOpen}"
PlaceholderText="Note" FontSize="12"/>
<Button Grid.Column="3" Content="Speichern" Command="{Binding SaveCommand}"
IsVisible="{Binding !IsOpen}" Margin="6,0,0,0" FontSize="11" Padding="8,3"/>
<TextBlock Grid.Column="4" Text="{Binding StatusMessage}" Foreground="Green" FontSize="11"
VerticalAlignment="Center" Margin="8,0,0,0"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
<Grid Grid.Row="4" ColumnDefinitions="*,*" Margin="0,14,0,0">
<Border Grid.Column="0" BorderBrush="{DynamicResource SystemControlForegroundBaseLowBrush}"
BorderThickness="1" CornerRadius="6" Padding="10" Margin="0,0,6,0">
<StackPanel Spacing="6">
<TextBlock Text="Abschnitt abschließen" FontSize="12" FontWeight="SemiBold"/>
<Grid ColumnDefinitions="*,100" ColumnSpacing="6">
<StackPanel Grid.Column="0" Spacing="2">
<TextBox Text="{Binding NewSectionLabel}" PlaceholderText="Bezeichnung"/>
<TextBlock Text="{Binding NewSectionLabelError}" Foreground="Red" FontSize="11"
IsVisible="{Binding NewSectionLabelError, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"/>
</StackPanel>
<StackPanel Grid.Column="1" Spacing="2">
<TextBox Text="{Binding NewSectionEndDateText}" PlaceholderText="TT.MM.JJJJ"/>
<TextBlock Text="{Binding NewSectionEndDateTextError}" Foreground="Red" FontSize="11"
IsVisible="{Binding NewSectionEndDateTextError, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"/>
</StackPanel>
</Grid>
<Button Content="Abschnitt für alle Schüler abschließen" Command="{Binding CloseSectionCommand}"
HorizontalAlignment="Stretch"/>
</StackPanel>
</Border>
<Border Grid.Column="1" BorderBrush="{DynamicResource SystemControlForegroundBaseLowBrush}"
BorderThickness="1" CornerRadius="6" Padding="10" Margin="6,0,0,0">
<StackPanel Spacing="6">
<TextBlock Text="Halbjahresnote aus Abschnitten" FontSize="12" FontWeight="SemiBold"/>
<ComboBox ItemsSource="{Binding RollupPeriodOptions}" SelectedItem="{Binding RollupPeriod}"
HorizontalAlignment="Stretch"/>
<TextBlock Text="{Binding RollupStatusMessage}" Foreground="Green" FontSize="11"
IsVisible="{Binding RollupStatusMessage, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"/>
<Button Content="Für alle Schüler übernehmen" Command="{Binding ApplyRollupCommand}"
HorizontalAlignment="Stretch"/>
</StackPanel>
</Border>
</Grid>
<Button Grid.Row="5" Content="Schließen" HorizontalAlignment="Right" Margin="0,14,0,0" Click="OnClose"/>
</Grid>
</Window>