151 lines
8.2 KiB
XML
151 lines
8.2 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.SeatingPlanTabView"
|
||
x:DataType="vm:SeatingPlanTabViewModel">
|
||
<UserControl.Styles>
|
||
<Style Selector="Border.seat">
|
||
<Setter Property="Background" Value="{DynamicResource SystemControlBackgroundAltHighBrush}"/>
|
||
<Setter Property="BorderBrush" Value="{DynamicResource SystemControlForegroundBaseLowBrush}"/>
|
||
<Setter Property="BorderThickness" Value="1"/>
|
||
</Style>
|
||
<Style Selector="Border.seat.occupied">
|
||
<Setter Property="BorderBrush" Value="{DynamicResource SystemAccentColor}"/>
|
||
</Style>
|
||
<Style Selector="Border.seat.droptarget">
|
||
<Setter Property="Background" Value="{DynamicResource SystemAccentColorLight2}"/>
|
||
<Setter Property="BorderBrush" Value="{DynamicResource SystemAccentColor}"/>
|
||
<Setter Property="BorderThickness" Value="2"/>
|
||
</Style>
|
||
</UserControl.Styles>
|
||
<Grid ColumnDefinitions="260,*">
|
||
<Border Grid.Column="0" BorderBrush="{DynamicResource SystemControlForegroundBaseLowBrush}"
|
||
BorderThickness="0,0,1,0" Padding="16">
|
||
<Grid RowDefinitions="Auto,*,Auto">
|
||
<StackPanel Grid.Row="0" Spacing="4" Margin="0,0,0,12">
|
||
<TextBlock Text="Sitzpläne" FontSize="18" FontWeight="SemiBold"/>
|
||
<TextBlock Text="Mehrere Pläne, z. B. für verschiedene Räume" FontSize="12"
|
||
Opacity="0.6" TextWrapping="Wrap"/>
|
||
</StackPanel>
|
||
<ListBox Grid.Row="1" ItemsSource="{Binding Plans}" SelectedItem="{Binding SelectedPlan}">
|
||
<ListBox.ItemTemplate>
|
||
<DataTemplate x:DataType="vm:SeatingPlanSummary">
|
||
<StackPanel Margin="4,6" Spacing="2">
|
||
<TextBlock Text="{Binding Name}" FontWeight="SemiBold"/>
|
||
<TextBlock Text="{Binding RoomDisplay}" FontSize="12" Opacity="0.6"/>
|
||
</StackPanel>
|
||
</DataTemplate>
|
||
</ListBox.ItemTemplate>
|
||
</ListBox>
|
||
<StackPanel Grid.Row="2" Spacing="8" Margin="0,12,0,0">
|
||
<Button Content="+ Sitzplan" Command="{Binding AddPlanCommand}" HorizontalAlignment="Stretch"/>
|
||
<Grid ColumnDefinitions="*,8,*" IsVisible="{Binding HasSelectedPlan}">
|
||
<Button Grid.Column="0" Content="Bearbeiten" Command="{Binding EditPlanCommand}"
|
||
HorizontalAlignment="Stretch"/>
|
||
<Button Grid.Column="2" Content="Löschen" Command="{Binding DeletePlanCommand}"
|
||
HorizontalAlignment="Stretch"/>
|
||
</Grid>
|
||
</StackPanel>
|
||
</Grid>
|
||
</Border>
|
||
|
||
<Grid Grid.Column="1">
|
||
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Spacing="10"
|
||
IsVisible="{Binding HasPlans, Converter={x:Static BoolConverters.Not}}">
|
||
<TextBlock Text="Noch kein Sitzplan" FontSize="20" FontWeight="SemiBold"
|
||
HorizontalAlignment="Center"/>
|
||
<TextBlock Text="Lege einen Plan an und ordne die Schüler den Plätzen zu."
|
||
Opacity="0.6" TextAlignment="Center"/>
|
||
<Button Content="Ersten Sitzplan anlegen" Command="{Binding AddPlanCommand}"
|
||
HorizontalAlignment="Center"/>
|
||
</StackPanel>
|
||
|
||
<Grid RowDefinitions="Auto,*" IsVisible="{Binding HasSelectedPlan}" Margin="24">
|
||
<Grid Grid.Row="0" ColumnDefinitions="*,Auto" Margin="0,0,0,18">
|
||
<StackPanel Spacing="3">
|
||
<TextBlock Text="{Binding PlanTitle}" FontSize="22" FontWeight="SemiBold"/>
|
||
<TextBlock Text="{Binding PlanSubtitle}" Opacity="0.65"/>
|
||
</StackPanel>
|
||
<StackPanel Grid.Column="1" VerticalAlignment="Bottom">
|
||
<TextBlock Text="{Binding AssignmentSummary}" HorizontalAlignment="Right" FontSize="12" Opacity="0.6"/>
|
||
<TextBlock Text="Ziehen: Platz ändern · Klicken: bewerten" HorizontalAlignment="Right"
|
||
FontSize="11" Opacity="0.5"/>
|
||
</StackPanel>
|
||
</Grid>
|
||
|
||
<ScrollViewer Grid.Row="1" HorizontalScrollBarVisibility="Auto"
|
||
VerticalScrollBarVisibility="Auto">
|
||
<StackPanel Spacing="14" HorizontalAlignment="Center">
|
||
<Border Background="{DynamicResource SystemControlBackgroundChromeMediumLowBrush}"
|
||
CornerRadius="6" Padding="36,8" HorizontalAlignment="Center">
|
||
<TextBlock Text="Tafel / Vorderseite" FontWeight="SemiBold" Opacity="0.75"/>
|
||
</Border>
|
||
<ItemsControl ItemsSource="{Binding Seats}" HorizontalAlignment="Center">
|
||
<ItemsControl.ItemsPanel>
|
||
<ItemsPanelTemplate>
|
||
<UniformGrid Columns="{Binding PlanColumns}"/>
|
||
</ItemsPanelTemplate>
|
||
</ItemsControl.ItemsPanel>
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate x:DataType="vm:SeatCellViewModel">
|
||
<Border Classes="seat" Classes.occupied="{Binding IsOccupied}"
|
||
Classes.droptarget="{Binding IsDropTarget}"
|
||
Width="190" MinHeight="76" Margin="5" Padding="10"
|
||
CornerRadius="7"
|
||
DragDrop.AllowDrop="True"
|
||
DragDrop.DragEnter="OnSeatDragEnter"
|
||
DragDrop.DragLeave="OnSeatDragLeave"
|
||
DragDrop.DragOver="OnSeatDragOver"
|
||
DragDrop.Drop="OnSeatDrop"
|
||
PointerPressed="OnDragSourcePressed"
|
||
PointerMoved="OnDragSourceMoved"
|
||
PointerReleased="OnDragSourceReleased"
|
||
Tapped="OnSeatTapped">
|
||
<StackPanel Spacing="5">
|
||
<Grid ColumnDefinitions="*,Auto">
|
||
<TextBlock Text="{Binding PositionLabel}" FontSize="10" Opacity="0.5"/>
|
||
<TextBlock Grid.Column="1" Text="⠿" Opacity="0.45" IsVisible="{Binding IsOccupied}"/>
|
||
</Grid>
|
||
<TextBlock Text="{Binding StudentName}" FontWeight="SemiBold" FontSize="13"
|
||
HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||
</StackPanel>
|
||
</Border>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
|
||
<Border DragDrop.AllowDrop="True" DragDrop.DragOver="OnUnassignedDragOver"
|
||
DragDrop.Drop="OnUnassignedDrop"
|
||
BorderBrush="{DynamicResource SystemControlForegroundBaseLowBrush}"
|
||
BorderThickness="1" CornerRadius="7" Padding="12" Margin="5,8">
|
||
<StackPanel Spacing="8">
|
||
<TextBlock Text="NICHT ZUGEORDNET" FontSize="10" FontWeight="Bold" Opacity="0.5"/>
|
||
<TextBlock Text="Schüler hierher ziehen, um einen Platz zu leeren."
|
||
FontSize="11" Opacity="0.5"/>
|
||
<ItemsControl ItemsSource="{Binding UnassignedStudents}">
|
||
<ItemsControl.ItemsPanel>
|
||
<ItemsPanelTemplate><WrapPanel/></ItemsPanelTemplate>
|
||
</ItemsControl.ItemsPanel>
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate x:DataType="vm:StudentSeatOption">
|
||
<Border Background="{DynamicResource SystemAccentColorLight2}" CornerRadius="5"
|
||
Padding="9,5" Margin="0,0,6,6"
|
||
PointerPressed="OnDragSourcePressed"
|
||
PointerMoved="OnDragSourceMoved"
|
||
PointerReleased="OnDragSourceReleased">
|
||
<TextBlock Text="{Binding DisplayName}" FontSize="12"/>
|
||
</Border>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
<TextBlock Text="Alle Schüler sind zugeordnet." Classes="emptyhint"
|
||
IsVisible="{Binding !UnassignedStudents.Count}"/>
|
||
</StackPanel>
|
||
</Border>
|
||
</StackPanel>
|
||
</ScrollViewer>
|
||
</Grid>
|
||
</Grid>
|
||
</Grid>
|
||
</UserControl>
|