218 lines
12 KiB
XML
218 lines
12 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"
|
||
x:Class="LehrerApp.Desktop.Views.Groups.StudentGroupGeneratorWindow"
|
||
x:DataType="vm:StudentGroupGeneratorViewModel"
|
||
Title="Gruppen zusammenstellen"
|
||
Width="780" Height="650" MinWidth="620" MinHeight="480"
|
||
WindowStartupLocation="CenterScreen">
|
||
|
||
<Grid RowDefinitions="Auto,*,Auto,Auto" Margin="24">
|
||
<StackPanel Grid.Row="0" Spacing="3" Margin="0,0,0,16">
|
||
<TextBlock Text="Gruppen zusammenstellen" Classes="dialogtitle"/>
|
||
<TextBlock Text="Eigenständiges Fenster für die Bildschirmfreigabe"
|
||
FontSize="12" Opacity="0.55"/>
|
||
</StackPanel>
|
||
|
||
<ScrollViewer Grid.Row="1">
|
||
<Grid x:Name="GroupResults">
|
||
<Grid.Transitions>
|
||
<Transitions>
|
||
<DoubleTransition Property="Opacity" Duration="0:0:0.18"/>
|
||
</Transitions>
|
||
</Grid.Transitions>
|
||
|
||
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Spacing="12"
|
||
IsVisible="{Binding !HasGeneratedGroups}">
|
||
<TextBlock Text="◇ ◇ ◇" FontSize="26" Opacity="0.35" HorizontalAlignment="Center"/>
|
||
<TextBlock Text="Noch keine Gruppen erstellt" FontSize="20" FontWeight="SemiBold"
|
||
HorizontalAlignment="Center"/>
|
||
<TextBlock Text="{Binding StatusText}" Opacity="0.6" TextAlignment="Center"
|
||
TextWrapping="Wrap" MaxWidth="460"/>
|
||
</StackPanel>
|
||
|
||
<ItemsControl ItemsSource="{Binding GeneratedGroups}"
|
||
IsVisible="{Binding HasGeneratedGroups}">
|
||
<ItemsControl.ItemsPanel>
|
||
<ItemsPanelTemplate>
|
||
<WrapPanel Orientation="Horizontal" HorizontalAlignment="Center"/>
|
||
</ItemsPanelTemplate>
|
||
</ItemsControl.ItemsPanel>
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate x:DataType="vm:GeneratedStudentGroup">
|
||
<Border Width="220" Margin="7" Padding="16"
|
||
Background="{DynamicResource AppCardBackgroundBrush}"
|
||
BorderBrush="{DynamicResource AppCardBorderBrush}"
|
||
BorderThickness="1" CornerRadius="12">
|
||
<StackPanel Spacing="9">
|
||
<TextBlock Text="{Binding Title}" FontSize="16" FontWeight="SemiBold"
|
||
Foreground="{DynamicResource AppAccentTextBrush}"/>
|
||
<ItemsControl ItemsSource="{Binding Members}">
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate x:DataType="vm:StudentGroupMember">
|
||
<TextBlock Text="{Binding Name}" Margin="0,3" TextWrapping="Wrap"/>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
</StackPanel>
|
||
</Border>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
</Grid>
|
||
</ScrollViewer>
|
||
|
||
<StackPanel Grid.Row="2" Spacing="8" Margin="0,12,0,10">
|
||
<Button Content="Gruppen zusammenstellen" Click="OnGenerate"
|
||
IsEnabled="{Binding CanGenerate}" HorizontalAlignment="Stretch"
|
||
HorizontalContentAlignment="Center" Height="48" FontSize="16" FontWeight="SemiBold"/>
|
||
<TextBlock Text="{Binding StatusText}" HorizontalAlignment="Center" Opacity="0.65"
|
||
IsVisible="{Binding HasGeneratedGroups}"/>
|
||
<Border Background="{DynamicResource AppChipBackgroundBrush}" CornerRadius="8" Padding="10,7"
|
||
IsVisible="{Binding WarningText, Converter={x:Static StringConverters.IsNotNullOrEmpty}}">
|
||
<TextBlock Text="{Binding WarningText}" TextWrapping="Wrap" FontSize="12"
|
||
Foreground="{DynamicResource AppStatusWarningBrush}"/>
|
||
</Border>
|
||
</StackPanel>
|
||
|
||
<Expander Grid.Row="3" Header="Optionen" IsExpanded="False">
|
||
<ScrollViewer MaxHeight="340">
|
||
<StackPanel Spacing="11" Margin="0,10,6,4">
|
||
<Grid ColumnDefinitions="*,16,*">
|
||
<StackPanel Grid.Column="0" Spacing="5">
|
||
<TextBlock Text="Lerngruppe" FontSize="12" Opacity="0.7"/>
|
||
<ComboBox ItemsSource="{Binding Groups}" SelectedItem="{Binding SelectedGroup}">
|
||
<ComboBox.ItemTemplate>
|
||
<DataTemplate x:DataType="vm:StudentDrawGroup">
|
||
<TextBlock Text="{Binding Name}"/>
|
||
</DataTemplate>
|
||
</ComboBox.ItemTemplate>
|
||
</ComboBox>
|
||
</StackPanel>
|
||
<StackPanel Grid.Column="2" Spacing="5">
|
||
<TextBlock Text="Teilnehmende" FontSize="12" Opacity="0.7"/>
|
||
<ComboBox ItemsSource="{Binding ParticipantModeOptions}"
|
||
SelectedItem="{Binding ParticipantModeName}"/>
|
||
</StackPanel>
|
||
</Grid>
|
||
|
||
<Grid ColumnDefinitions="*,16,*" Margin="0,5,0,0">
|
||
<StackPanel Grid.Column="0" Spacing="5">
|
||
<TextBlock Text="Zielgröße je Gruppe" FontSize="12" Opacity="0.7"/>
|
||
<NumericUpDown Value="{Binding TargetGroupSize}" Minimum="2" Maximum="20"
|
||
Increment="1" FormatString="0"/>
|
||
</StackPanel>
|
||
<StackPanel Grid.Column="2" Spacing="5">
|
||
<TextBlock Text="Zielanzahl Gruppen" FontSize="12" Opacity="0.7"/>
|
||
<NumericUpDown Value="{Binding TargetGroupCount}" Minimum="1" Maximum="20"
|
||
Increment="1" FormatString="0"/>
|
||
</StackPanel>
|
||
</Grid>
|
||
|
||
<Grid ColumnDefinitions="160,*,110" RowDefinitions="Auto,Auto,Auto" Margin="0,6,0,0">
|
||
<TextBlock Grid.Row="0" Text="Priorität Zielgröße" VerticalAlignment="Center"/>
|
||
<Slider Grid.Row="0" Grid.Column="1" Minimum="0" Maximum="100"
|
||
Value="{Binding SizePriority}" Margin="10,0"/>
|
||
<TextBlock Grid.Row="0" Grid.Column="2" Text="{Binding SizePriorityLabel}"
|
||
HorizontalAlignment="Right" VerticalAlignment="Center" FontSize="12" Opacity="0.7"/>
|
||
|
||
<TextBlock Grid.Row="1" Text="Priorität Gruppenanzahl" VerticalAlignment="Center"/>
|
||
<Slider Grid.Row="1" Grid.Column="1" Minimum="0" Maximum="100"
|
||
Value="{Binding CountPriority}" Margin="10,0"/>
|
||
<TextBlock Grid.Row="1" Grid.Column="2" Text="{Binding CountPriorityLabel}"
|
||
HorizontalAlignment="Right" VerticalAlignment="Center" FontSize="12" Opacity="0.7"/>
|
||
|
||
<TextBlock Grid.Row="2" Text="Leistungsverteilung" VerticalAlignment="Center"/>
|
||
<Slider Grid.Row="2" Grid.Column="1" Minimum="-100" Maximum="100"
|
||
Value="{Binding PerformanceDistribution}" Margin="10,0"/>
|
||
<TextBlock Grid.Row="2" Grid.Column="2" Text="{Binding PerformanceDistributionLabel}"
|
||
HorizontalAlignment="Right" VerticalAlignment="Center" FontSize="12" Opacity="0.7"/>
|
||
</Grid>
|
||
<Grid ColumnDefinitions="*,*" Margin="170,-7,110,0">
|
||
<TextBlock Text="homogen" FontSize="10" Opacity="0.5"/>
|
||
<TextBlock Grid.Column="1" Text="heterogen" HorizontalAlignment="Right" FontSize="10" Opacity="0.5"/>
|
||
</Grid>
|
||
|
||
<CheckBox Content="Förderschüler möglichst gleichmäßig verteilen"
|
||
IsChecked="{Binding DistributeSupportStudents}" Margin="0,5,0,0"/>
|
||
|
||
<Border Height="1" Background="{DynamicResource AppCardBorderBrush}" Margin="0,5"/>
|
||
<TextBlock Text="Paarregeln" FontWeight="SemiBold"/>
|
||
<TextBlock Text="Zwei Schüler auswählen und anschließend festlegen, ob sie zusammen oder getrennt arbeiten sollen."
|
||
FontSize="11" Opacity="0.55" TextWrapping="Wrap"/>
|
||
<Grid ColumnDefinitions="*,12,*" Margin="0,2,0,0">
|
||
<ComboBox Grid.Column="0" ItemsSource="{Binding PairCandidates}"
|
||
SelectedItem="{Binding SelectedPairStudentA}" PlaceholderText="Erster Schüler">
|
||
<ComboBox.ItemTemplate>
|
||
<DataTemplate x:DataType="vm:StudentPairCandidate">
|
||
<TextBlock Text="{Binding Name}"/>
|
||
</DataTemplate>
|
||
</ComboBox.ItemTemplate>
|
||
</ComboBox>
|
||
<ComboBox Grid.Column="2" ItemsSource="{Binding PairCandidates}"
|
||
SelectedItem="{Binding SelectedPairStudentB}" PlaceholderText="Zweiter Schüler">
|
||
<ComboBox.ItemTemplate>
|
||
<DataTemplate x:DataType="vm:StudentPairCandidate">
|
||
<TextBlock Text="{Binding Name}"/>
|
||
</DataTemplate>
|
||
</ComboBox.ItemTemplate>
|
||
</ComboBox>
|
||
</Grid>
|
||
<Grid ColumnDefinitions="*,12,*">
|
||
<Button Grid.Column="0" Content="Zusammen einteilen" Command="{Binding AddForcedPairCommand}"
|
||
HorizontalAlignment="Stretch"/>
|
||
<Button Grid.Column="2" Content="Voneinander trennen" Command="{Binding AddExcludedPairCommand}"
|
||
HorizontalAlignment="Stretch"/>
|
||
</Grid>
|
||
<TextBlock Text="{Binding PairingMessage}" Foreground="{DynamicResource AppStatusWarningBrush}"
|
||
FontSize="11" IsVisible="{Binding PairingMessage, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"/>
|
||
|
||
<Grid ColumnDefinitions="160,*,110" RowDefinitions="Auto,Auto">
|
||
<TextBlock Grid.Row="0" Text="Priorität zusammen" VerticalAlignment="Center"/>
|
||
<Slider Grid.Row="0" Grid.Column="1" Minimum="0" Maximum="100"
|
||
Value="{Binding ForcedPairPriority}" Margin="10,0"/>
|
||
<TextBlock Grid.Row="0" Grid.Column="2" Text="{Binding ForcedPairPriorityLabel}"
|
||
HorizontalAlignment="Right" VerticalAlignment="Center" FontSize="12" Opacity="0.7"/>
|
||
<TextBlock Grid.Row="1" Text="Priorität trennen" VerticalAlignment="Center"/>
|
||
<Slider Grid.Row="1" Grid.Column="1" Minimum="0" Maximum="100"
|
||
Value="{Binding ExcludedPairPriority}" Margin="10,0"/>
|
||
<TextBlock Grid.Row="1" Grid.Column="2" Text="{Binding ExcludedPairPriorityLabel}"
|
||
HorizontalAlignment="Right" VerticalAlignment="Center" FontSize="12" Opacity="0.7"/>
|
||
</Grid>
|
||
|
||
<Grid ColumnDefinitions="*,12,*">
|
||
<StackPanel Grid.Column="0" Spacing="5">
|
||
<TextBlock Text="Zusammen" FontSize="12" Opacity="0.7"/>
|
||
<ItemsControl ItemsSource="{Binding ForcedPairs}">
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate x:DataType="vm:StudentPairRule">
|
||
<Grid ColumnDefinitions="*,Auto" Margin="0,2">
|
||
<TextBlock Text="{Binding Display}" TextWrapping="Wrap" VerticalAlignment="Center"/>
|
||
<Button Grid.Column="1" Content="×" Command="{Binding RemoveCommand}"
|
||
ToolTip.Tip="Regel entfernen" Padding="8,2"/>
|
||
</Grid>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
</StackPanel>
|
||
<StackPanel Grid.Column="2" Spacing="5">
|
||
<TextBlock Text="Getrennt" FontSize="12" Opacity="0.7"/>
|
||
<ItemsControl ItemsSource="{Binding ExcludedPairs}">
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate x:DataType="vm:StudentPairRule">
|
||
<Grid ColumnDefinitions="*,Auto" Margin="0,2">
|
||
<TextBlock Text="{Binding Display}" TextWrapping="Wrap" VerticalAlignment="Center"/>
|
||
<Button Grid.Column="1" Content="×" Command="{Binding RemoveCommand}"
|
||
ToolTip.Tip="Regel entfernen" Padding="8,2"/>
|
||
</Grid>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
</StackPanel>
|
||
</Grid>
|
||
</StackPanel>
|
||
</ScrollViewer>
|
||
</Expander>
|
||
</Grid>
|
||
</Window>
|