CI / build-and-test (push) Canceled after 0s
CalendarDatePicker.SelectedDate ist (WPF-Toolkit-Ursprung) DateTime?, nicht DateTimeOffset? wie beim eingebauten DatePicker - Avalonia bietet dafuer keine automatische Konvertierung. Ohne Converter blieb das Feld leer und ein Klick auf einen Kalendertag warf eine InvalidCastException. Betraf auch die schon bestehenden Bindings in WithdrawStudentDialog und CreateLetterDialog, nur bislang unbemerkt. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
90 lines
6.0 KiB
XML
90 lines
6.0 KiB
XML
<Window xmlns="https://github.com/avaloniaui"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:vm="clr-namespace:LehrerApp.Desktop.ViewModels.Students"
|
|
xmlns:conv="clr-namespace:LehrerApp.Desktop.Converters"
|
|
x:Class="LehrerApp.Desktop.Views.Students.WebUntisDocumentationComparisonDialog"
|
|
x:DataType="vm:WebUntisDocumentationComparisonViewModel"
|
|
Title="Klassenbucheinträge mit WebUntis abgleichen" Width="1150" Height="720"
|
|
MinWidth="900" MinHeight="500" WindowStartupLocation="CenterOwner">
|
|
<Grid RowDefinitions="Auto,Auto,Auto,2*,Auto,Auto,1*,Auto" Margin="24" RowSpacing="8">
|
|
<StackPanel Grid.Row="0" Spacing="4">
|
|
<TextBlock Text="Klassenbucheinträge mit WebUntis abgleichen" Classes="dialogtitle"/>
|
|
<TextBlock TextWrapping="Wrap" FontSize="12" Opacity="0.65"
|
|
Text="Nur eigene WebUntis-Einträge (Benutzer = eigener Login). Zeilen ohne automatische Zuordnung bitte manuell einem/einer Schüler*in zuweisen. Bereits lokal vorhandene Einträge sind gesperrt."/>
|
|
</StackPanel>
|
|
<StackPanel Grid.Row="1" Orientation="Horizontal" Spacing="8">
|
|
<CalendarDatePicker SelectedDate="{Binding StartDate, Converter={x:Static conv:DateTimeOffsetToDateTimeConverter.Instance}}"/>
|
|
<TextBlock Text="bis" VerticalAlignment="Center"/>
|
|
<CalendarDatePicker SelectedDate="{Binding EndDate, Converter={x:Static conv:DateTimeOffsetToDateTimeConverter.Instance}}"/>
|
|
<Button Content="Klassenbucheinträge laden" Command="{Binding LoadCommand}" IsEnabled="{Binding !Busy}"/>
|
|
</StackPanel>
|
|
|
|
<Grid Grid.Row="2" ColumnDefinitions="Auto,70,55,65,1.1*,1.1*,1*,1.3*,1.3*" ColumnSpacing="8" Margin="4,0">
|
|
<TextBlock Grid.Column="1" Text="Datum" FontSize="11" Opacity="0.6"/>
|
|
<TextBlock Grid.Column="2" Text="Klasse" FontSize="11" Opacity="0.6"/>
|
|
<TextBlock Grid.Column="3" Text="Fach" FontSize="11" Opacity="0.6"/>
|
|
<TextBlock Grid.Column="4" Text="Name (WebUntis)" FontSize="11" Opacity="0.6"/>
|
|
<TextBlock Grid.Column="5" Text="Zuordnung" FontSize="11" Opacity="0.6"/>
|
|
<TextBlock Grid.Column="6" Text="Kategorie" FontSize="11" Opacity="0.6"/>
|
|
<TextBlock Grid.Column="7" Text="Text" FontSize="11" Opacity="0.6"/>
|
|
<TextBlock Grid.Column="8" Text="Lokal am selben Tag" FontSize="11" Opacity="0.6"/>
|
|
</Grid>
|
|
<ScrollViewer Grid.Row="3">
|
|
<ItemsControl ItemsSource="{Binding Rows}">
|
|
<ItemsControl.ItemTemplate>
|
|
<DataTemplate x:DataType="vm:WebUntisDocumentationRow">
|
|
<Grid ColumnDefinitions="Auto,70,55,65,1.1*,1.1*,1*,1.3*,1.3*" ColumnSpacing="8" Margin="0,3">
|
|
<CheckBox Grid.Column="0" IsChecked="{Binding Selected}" IsEnabled="{Binding CanApply}"/>
|
|
<TextBlock Grid.Column="1" Text="{Binding DateLabel}" VerticalAlignment="Center"/>
|
|
<TextBlock Grid.Column="2" Text="{Binding ClassName}" VerticalAlignment="Center"/>
|
|
<TextBlock Grid.Column="3" Text="{Binding Subject}" VerticalAlignment="Center"/>
|
|
<TextBlock Grid.Column="4" Text="{Binding UntisStudentName}" VerticalAlignment="Center" TextWrapping="Wrap"/>
|
|
<ComboBox Grid.Column="5" ItemsSource="{Binding Candidates}" SelectedItem="{Binding AssignedStudent}"
|
|
DisplayMemberBinding="{Binding FullName}" PlaceholderText="Schüler*in wählen…"
|
|
HorizontalAlignment="Stretch"/>
|
|
<StackPanel Grid.Column="6" Spacing="0">
|
|
<TextBlock Text="{Binding CategoryName}" TextWrapping="Wrap"/>
|
|
<TextBlock Text="{Binding CategoryGroup}" FontSize="11" Opacity="0.6"/>
|
|
</StackPanel>
|
|
<TextBlock Grid.Column="7" Text="{Binding Text}" TextWrapping="Wrap" VerticalAlignment="Center"/>
|
|
<TextBlock Grid.Column="8" Text="{Binding ExistingLocalEntry}" TextWrapping="Wrap"
|
|
Foreground="DarkOrange" VerticalAlignment="Center"
|
|
IsVisible="{Binding ExistingLocalEntry, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"/>
|
|
</Grid>
|
|
</DataTemplate>
|
|
</ItemsControl.ItemTemplate>
|
|
</ItemsControl>
|
|
</ScrollViewer>
|
|
<Grid Grid.Row="4" ColumnDefinitions="*,Auto" ColumnSpacing="8">
|
|
<TextBlock Grid.Column="0" Text="{Binding Status}" FontSize="12" TextWrapping="Wrap" VerticalAlignment="Center"/>
|
|
<Button Grid.Column="1" Content="Markierte übernehmen" Command="{Binding ApplyCommand}" IsEnabled="{Binding !Busy}"/>
|
|
</Grid>
|
|
|
|
<StackPanel Grid.Row="5" Spacing="2">
|
|
<TextBlock Text="Lokale Einträge im Zeitraum ohne WebUntis-Gegenstück" FontWeight="SemiBold" FontSize="13"/>
|
|
<TextBlock FontSize="12" Opacity="0.65" TextWrapping="Wrap"
|
|
Text="Kein Schreibzugriff auf WebUntis — Text zum manuellen Nacherfassen in die Zwischenablage kopieren."/>
|
|
</StackPanel>
|
|
<ScrollViewer Grid.Row="6">
|
|
<ItemsControl ItemsSource="{Binding LocalOnlyRows}">
|
|
<ItemsControl.ItemTemplate>
|
|
<DataTemplate x:DataType="vm:LocalOnlyDocumentationRow">
|
|
<Grid ColumnDefinitions="80,1.2*,1.5*,2.5*,Auto" ColumnSpacing="8" Margin="0,3">
|
|
<TextBlock Grid.Column="0" Text="{Binding DateLabel}" VerticalAlignment="Center"/>
|
|
<TextBlock Grid.Column="1" Text="{Binding StudentName}" VerticalAlignment="Center" TextWrapping="Wrap"/>
|
|
<TextBlock Grid.Column="2" Text="{Binding GroupName}" VerticalAlignment="Center" TextWrapping="Wrap"/>
|
|
<StackPanel Grid.Column="3">
|
|
<TextBlock Text="{Binding Title}" FontWeight="SemiBold"/>
|
|
<TextBlock Text="{Binding Content}" TextWrapping="Wrap" FontSize="12" Opacity="0.8"/>
|
|
</StackPanel>
|
|
<Button Grid.Column="4" Content="In Zwischenablage" Click="OnCopyToClipboardClick"/>
|
|
</Grid>
|
|
</DataTemplate>
|
|
</ItemsControl.ItemTemplate>
|
|
</ItemsControl>
|
|
</ScrollViewer>
|
|
|
|
<Button Grid.Row="7" Content="Schließen" Click="OnClose" HorizontalAlignment="Right"/>
|
|
</Grid>
|
|
</Window>
|