Files
LehrerApp/LehrerApp.Desktop/Views/Workload/TimeTrackingView.axaml
T
admin 52bb9c2c2f Arbeitszeit: Auswertung nach Kategorie/Gruppe + Pflichtstunden-Abgleich (Kapitel 6.3)
Dritter Tab "Auswertung": Zeitraum wahlweise Monat oder Schuljahr, Balken je Kategorie
und Gruppe. Neuer WorkloadSettingsService (gleiches JSON-Muster wie PeriodScheduleService)
für die Pflichtstundenzahl pro Woche, bewusst direkt im Auswertungs-Tab editierbar statt
in den Einstellungen, da das Feld nur dort gebraucht wird. Export (6.3.3) bleibt offen,
da er an das noch fehlende Kapitel 11 (Export-Infrastruktur) hängt.
2026-08-15 23:26:06 +02:00

102 lines
5.7 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:LehrerApp.Desktop.ViewModels.Workload"
xmlns:models="clr-namespace:LehrerApp.Core.Models;assembly=LehrerApp.Core"
x:Class="LehrerApp.Desktop.Views.Workload.TimeTrackingView"
x:DataType="vm:TimeTrackingViewModel">
<ScrollViewer>
<StackPanel Margin="20,16" Spacing="16">
<!-- Timer (6.2.1) -->
<Border Background="{DynamicResource SystemControlBackgroundAltHighBrush}" CornerRadius="8" Padding="16">
<StackPanel Spacing="10">
<TextBlock Text="Timer" FontWeight="SemiBold" FontSize="14"/>
<Grid ColumnDefinitions="*,8,*" IsEnabled="{Binding !IsTimerRunning}">
<StackPanel Grid.Column="0" Spacing="4">
<TextBlock Text="Aufgabe (optional)" FontSize="12" Opacity="0.7"/>
<ComboBox ItemsSource="{Binding OpenTasks}" SelectedItem="{Binding SelectedTimerTask}"
HorizontalAlignment="Stretch" PlaceholderText="Keine Aufgabe">
<ComboBox.ItemTemplate>
<DataTemplate x:DataType="models:WorkTask">
<TextBlock Text="{Binding Title}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</StackPanel>
<StackPanel Grid.Column="2" Spacing="4">
<TextBlock Text="Kategorie" FontSize="12" Opacity="0.7"/>
<ComboBox ItemsSource="{Binding CategoryOptions}" SelectedItem="{Binding SelectedTimerCategory}"
HorizontalAlignment="Stretch"/>
</StackPanel>
</Grid>
<Grid ColumnDefinitions="Auto,*">
<Button Grid.Column="0" Content="▶ Start" Command="{Binding StartTimerCommand}"
IsVisible="{Binding !IsTimerRunning}"/>
<Button Grid.Column="0" Content="■ Stop" Command="{Binding StopTimerCommand}"
IsVisible="{Binding IsTimerRunning}"/>
<TextBlock Grid.Column="1" Text="{Binding RunningSinceDisplay}" VerticalAlignment="Center"
Margin="12,0,0,0" FontWeight="SemiBold"/>
</Grid>
</StackPanel>
</Border>
<!-- Wochenübersicht (6.2.3) -->
<Border Background="{DynamicResource SystemControlBackgroundAltHighBrush}" CornerRadius="8" Padding="16">
<StackPanel Spacing="10">
<Grid ColumnDefinitions="*,Auto">
<TextBlock Grid.Column="0" Text="Diese Woche" FontWeight="SemiBold" FontSize="14"/>
<TextBlock Grid.Column="1" Text="{Binding TotalWeekMinutesDisplay}" Opacity="0.7" FontSize="12"/>
</Grid>
<ItemsControl ItemsSource="{Binding CategorySummaries}">
<ItemsControl.ItemTemplate>
<DataTemplate x:DataType="vm:CategoryTimeSummary">
<Grid ColumnDefinitions="120,*,60" Margin="0,3">
<TextBlock Grid.Column="0" Text="{Binding Category}" FontSize="12" VerticalAlignment="Center"/>
<ProgressBar Grid.Column="1" Value="{Binding BarFraction}" Maximum="1" Height="8"
VerticalAlignment="Center" Margin="8,0"/>
<TextBlock Grid.Column="2" Text="{Binding MinutesDisplay}" FontSize="12"
HorizontalAlignment="Right" VerticalAlignment="Center"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<TextBlock Text="Noch keine Zeiten diese Woche erfasst." Opacity="0.6" FontSize="12"
IsVisible="{Binding !CategorySummaries.Count}"/>
</StackPanel>
</Border>
<!-- Einträge / Nacherfassung (6.2.2) -->
<Grid ColumnDefinitions="*,Auto">
<TextBlock Grid.Column="0" Text="Einträge" FontWeight="SemiBold" FontSize="14" VerticalAlignment="Center"/>
<Button Grid.Column="1" Content=" Nacherfassen" Command="{Binding AddEntryCommand}"/>
</Grid>
<ItemsControl ItemsSource="{Binding WeekEntries}">
<ItemsControl.ItemTemplate>
<DataTemplate x:DataType="vm:TimeEntryListItem">
<Border Background="{DynamicResource SystemControlBackgroundAltHighBrush}"
CornerRadius="6" Padding="12,8" Margin="0,0,0,6">
<Grid ColumnDefinitions="80,*,Auto,Auto">
<TextBlock Grid.Column="0" Text="{Binding DateDisplay}" FontSize="12" Opacity="0.6"
VerticalAlignment="Center"/>
<StackPanel Grid.Column="1" Margin="8,0" VerticalAlignment="Center">
<TextBlock Text="{Binding CategoryAndTaskDisplay}" FontSize="13"/>
<TextBlock Text="{Binding Description}" FontSize="11" Opacity="0.6"
IsVisible="{Binding Description, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"/>
</StackPanel>
<TextBlock Grid.Column="2" Text="{Binding DurationDisplay}" VerticalAlignment="Center"
Margin="0,0,10,0" FontSize="12"/>
<Button Grid.Column="3" Content="Löschen" FontSize="11" Padding="8,3"
Command="{Binding $parent[ItemsControl].((vm:TimeTrackingViewModel)DataContext).DeleteEntryCommand}"
CommandParameter="{Binding}"/>
</Grid>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<TextBlock Text="Noch keine Einträge diese Woche." Opacity="0.6" Margin="4,4"
IsVisible="{Binding !WeekEntries.Count}"/>
</StackPanel>
</ScrollViewer>
</UserControl>