GroupMembership.IsSupportStudent markiert Förderschüler unabhängig von der Niveaudifferenzierung (Checkbox-Spalte in der Schülerliste; in differenzierten Gruppen zählt das Förderniveau). Punkteeingabe und Deckblätter einer Förderarbeit zeigen nur Förderschüler und Schüler mit vorhandenem Ergebnis. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
227 lines
14 KiB
XML
227 lines
14 KiB
XML
<Window xmlns="https://github.com/avaloniaui"
|
||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||
xmlns:vm="clr-namespace:LehrerApp.Desktop.ViewModels.Groups"
|
||
xmlns:models="clr-namespace:LehrerApp.Core.Models;assembly=LehrerApp.Core"
|
||
x:Class="LehrerApp.Desktop.Views.Groups.ExamDialog"
|
||
x:DataType="vm:ExamDialogViewModel"
|
||
Title="{Binding DialogTitle}"
|
||
Width="640" Height="680" MinWidth="560" MinHeight="420"
|
||
CanResize="True" WindowStartupLocation="CenterOwner">
|
||
|
||
<Grid RowDefinitions="*,Auto" Margin="24">
|
||
<ScrollViewer Grid.Row="0">
|
||
<StackPanel Spacing="14" Margin="0,0,12,0">
|
||
<StackPanel Spacing="2">
|
||
<TextBlock Text="{Binding DialogTitle}" Classes="dialogtitle"/>
|
||
<TextBlock Text="{Binding SubjectDisplay}" FontSize="12" Opacity="0.6"/>
|
||
</StackPanel>
|
||
|
||
<StackPanel Spacing="4">
|
||
<TextBlock Text="Titel *" FontSize="12" Opacity="0.7"/>
|
||
<TextBox Text="{Binding Title}" PlaceholderText="z.B. 1. Klausur Kinetik"/>
|
||
<TextBlock Text="{Binding TitleError}" Foreground="Red" FontSize="11"
|
||
IsVisible="{Binding TitleError, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"/>
|
||
</StackPanel>
|
||
|
||
<StackPanel Spacing="4">
|
||
<TextBlock Text="Art der Arbeit" FontSize="12" Opacity="0.7"/>
|
||
<ComboBox ItemsSource="{Binding KindOptions}" SelectedItem="{Binding KindName}"
|
||
IsEnabled="{Binding CanChooseKind}" HorizontalAlignment="Stretch"
|
||
ToolTip.Tip="Nur Klausuren zählen als schriftliche Note. Tests, kontrollierte Hausaufgaben und sonstige Arbeiten fließen unter "Sonstige" in die Zeugnisnote ein. Folgearbeiten übernehmen die Art der ersten Arbeit."/>
|
||
</StackPanel>
|
||
|
||
<StackPanel Spacing="4" IsVisible="{Binding IsDifferentiated}">
|
||
<TextBlock Text="Niveau" FontSize="12" Opacity="0.7"/>
|
||
<ComboBox ItemsSource="{Binding NiveauOptions}" SelectedItem="{Binding SelectedNiveauName}"
|
||
HorizontalAlignment="Stretch"
|
||
ToolTip.Tip="Strich = für alle Schüler der Gruppe. Bei E/G/Förder zeigt die Punkteeingabe nur die Schüler mit passendem Niveau."/>
|
||
</StackPanel>
|
||
|
||
<Grid ColumnDefinitions="*,12,*,12,*">
|
||
<StackPanel Grid.Column="0" Spacing="4">
|
||
<TextBlock Text="Datum *" FontSize="12" Opacity="0.7"/>
|
||
<TextBox Text="{Binding DateText}" PlaceholderText="TT.MM.JJJJ"/>
|
||
<TextBlock Text="{Binding DateTextError}" Foreground="Red" FontSize="11"
|
||
IsVisible="{Binding DateTextError, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"/>
|
||
<TextBlock Text="{Binding WeekLoadHint}" Foreground="#F59E0B" FontSize="11"
|
||
IsVisible="{Binding WeekLoadHint, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"/>
|
||
</StackPanel>
|
||
<StackPanel Grid.Column="2" Spacing="4">
|
||
<TextBlock Text="Klausurnummer" FontSize="12" Opacity="0.7"/>
|
||
<NumericUpDown Value="{Binding ExamNumber}" Minimum="1" Maximum="20" FormatString="0"
|
||
ShowButtonSpinner="False"/>
|
||
</StackPanel>
|
||
<StackPanel Grid.Column="4" Spacing="4">
|
||
<TextBlock Text="Rückgabedatum" FontSize="12" Opacity="0.7"/>
|
||
<TextBox Text="{Binding ReturnedAtText}" PlaceholderText="TT.MM.JJJJ"/>
|
||
<TextBlock Text="{Binding ReturnedAtTextError}" Foreground="Red" FontSize="11"
|
||
IsVisible="{Binding ReturnedAtTextError, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"/>
|
||
</StackPanel>
|
||
</Grid>
|
||
|
||
<StackPanel Spacing="4">
|
||
<TextBlock Text="{Binding LinkedExamLabel}" FontSize="12" Opacity="0.7"/>
|
||
<Grid ColumnDefinitions="*,Auto" ColumnSpacing="8">
|
||
<ComboBox ItemsSource="{Binding AvailableOriginalExams}" SelectedItem="{Binding SelectedOriginalExam}"
|
||
PlaceholderText="Keine Verknüpfung" HorizontalAlignment="Stretch">
|
||
<ComboBox.ItemTemplate>
|
||
<DataTemplate x:DataType="models:Exam">
|
||
<StackPanel Orientation="Horizontal" Spacing="8">
|
||
<TextBlock Text="{Binding Date}"/>
|
||
<TextBlock Text="{Binding Title}"/>
|
||
</StackPanel>
|
||
</DataTemplate>
|
||
</ComboBox.ItemTemplate>
|
||
</ComboBox>
|
||
<Button Grid.Column="1" Content="Auswahl löschen" Command="{Binding ClearOriginalExamCommand}"
|
||
IsVisible="{Binding HasSelectedOriginalExam}"/>
|
||
</Grid>
|
||
<ComboBox ItemsSource="{Binding FollowUpKindOptions}" SelectedItem="{Binding FollowUpKindName}"
|
||
IsVisible="{Binding HasSelectedOriginalExam}" HorizontalAlignment="Stretch"
|
||
ToolTip.Tip="Wiederholung: Arbeit für alle, es zählt die gewählte Regel. Nachschreibarbeit: inhaltlich eigene Arbeit nur für Schüler, die die erste Arbeit versäumt haben. Förderarbeit: inhaltlich eigene Arbeit für die als Förderschüler markierten Schüler der Gruppe, die sie statt der ersten Arbeit schreiben (darf am selben Tag liegen; das Datum der ersten Arbeit wird vorgeschlagen). Bei Nachschreib- und Förderarbeit ersetzt die Note eine fehlende Note der ersten Arbeit, und die Punkteeingabe blendet Schüler mit vorhandener Note der ersten Arbeit aus."/>
|
||
<ComboBox ItemsSource="{Binding RepeatRuleOptions}" SelectedItem="{Binding RepeatRuleName}"
|
||
IsVisible="{Binding ShowRepeatRule}"/>
|
||
<TextBlock Text="{Binding RepeatError}" Foreground="Red" FontSize="11"
|
||
IsVisible="{Binding RepeatError, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"/>
|
||
</StackPanel>
|
||
|
||
<StackPanel Spacing="4">
|
||
<TextBlock Text="Notizen" FontSize="12" Opacity="0.7"/>
|
||
<TextBox Text="{Binding Notes}" AcceptsReturn="True" Height="56" TextWrapping="Wrap"/>
|
||
</StackPanel>
|
||
|
||
<Separator Margin="0,4"/>
|
||
|
||
<Grid ColumnDefinitions="*,Auto">
|
||
<TextBlock Grid.Column="0" Text="Aufgaben" FontSize="14" FontWeight="SemiBold" VerticalAlignment="Center"/>
|
||
<Button Grid.Column="1" Content="+ Aufgabe" Command="{Binding AddTaskCommand}"/>
|
||
</Grid>
|
||
|
||
<CheckBox Content="Gewichtung verwenden" IsChecked="{Binding UseWeighting}"/>
|
||
|
||
<Grid ColumnDefinitions="*,Auto">
|
||
<TextBlock Grid.Column="0" Text="{Binding TotalPointsDisplay}" FontSize="12" Opacity="0.7"
|
||
VerticalAlignment="Center"/>
|
||
<TextBlock Grid.Column="1" Text="Achtung: noch keine Punkte vergeben" Foreground="Red" FontSize="12"
|
||
IsVisible="{Binding TotalPointsWarning}" VerticalAlignment="Center"/>
|
||
</Grid>
|
||
<TextBlock Text="{Binding TaskPointsError}" Foreground="Red" FontSize="11"
|
||
IsVisible="{Binding TaskPointsError, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"/>
|
||
|
||
<ItemsControl ItemsSource="{Binding Tasks}">
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate x:DataType="vm:ExamTaskEditItem">
|
||
<Border BorderBrush="{DynamicResource SystemControlForegroundBaseLowBrush}"
|
||
BorderThickness="1" CornerRadius="4" Padding="8" Margin="0,0,0,6">
|
||
<StackPanel Spacing="6">
|
||
<Grid ColumnDefinitions="26,*,Auto,Auto,Auto,Auto,Auto">
|
||
<TextBlock Grid.Column="0" Text="{Binding DisplayNr}" VerticalAlignment="Center" Opacity="0.6"/>
|
||
<TextBox Grid.Column="1" Text="{Binding Title}" PlaceholderText="Titel der Aufgabe" Margin="0,0,6,0"/>
|
||
<NumericUpDown Grid.Column="2" Value="{Binding MaxPoints}" Minimum="0" FormatString="0.##"
|
||
Width="72" ShowButtonSpinner="False" Margin="0,0,6,0" ToolTip.Tip="Maximalpunkte"/>
|
||
<NumericUpDown Grid.Column="3" Value="{Binding Weight}" Minimum="0" FormatString="0.##"
|
||
Width="72" ShowButtonSpinner="False" Margin="0,0,6,0" ToolTip.Tip="Gewichtung"
|
||
IsVisible="{Binding ShowWeight}"/>
|
||
<Button Grid.Column="4" Content="↑" Command="{Binding MoveUpCommand}" Padding="6,2"
|
||
ToolTip.Tip="Nach oben"/>
|
||
<Button Grid.Column="5" Content="↓" Command="{Binding MoveDownCommand}" Padding="6,2"
|
||
ToolTip.Tip="Nach unten" Margin="4,0,0,0"/>
|
||
<Button Grid.Column="6" Content="✕" Command="{Binding RemoveCommand}" Padding="6,2"
|
||
ToolTip.Tip="Entfernen" Margin="4,0,0,0"/>
|
||
</Grid>
|
||
|
||
<StackPanel Orientation="Horizontal" Spacing="12">
|
||
<StackPanel Orientation="Horizontal" Spacing="5" VerticalAlignment="Center">
|
||
<TextBlock Text="Fassung" VerticalAlignment="Center" FontSize="11"/>
|
||
<ComboBox ItemsSource="{Binding VariantOptions}" SelectedItem="{Binding VariantName}" Width="90"/>
|
||
</StackPanel>
|
||
<CheckBox Content="Bonusaufgabe" IsChecked="{Binding IsBonus}"
|
||
ToolTip.Tip="Erreichte Bonuspunkte erhöhen die Punktzahl; die Maximalpunkte zählen nicht zum Grundwert."/>
|
||
</StackPanel>
|
||
|
||
<Button Content="{Binding CompetencySummary}" Command="{Binding ToggleCompetencyPanelCommand}"
|
||
HorizontalAlignment="Left" FontSize="11" Padding="6,2"/>
|
||
|
||
<ItemsControl ItemsSource="{Binding CompetencyTagGroups}" IsVisible="{Binding IsCompetencyPanelOpen}">
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate x:DataType="vm:CompetencyTagGroup">
|
||
<StackPanel Margin="12,2">
|
||
<TextBlock Text="{Binding DisplayName}" FontSize="11" Opacity="0.6"/>
|
||
<ItemsControl ItemsSource="{Binding Items}">
|
||
<ItemsControl.ItemsPanel>
|
||
<ItemsPanelTemplate>
|
||
<WrapPanel/>
|
||
</ItemsPanelTemplate>
|
||
</ItemsControl.ItemsPanel>
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate x:DataType="vm:CompetencyTag">
|
||
<ToggleButton Content="{Binding Display}" IsChecked="{Binding IsSelected}"
|
||
Margin="0,2,6,2" FontSize="11" Padding="6,2"/>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
</StackPanel>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
</StackPanel>
|
||
</Border>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
|
||
<Separator Margin="0,4"/>
|
||
|
||
<Grid ColumnDefinitions="*,Auto">
|
||
<TextBlock Grid.Column="0" Text="Notenschlüssel" FontSize="14" FontWeight="SemiBold" VerticalAlignment="Center"/>
|
||
<Button Grid.Column="1" Content="+ Stufe" Command="{Binding AddGradingKeyRowCommand}"/>
|
||
</Grid>
|
||
|
||
<Grid ColumnDefinitions="*,8,Auto">
|
||
<ComboBox Grid.Column="0" ItemsSource="{Binding AvailableTemplates}"
|
||
SelectedItem="{Binding SelectedTemplate}"
|
||
PlaceholderText="Vorlage auswählen" HorizontalAlignment="Stretch">
|
||
<ComboBox.ItemTemplate>
|
||
<DataTemplate x:DataType="models:GradingKeyTemplate">
|
||
<TextBlock Text="{Binding Name}"/>
|
||
</DataTemplate>
|
||
</ComboBox.ItemTemplate>
|
||
</ComboBox>
|
||
<Button Grid.Column="2" Content="Anwenden" Command="{Binding ApplyTemplateCommand}"/>
|
||
</Grid>
|
||
|
||
<ItemsControl ItemsSource="{Binding GradingKeyEntries}">
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate x:DataType="vm:GradingKeyEntryEditItem">
|
||
<Grid ColumnDefinitions="90,90,*,Auto" Margin="0,0,0,6">
|
||
<TextBox Grid.Column="0" Text="{Binding Grade}" PlaceholderText="Note" Margin="0,0,6,0"/>
|
||
<NumericUpDown Grid.Column="1" Value="{Binding MinPercent}" Minimum="0" Maximum="100"
|
||
FormatString="0.##" Width="90" ShowButtonSpinner="False" Margin="0,0,6,0"
|
||
ToolTip.Tip="Mindest-Prozentgrenze"/>
|
||
<TextBlock Grid.Column="2" Text="{Binding AbsolutePointsDisplay}" FontSize="12" Opacity="0.65"
|
||
VerticalAlignment="Center"/>
|
||
<Button Grid.Column="3" Content="✕" Command="{Binding RemoveCommand}" Padding="6,2"
|
||
ToolTip.Tip="Entfernen"/>
|
||
</Grid>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
|
||
<TextBlock Text="{Binding GradingKeyValidation}" Foreground="Red" FontSize="12"
|
||
IsVisible="{Binding GradingKeyValidation, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"/>
|
||
|
||
<Grid ColumnDefinitions="*,8,Auto">
|
||
<TextBox Grid.Column="0" Text="{Binding NewTemplateName}" PlaceholderText="Name für neue Vorlage"/>
|
||
<Button Grid.Column="2" Content="Als Vorlage speichern" Command="{Binding SaveAsTemplateCommand}"/>
|
||
</Grid>
|
||
</StackPanel>
|
||
</ScrollViewer>
|
||
|
||
<Grid Grid.Row="1" ColumnDefinitions="*,8,*" Margin="0,20,0,0">
|
||
<Button Grid.Column="0" Content="Abbrechen" HorizontalAlignment="Stretch" Click="OnCancel"/>
|
||
<Button Grid.Column="2" Content="{Binding SaveButtonText}"
|
||
HorizontalAlignment="Stretch" Click="OnSave"/>
|
||
</Grid>
|
||
</Grid>
|
||
</Window>
|