Kurs-Übersicht: neue Karte "Fehlende Hausaufgaben" listet Schüler mit nicht gemachter Hausaufgabe aus der letzten Mitarbeitssitzung. Aufgabenverwaltung: WorkTask.Kind unterscheidet jetzt Arbeitsaufträge von reinen Erinnerungen ohne Zeitbezug (z.B. "morgen Ansage an die Klasse machen") - eigener Button "🔔 Erinnerung", eigenes Icon in Liste/Dashboard, läuft nicht in die Zeitauswertung ein. Drei Bugfixes aus Nutzer-Feedback: - Dashboard-Kalender zeigte eine Stunde doppelt, wenn sie über "Sitzung erzeugen" mit einer Mitarbeitssitzung verknüpft war. - Der Sitzplan-Tab legte beim bloßen Öffnen einer Gruppe (nicht erst bei echter Nutzung) eine leere "Sitzplan"-Sitzung für heute an. - Der "Meine Klasse"-Ring im Kalender erschien erst, sobald für den Tag eine Lesson existierte, statt schon laut Stundenplan. Außerdem: Drawer-Icons pinnen jetzt explizit auf die farbige Emoji-Schrift (Windows kann sonst je nach Font-Fallback auf eine einfarbige Variante ausweichen). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
76 lines
4.8 KiB
XML
76 lines
4.8 KiB
XML
<UserControl xmlns="https://github.com/avaloniaui"
|
||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||
xmlns:vm="clr-namespace:LehrerApp.Desktop.ViewModels.Workload"
|
||
x:Class="LehrerApp.Desktop.Views.Workload.WorkTaskListView"
|
||
x:DataType="vm:WorkTaskListViewModel">
|
||
<Grid RowDefinitions="Auto,*">
|
||
<Grid Grid.Row="0" ColumnDefinitions="Auto,Auto,Auto,*,Auto" Margin="16,14,16,4" VerticalAlignment="Center">
|
||
<ComboBox Grid.Column="0" ItemsSource="{Binding StatusFilterOptions}"
|
||
SelectedItem="{Binding StatusFilter}" Margin="0,0,8,0"/>
|
||
<ComboBox Grid.Column="1" ItemsSource="{Binding CategoryFilterOptions}"
|
||
SelectedItem="{Binding CategoryFilter}" Margin="0,0,8,0"/>
|
||
<ComboBox Grid.Column="2" ItemsSource="{Binding GroupFilterOptions}"
|
||
SelectedItem="{Binding GroupFilter}"/>
|
||
<StackPanel Grid.Column="4" Orientation="Horizontal" Spacing="8">
|
||
<Button Content="🔔 + Erinnerung" Command="{Binding AddReminderCommand}"
|
||
ToolTip.Tip="Kurze Notiz ohne Zeitbezug, z.B. 'morgen Ansage an die Klasse machen' — läuft nicht in die Zeiterfassung/Auswertung ein."/>
|
||
<Button Content="+ Neue Aufgabe" Command="{Binding AddTaskCommand}"/>
|
||
</StackPanel>
|
||
</Grid>
|
||
|
||
<ScrollViewer Grid.Row="1" Margin="16,10,16,16">
|
||
<StackPanel>
|
||
<ItemsControl ItemsSource="{Binding Tasks}">
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate x:DataType="vm:WorkTaskListItem">
|
||
<Border Background="{DynamicResource SystemControlBackgroundAltHighBrush}"
|
||
CornerRadius="6" Padding="12,10" Margin="0,0,0,8">
|
||
<Grid ColumnDefinitions="Auto,*,Auto,Auto,Auto,Auto">
|
||
<Button Grid.Column="0" Background="{Binding StatusColorHex}" Padding="8,4"
|
||
CornerRadius="4" VerticalAlignment="Center"
|
||
Command="{Binding $parent[ItemsControl].((vm:WorkTaskListViewModel)DataContext).CycleStatusCommand}"
|
||
CommandParameter="{Binding}"
|
||
ToolTip.Tip="Klicken, um den Status zu wechseln">
|
||
<TextBlock Text="{Binding StatusLabel}" FontSize="12" Foreground="White"/>
|
||
</Button>
|
||
<StackPanel Grid.Column="1" Margin="10,0" VerticalAlignment="Center">
|
||
<StackPanel Orientation="Horizontal" Spacing="4">
|
||
<TextBlock Text="🔔" FontSize="12" IsVisible="{Binding IsReminder}"
|
||
ToolTip.Tip="Erinnerung — kein Zeitbezug, nicht Teil der Auswertung"/>
|
||
<TextBlock Text="{Binding Title}" FontWeight="SemiBold" FontSize="13"/>
|
||
</StackPanel>
|
||
<TextBlock FontSize="11" Opacity="0.6">
|
||
<Run Text="{Binding CategoryLabel}"/>
|
||
<Run Text=" · "/>
|
||
<Run Text="{Binding GroupName}"/>
|
||
</TextBlock>
|
||
<!-- Wiederkehrende Aufgabe (6.1.4) -->
|
||
<TextBlock Text="{Binding RecurrenceLabel}" FontSize="11" Opacity="0.6"
|
||
IsVisible="{Binding IsRecurring}"/>
|
||
<!-- Ist-Zeit vs. Schätzung (6.2.4) -->
|
||
<TextBlock Text="{Binding ActualVsEstimateDisplay}" FontSize="11" Opacity="0.6"
|
||
IsVisible="{Binding HasActualTime}"/>
|
||
</StackPanel>
|
||
<TextBlock Grid.Column="2" Text="{Binding DueDateDisplay}" VerticalAlignment="Center"
|
||
Margin="0,0,10,0" FontSize="12" Foreground="{Binding DueDateColorHex}"/>
|
||
<TextBlock Grid.Column="3" Text="{Binding EstimatedMinutesDisplay}"
|
||
VerticalAlignment="Center" Opacity="0.6" FontSize="12" Margin="0,0,10,0"
|
||
IsVisible="{Binding !HasActualTime}"/>
|
||
<Button Grid.Column="4" Content="Bearbeiten" FontSize="11" Padding="8,3" Margin="0,0,4,0"
|
||
Command="{Binding $parent[ItemsControl].((vm:WorkTaskListViewModel)DataContext).EditTaskCommand}"
|
||
CommandParameter="{Binding}"/>
|
||
<Button Grid.Column="5" Content="Löschen" FontSize="11" Padding="8,3"
|
||
Command="{Binding $parent[ItemsControl].((vm:WorkTaskListViewModel)DataContext).DeleteTaskCommand}"
|
||
CommandParameter="{Binding}"/>
|
||
</Grid>
|
||
</Border>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
<TextBlock Text="Keine Aufgaben in dieser Filteransicht." Opacity="0.6" Margin="4,12"
|
||
IsVisible="{Binding !Tasks.Count}"/>
|
||
</StackPanel>
|
||
</ScrollViewer>
|
||
</Grid>
|
||
</UserControl>
|