545 lines
32 KiB
XML
545 lines
32 KiB
XML
<UserControl xmlns="https://github.com/avaloniaui"
|
||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||
xmlns:vm="clr-namespace:LehrerApp.Desktop.ViewModels"
|
||
x:Class="LehrerApp.Desktop.Views.Dashboard.DashboardView"
|
||
x:DataType="vm:DashboardViewModel">
|
||
|
||
<UserControl.Styles>
|
||
<Style Selector="TextBlock.overdue">
|
||
<Setter Property="Foreground" Value="Red"/>
|
||
<Setter Property="FontWeight" Value="SemiBold"/>
|
||
</Style>
|
||
<Style Selector="Border.daycell.selected">
|
||
<Setter Property="Background" Value="{DynamicResource SystemControlBackgroundAccentBrush}"/>
|
||
<Setter Property="BorderThickness" Value="2"/>
|
||
<Setter Property="BorderBrush" Value="{DynamicResource SystemAccentColor}"/>
|
||
</Style>
|
||
</UserControl.Styles>
|
||
|
||
<ScrollViewer Padding="24">
|
||
<StackPanel Spacing="20">
|
||
|
||
<!-- Begrüßung -->
|
||
<Grid ColumnDefinitions="*,Auto">
|
||
<StackPanel>
|
||
<TextBlock Text="{Binding Greeting}" FontSize="14" Opacity="0.6"/>
|
||
<TextBlock Text="{Binding CurrentDate}" FontSize="24" FontWeight="SemiBold"/>
|
||
</StackPanel>
|
||
<Button Grid.Column="1" Content="Dashboard anpassen" Command="{Binding ToggleDashboardSettingsCommand}"
|
||
VerticalAlignment="Center"/>
|
||
</Grid>
|
||
|
||
<Border Background="{DynamicResource SystemControlBackgroundAltHighBrush}" CornerRadius="8"
|
||
Padding="12" IsVisible="{Binding IsDashboardSettingsOpen}">
|
||
<ItemsControl ItemsSource="{Binding DashboardCards}">
|
||
<ItemsControl.ItemsPanel>
|
||
<ItemsPanelTemplate><WrapPanel Orientation="Horizontal"/></ItemsPanelTemplate>
|
||
</ItemsControl.ItemsPanel>
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate x:DataType="vm:DashboardCardOption">
|
||
<Border BorderBrush="{DynamicResource SystemControlForegroundBaseLowBrush}"
|
||
BorderThickness="1" CornerRadius="6" Padding="8" Margin="4">
|
||
<StackPanel Orientation="Horizontal" Spacing="6">
|
||
<CheckBox Content="{Binding Title}" IsChecked="{Binding IsVisible}" VerticalAlignment="Center"/>
|
||
<Button Content="↑" Padding="6,2"
|
||
Command="{Binding $parent[ItemsControl].((vm:DashboardViewModel)DataContext).MoveCardUpCommand}"
|
||
CommandParameter="{Binding}"/>
|
||
<Button Content="↓" Padding="6,2"
|
||
Command="{Binding $parent[ItemsControl].((vm:DashboardViewModel)DataContext).MoveCardDownCommand}"
|
||
CommandParameter="{Binding}"/>
|
||
</StackPanel>
|
||
</Border>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
</Border>
|
||
|
||
<Grid ColumnDefinitions="*,*" RowDefinitions="Auto,Auto,Auto,Auto,Auto,Auto">
|
||
|
||
<!-- Heutige Stunden -->
|
||
<Border Grid.Column="{Binding TodayCard.Column}" Grid.Row="{Binding TodayCard.Row}"
|
||
IsVisible="{Binding TodayCard.IsVisible}" Margin="0,0,8,8"
|
||
Background="{DynamicResource SystemControlBackgroundAltHighBrush}"
|
||
CornerRadius="8" Padding="16">
|
||
<StackPanel>
|
||
<TextBlock Text="HEUTE" FontSize="11" FontWeight="Bold"
|
||
Opacity="0.5" Margin="0,0,0,10"/>
|
||
<ItemsControl ItemsSource="{Binding TodaysLessons}">
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate DataType="vm:LessonItem">
|
||
<Button Command="{Binding $parent[ItemsControl].((vm:DashboardViewModel)DataContext).OpenLessonCommand}"
|
||
CommandParameter="{Binding}"
|
||
Background="Transparent" BorderThickness="0" Padding="0" Margin="0,4"
|
||
HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch">
|
||
<Grid ColumnDefinitions="4,*,Auto">
|
||
<Border Grid.Column="0" Width="4" CornerRadius="2"
|
||
Background="{DynamicResource SystemAccentColor}"
|
||
Margin="0,0,10,0"/>
|
||
<StackPanel Grid.Column="1">
|
||
<TextBlock Text="{Binding GroupName}" FontWeight="SemiBold" FontSize="13"/>
|
||
<TextBlock Text="{Binding Topic}" FontSize="12" Opacity="0.7"
|
||
TextTrimming="CharacterEllipsis"/>
|
||
</StackPanel>
|
||
<StackPanel Grid.Column="2" HorizontalAlignment="Right" Margin="8,0,0,0">
|
||
<TextBlock Text="{Binding TimeDisplay}" FontSize="12" Opacity="0.7"
|
||
HorizontalAlignment="Right"
|
||
IsVisible="{Binding TimeDisplay, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"/>
|
||
<TextBlock Text="{Binding Room}" FontSize="11" Opacity="0.6"
|
||
HorizontalAlignment="Right" IsVisible="{Binding HasRoom}"/>
|
||
</StackPanel>
|
||
</Grid>
|
||
</Button>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
<TextBlock Text="Keine Stunden heute" Classes="emptyhint"
|
||
IsVisible="{Binding !TodaysLessons.Count}"/>
|
||
</StackPanel>
|
||
</Border>
|
||
|
||
<!-- Offene Aufgaben -->
|
||
<Border Grid.Column="{Binding TasksCard.Column}" Grid.Row="{Binding TasksCard.Row}"
|
||
IsVisible="{Binding TasksCard.IsVisible}" Margin="8,0,0,8"
|
||
Background="{DynamicResource SystemControlBackgroundAltHighBrush}"
|
||
CornerRadius="8" Padding="16">
|
||
<StackPanel>
|
||
<Grid ColumnDefinitions="*,Auto,Auto" Margin="0,0,0,10">
|
||
<TextBlock Grid.Column="0" Text="OFFENE AUFGABEN" FontSize="11" FontWeight="Bold"
|
||
Opacity="0.5" VerticalAlignment="Center"/>
|
||
<Button Grid.Column="1" Content="🔔+" FontSize="12" Padding="7,2" Margin="0,0,4,0"
|
||
ToolTip.Tip="Erinnerung anlegen" Command="{Binding AddReminderCommand}"/>
|
||
<Button Grid.Column="2" Content="+" FontSize="12" Padding="8,2"
|
||
ToolTip.Tip="Aufgabe anlegen" Command="{Binding AddTaskCommand}"/>
|
||
</Grid>
|
||
<ItemsControl ItemsSource="{Binding OpenTasks}">
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate DataType="vm:TaskItem">
|
||
<Grid ColumnDefinitions="4,Auto,*,Auto" Margin="0,3">
|
||
<Border Grid.Column="0" Background="#D32F2F" CornerRadius="2" Margin="0,0,6,0"
|
||
IsVisible="{Binding IsHighPriority}" ToolTip.Tip="Hohe Priorität"/>
|
||
<TextBlock Grid.Column="1" Text="🔔" FontSize="12" Margin="0,0,4,0"
|
||
IsVisible="{Binding IsReminder}"
|
||
ToolTip.Tip="Erinnerung — kein Zeitbezug"/>
|
||
<TextBlock Grid.Column="2" Text="{Binding Title}"
|
||
FontSize="13" TextTrimming="CharacterEllipsis"/>
|
||
<TextBlock Grid.Column="3" Text="{Binding DueDate}"
|
||
FontSize="12" Opacity="0.6" Margin="8,0,0,0"/>
|
||
</Grid>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
<TextBlock Text="Keine offenen Aufgaben" Classes="emptyhint"
|
||
IsVisible="{Binding !OpenTasks.Count}"/>
|
||
</StackPanel>
|
||
</Border>
|
||
|
||
<!-- Kalender: feste Position direkt unter Heute/Aufgaben, damit die wachsende
|
||
Lerngruppen-Liste darunter ihn nicht nach unten verdrängt. -->
|
||
<Border Grid.Column="{Binding CalendarCard.Column}" Grid.Row="{Binding CalendarCard.Row}"
|
||
IsVisible="{Binding CalendarCard.IsVisible}" Margin="0,0,8,8"
|
||
Background="{DynamicResource SystemControlBackgroundAltHighBrush}"
|
||
CornerRadius="8" Padding="16">
|
||
<StackPanel Spacing="8">
|
||
<StackPanel.Styles>
|
||
<!-- Basiswerte als Style (nicht lokal), damit die spezifischeren Selektoren
|
||
(z.B. .daycell.ownclass) sie überschreiben können. -->
|
||
<Style Selector="Border.daycell">
|
||
<Setter Property="Background" Value="Transparent"/>
|
||
<Setter Property="BorderThickness" Value="0"/>
|
||
<Setter Property="BorderBrush" Value="Transparent"/>
|
||
<Setter Property="Opacity" Value="1"/>
|
||
</Style>
|
||
<Style Selector="Border.daycell.haslesson">
|
||
<Setter Property="Background" Value="#14808080"/>
|
||
</Style>
|
||
<Style Selector="Border.daycell.ownclass">
|
||
<Setter Property="BorderThickness" Value="2"/>
|
||
<Setter Property="BorderBrush" Value="{DynamicResource SystemControlBackgroundAccentBrush}"/>
|
||
</Style>
|
||
<Style Selector="Border.daycell.outside">
|
||
<Setter Property="Opacity" Value="0.35"/>
|
||
</Style>
|
||
<Style Selector="TextBlock.daynum">
|
||
<Setter Property="FontWeight" Value="Normal"/>
|
||
</Style>
|
||
<Style Selector="TextBlock.daynum.today">
|
||
<Setter Property="FontWeight" Value="Bold"/>
|
||
<Setter Property="Foreground" Value="{DynamicResource SystemControlForegroundAccentBrush}"/>
|
||
</Style>
|
||
</StackPanel.Styles>
|
||
|
||
<Grid ColumnDefinitions="Auto,*,Auto,Auto,Auto">
|
||
<TextBlock Grid.Column="0" Text="KALENDER" FontSize="11" FontWeight="Bold"
|
||
Opacity="0.5" VerticalAlignment="Center"/>
|
||
<TextBlock Grid.Column="1" Text="{Binding CalendarMonthLabel}" FontSize="13"
|
||
FontWeight="SemiBold" TextAlignment="Center" VerticalAlignment="Center"
|
||
Width="130" Margin="12,0"/>
|
||
<Button Grid.Column="2" Content="Heute" FontSize="11" Padding="8,2"
|
||
Command="{Binding CalendarTodayCommand}" Margin="0,0,4,0"/>
|
||
<Button Grid.Column="3" Content="‹" Padding="8,2" Command="{Binding PrevMonthCommand}"/>
|
||
<Button Grid.Column="4" Content="›" Padding="8,2" Command="{Binding NextMonthCommand}" Margin="4,0,0,0"/>
|
||
</Grid>
|
||
|
||
<ItemsControl ItemsSource="{Binding CalendarWeekdayHeaders}">
|
||
<ItemsControl.ItemsPanel>
|
||
<ItemsPanelTemplate><UniformGrid Columns="7"/></ItemsPanelTemplate>
|
||
</ItemsControl.ItemsPanel>
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate>
|
||
<TextBlock Text="{Binding}" FontSize="10" Opacity="0.5" FontWeight="Bold"
|
||
HorizontalAlignment="Center" Width="32"/>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
|
||
<ItemsControl ItemsSource="{Binding CalendarDays}">
|
||
<ItemsControl.ItemsPanel>
|
||
<ItemsPanelTemplate><UniformGrid Columns="7"/></ItemsPanelTemplate>
|
||
</ItemsControl.ItemsPanel>
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate x:DataType="vm:CalendarDayCell">
|
||
<Button Background="Transparent" BorderThickness="0" Padding="0" Margin="1"
|
||
Command="{Binding $parent[ItemsControl].((vm:DashboardViewModel)DataContext).SelectCalendarDayCommand}"
|
||
CommandParameter="{Binding}" ToolTip.Tip="{Binding Tooltip}">
|
||
<Border Classes="daycell" Classes.ownclass="{Binding IsOwnClassDay}"
|
||
Classes.haslesson="{Binding HasLesson}"
|
||
Classes.outside="{Binding !IsCurrentMonth}"
|
||
Classes.selected="{Binding IsSelected}"
|
||
Width="32" Height="32" CornerRadius="6">
|
||
<Grid>
|
||
<TextBlock Classes="daynum" Classes.today="{Binding IsToday}"
|
||
Text="{Binding DayNumber}" FontSize="12"
|
||
HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||
<StackPanel Orientation="Horizontal" Spacing="2" Margin="0,0,0,3"
|
||
HorizontalAlignment="Center" VerticalAlignment="Bottom">
|
||
<Ellipse Width="5" Height="5" Fill="#1E88E5" IsVisible="{Binding HasSession}"/>
|
||
<Ellipse Width="5" Height="5" Fill="#E53935" IsVisible="{Binding HasExam}"/>
|
||
<Ellipse Width="5" Height="5" Fill="#FF8A00" IsVisible="{Binding HasAnnualPlanEvent}"/>
|
||
</StackPanel>
|
||
</Grid>
|
||
</Border>
|
||
</Button>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
|
||
<WrapPanel Orientation="Horizontal" Margin="0,4,0,0">
|
||
<StackPanel Orientation="Horizontal" Spacing="4" Margin="0,0,14,4">
|
||
<Border Width="10" Height="10" CornerRadius="3" Background="#14808080"/>
|
||
<TextBlock Text="Unterricht" FontSize="10" Opacity="0.6"/>
|
||
</StackPanel>
|
||
<StackPanel Orientation="Horizontal" Spacing="4" Margin="0,0,14,4">
|
||
<Ellipse Width="7" Height="7" Fill="#E53935"/>
|
||
<TextBlock Text="Klausur" FontSize="10" Opacity="0.6"/>
|
||
</StackPanel>
|
||
<StackPanel Orientation="Horizontal" Spacing="4" Margin="0,0,14,4">
|
||
<Ellipse Width="7" Height="7" Fill="#1E88E5"/>
|
||
<TextBlock Text="Sitzung" FontSize="10" Opacity="0.6"/>
|
||
</StackPanel>
|
||
<StackPanel Orientation="Horizontal" Spacing="4" Margin="0,0,14,4">
|
||
<Ellipse Width="7" Height="7" Fill="#FF8A00"/>
|
||
<TextBlock Text="Jahresplan" FontSize="10" Opacity="0.6"/>
|
||
</StackPanel>
|
||
<StackPanel Orientation="Horizontal" Spacing="4" Margin="0,0,14,4">
|
||
<Border Width="10" Height="10" CornerRadius="3" BorderThickness="2"
|
||
BorderBrush="{DynamicResource SystemControlBackgroundAccentBrush}"/>
|
||
<TextBlock Text="Meine Klasse" FontSize="10" Opacity="0.6"/>
|
||
</StackPanel>
|
||
</WrapPanel>
|
||
|
||
<Separator Margin="0,4"/>
|
||
<TextBlock Text="{Binding SelectedDayLabel}" FontWeight="SemiBold" FontSize="12"/>
|
||
<ItemsControl ItemsSource="{Binding SelectedDayEvents}">
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate x:DataType="vm:CalendarEventItem">
|
||
<Button Background="Transparent" BorderThickness="0" Padding="0" Margin="0,3"
|
||
HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch"
|
||
Command="{Binding $parent[ItemsControl].((vm:DashboardViewModel)DataContext).OpenCalendarEventCommand}"
|
||
CommandParameter="{Binding}">
|
||
<Grid ColumnDefinitions="Auto,*">
|
||
<TextBlock Text="{Binding KindLabel}" FontSize="10" Opacity="0.55" Width="58"/>
|
||
<StackPanel Grid.Column="1">
|
||
<TextBlock Text="{Binding Title}" FontSize="12" FontWeight="SemiBold"/>
|
||
<TextBlock Text="{Binding Subtitle}" FontSize="10" Opacity="0.6"/>
|
||
<TextBlock Text="{Binding Description}" FontSize="10" Opacity="0.6"
|
||
TextWrapping="Wrap"
|
||
IsVisible="{Binding Description, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"/>
|
||
</StackPanel>
|
||
</Grid>
|
||
</Button>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
<TextBlock Text="Keine Termine an diesem Tag." Classes="emptyhint"
|
||
IsVisible="{Binding !SelectedDayEvents.Count}"/>
|
||
</StackPanel>
|
||
</Border>
|
||
|
||
<!-- Offene Entschuldigungen: neben dem Kalender, ebenfalls feste Position -->
|
||
<Border Grid.Column="{Binding ExcusesCard.Column}" Grid.Row="{Binding ExcusesCard.Row}"
|
||
IsVisible="{Binding ExcusesCard.IsVisible}" Margin="8,0,0,8" VerticalAlignment="Top"
|
||
Background="{DynamicResource SystemControlBackgroundAltHighBrush}"
|
||
CornerRadius="8" Padding="16">
|
||
<StackPanel>
|
||
<TextBlock Text="OFFENE ENTSCHULDIGUNGEN" FontSize="11" FontWeight="Bold"
|
||
Opacity="0.5" Margin="0,0,0,10"/>
|
||
<ItemsControl ItemsSource="{Binding OpenExcuses}">
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate DataType="vm:OpenExcuseItem">
|
||
<Grid ColumnDefinitions="*,Auto,Auto" Margin="0,4">
|
||
<StackPanel Grid.Column="0">
|
||
<TextBlock Text="{Binding StudentName}" FontSize="13" FontWeight="SemiBold"
|
||
TextTrimming="CharacterEllipsis"/>
|
||
<TextBlock FontSize="11" Opacity="0.6">
|
||
<Run Text="{Binding GroupName}"/>
|
||
<Run Text=" · "/>
|
||
<Run Text="{Binding DateDisplay}"/>
|
||
</TextBlock>
|
||
</StackPanel>
|
||
<Button Grid.Column="1" Content="Entschuldigt" FontSize="11" Padding="7,3"
|
||
Command="{Binding MarkExcusedCommand}" Margin="0,0,4,0"/>
|
||
<Button Grid.Column="2" Content="Unentschuldigt" FontSize="11" Padding="7,3"
|
||
Command="{Binding MarkUnexcusedCommand}"/>
|
||
</Grid>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
<TextBlock Text="Keine offenen Entschuldigungen." Classes="emptyhint"
|
||
IsVisible="{Binding !OpenExcuses.Count}"/>
|
||
</StackPanel>
|
||
</Border>
|
||
|
||
<!-- Fehlzeiten-Warnung (5.2.3) -->
|
||
<Border Grid.Column="{Binding AttendanceCard.Column}" Grid.Row="{Binding AttendanceCard.Row}"
|
||
IsVisible="{Binding AttendanceCard.IsVisible}" Margin="0,0,8,8" VerticalAlignment="Top"
|
||
Background="{DynamicResource SystemControlBackgroundAltHighBrush}"
|
||
CornerRadius="8" Padding="16">
|
||
<StackPanel>
|
||
<TextBlock Text="FEHLZEITEN-WARNUNG" FontSize="11" FontWeight="Bold"
|
||
Opacity="0.5" Margin="0,0,0,10"/>
|
||
<ItemsControl ItemsSource="{Binding AttendanceWarnings}">
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate DataType="vm:AttendanceWarningItem">
|
||
<Grid ColumnDefinitions="*,Auto" Margin="0,4">
|
||
<Button Grid.Column="0" Content="{Binding StudentName}" FontSize="13"
|
||
HorizontalAlignment="Left" HorizontalContentAlignment="Left"
|
||
Background="Transparent" Padding="0"
|
||
Command="{Binding $parent[ItemsControl].((vm:DashboardViewModel)DataContext).OpenStudentAttendanceCommand}"
|
||
CommandParameter="{Binding}"/>
|
||
<TextBlock Grid.Column="1" Foreground="Red" FontSize="12" VerticalAlignment="Center">
|
||
<Run Text="{Binding AbsenceRatePercent}"/>
|
||
<Run Text=" %"/>
|
||
</TextBlock>
|
||
</Grid>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
<TextBlock Text="Keine Fehlzeiten über dem Schwellenwert." Classes="emptyhint"
|
||
IsVisible="{Binding !AttendanceWarnings.Count}"/>
|
||
</StackPanel>
|
||
</Border>
|
||
|
||
<!-- Förderplan-Wiedervorlage (5.3.2) -->
|
||
<Border Grid.Column="{Binding SupportCard.Column}" Grid.Row="{Binding SupportCard.Row}"
|
||
IsVisible="{Binding SupportCard.IsVisible}" Margin="8,0,0,8" VerticalAlignment="Top"
|
||
Background="{DynamicResource SystemControlBackgroundAltHighBrush}"
|
||
CornerRadius="8" Padding="16">
|
||
<StackPanel>
|
||
<TextBlock Text="FÖRDERPLAN-WIEDERVORLAGE" FontSize="11" FontWeight="Bold"
|
||
Opacity="0.5" Margin="0,0,0,10"/>
|
||
<ItemsControl ItemsSource="{Binding SupportPlanReviews}">
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate DataType="vm:SupportPlanDueItem">
|
||
<Grid ColumnDefinitions="*,Auto" Margin="0,4">
|
||
<StackPanel Grid.Column="0">
|
||
<Button Content="{Binding StudentName}" FontSize="13" FontWeight="SemiBold"
|
||
HorizontalAlignment="Left" HorizontalContentAlignment="Left"
|
||
Background="Transparent" Padding="0"
|
||
Command="{Binding $parent[ItemsControl].((vm:DashboardViewModel)DataContext).OpenStudentSupportPlanCommand}"
|
||
CommandParameter="{Binding}"/>
|
||
<TextBlock Text="{Binding Title}" FontSize="11" Opacity="0.6"/>
|
||
</StackPanel>
|
||
<TextBlock Grid.Column="1" Text="{Binding ReviewDateDisplay}" FontSize="12"
|
||
VerticalAlignment="Center" Classes.overdue="{Binding IsOverdue}"/>
|
||
</Grid>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
<TextBlock Text="Keine fälligen Überprüfungen." Classes="emptyhint"
|
||
IsVisible="{Binding !SupportPlanReviews.Count}"/>
|
||
</StackPanel>
|
||
</Border>
|
||
|
||
<!-- Anstehende Termine (9.3) -->
|
||
<Border Grid.Column="{Binding UpcomingCard.Column}" Grid.Row="{Binding UpcomingCard.Row}"
|
||
IsVisible="{Binding UpcomingCard.IsVisible}" Margin="0,0,8,8" VerticalAlignment="Top"
|
||
Background="{DynamicResource SystemControlBackgroundAltHighBrush}"
|
||
CornerRadius="8" Padding="16">
|
||
<StackPanel>
|
||
<TextBlock Text="ANSTEHENDE TERMINE" FontSize="11" FontWeight="Bold"
|
||
Opacity="0.5" Margin="0,0,0,10"/>
|
||
<ItemsControl ItemsSource="{Binding UpcomingDates}">
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate x:DataType="vm:UpcomingDateItem">
|
||
<Button Background="Transparent" BorderThickness="0" Padding="0" Margin="0,4"
|
||
HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch"
|
||
Command="{Binding $parent[ItemsControl].((vm:DashboardViewModel)DataContext).OpenUpcomingDateCommand}"
|
||
CommandParameter="{Binding}">
|
||
<Grid ColumnDefinitions="Auto,*,Auto">
|
||
<Border Background="{DynamicResource SystemAccentColorLight2}" CornerRadius="4"
|
||
Padding="5,2" VerticalAlignment="Center">
|
||
<TextBlock Text="{Binding KindLabel}" FontSize="10"/>
|
||
</Border>
|
||
<StackPanel Grid.Column="1" Margin="8,0">
|
||
<TextBlock Text="{Binding Title}" FontSize="13" FontWeight="SemiBold"
|
||
TextTrimming="CharacterEllipsis"/>
|
||
<TextBlock Text="{Binding Subtitle}" FontSize="11" Opacity="0.6"/>
|
||
</StackPanel>
|
||
<TextBlock Grid.Column="2" Text="{Binding DateDisplay}" FontSize="12"
|
||
VerticalAlignment="Center" Classes.overdue="{Binding IsOverdue}"/>
|
||
</Grid>
|
||
</Button>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
<TextBlock Text="Keine Termine in den nächsten 30 Tagen." Classes="emptyhint"
|
||
IsVisible="{Binding !UpcomingDates.Count}"/>
|
||
</StackPanel>
|
||
</Border>
|
||
|
||
<!-- Offene Korrekturen (9.4) -->
|
||
<Border Grid.Column="{Binding CorrectionsCard.Column}" Grid.Row="{Binding CorrectionsCard.Row}"
|
||
IsVisible="{Binding CorrectionsCard.IsVisible}" Margin="8,0,0,8" VerticalAlignment="Top"
|
||
Background="{DynamicResource SystemControlBackgroundAltHighBrush}"
|
||
CornerRadius="8" Padding="16">
|
||
<StackPanel>
|
||
<TextBlock Text="OFFENE KORREKTUREN" FontSize="11" FontWeight="Bold"
|
||
Opacity="0.5" Margin="0,0,0,10"/>
|
||
<ItemsControl ItemsSource="{Binding OpenCorrections}">
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate x:DataType="vm:CorrectionProgressItem">
|
||
<Button Background="Transparent" BorderThickness="0" Padding="0" Margin="0,5"
|
||
HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch"
|
||
Command="{Binding $parent[ItemsControl].((vm:DashboardViewModel)DataContext).OpenCorrectionCommand}"
|
||
CommandParameter="{Binding}">
|
||
<StackPanel Spacing="3">
|
||
<Grid ColumnDefinitions="*,Auto">
|
||
<TextBlock Text="{Binding Title}" FontSize="13" FontWeight="SemiBold"/>
|
||
<TextBlock Grid.Column="1" Text="{Binding DateDisplay}" FontSize="11" Opacity="0.6"/>
|
||
</Grid>
|
||
<TextBlock Text="{Binding GroupName}" FontSize="11" Opacity="0.6"/>
|
||
<ProgressBar Minimum="0" Maximum="100" Value="{Binding Percent}" Height="6"/>
|
||
<TextBlock Text="{Binding ProgressDisplay}" FontSize="10" Opacity="0.65"/>
|
||
</StackPanel>
|
||
</Button>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
<TextBlock Text="Keine offenen Korrekturen." Classes="emptyhint"
|
||
IsVisible="{Binding !OpenCorrections.Count}"/>
|
||
</StackPanel>
|
||
</Border>
|
||
|
||
<!-- Ungeplante Stunden -->
|
||
<Border Grid.Column="{Binding UnplannedCard.Column}" Grid.Row="{Binding UnplannedCard.Row}"
|
||
IsVisible="{Binding UnplannedCard.IsVisible}" Margin="0,0,8,8" VerticalAlignment="Top"
|
||
Background="{DynamicResource SystemControlBackgroundAltHighBrush}"
|
||
CornerRadius="8" Padding="16">
|
||
<StackPanel>
|
||
<TextBlock Text="UNGEPLANTE STUNDEN" FontSize="11" FontWeight="Bold"
|
||
Opacity="0.5" Margin="0,0,0,10"/>
|
||
<ItemsControl ItemsSource="{Binding UnplannedLessons}">
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate x:DataType="vm:UnplannedLessonItem">
|
||
<Button Background="Transparent" BorderThickness="0" Padding="0" Margin="0,5"
|
||
HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch"
|
||
Command="{Binding $parent[ItemsControl].((vm:DashboardViewModel)DataContext).OpenUnplannedLessonCommand}"
|
||
CommandParameter="{Binding}">
|
||
<Grid ColumnDefinitions="*,Auto">
|
||
<TextBlock Text="{Binding Display}" FontSize="13"
|
||
TextTrimming="CharacterEllipsis"/>
|
||
<TextBlock Grid.Column="1" Text="{Binding DateDisplay}" FontSize="12"
|
||
VerticalAlignment="Center" Opacity="0.6"/>
|
||
</Grid>
|
||
</Button>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
<TextBlock Text="Keine ungeplanten Stunden." Classes="emptyhint"
|
||
IsVisible="{Binding !UnplannedLessons.Count}"/>
|
||
</StackPanel>
|
||
</Border>
|
||
|
||
<!-- Auffälligkeiten (9.5) -->
|
||
<Border Grid.Column="{Binding AlertsCard.Column}" Grid.Row="{Binding AlertsCard.Row}"
|
||
IsVisible="{Binding AlertsCard.IsVisible}" Margin="0,0,8,8" VerticalAlignment="Top"
|
||
Background="{DynamicResource SystemControlBackgroundAltHighBrush}"
|
||
CornerRadius="8" Padding="16">
|
||
<StackPanel>
|
||
<TextBlock Text="AUFFÄLLIGKEITEN" FontSize="11" FontWeight="Bold"
|
||
Opacity="0.5" Margin="0,0,0,10"/>
|
||
<ItemsControl ItemsSource="{Binding Alerts}">
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate x:DataType="vm:DashboardAlertItem">
|
||
<Button Background="Transparent" BorderThickness="0" Padding="0" Margin="0,4"
|
||
HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch"
|
||
Command="{Binding $parent[ItemsControl].((vm:DashboardViewModel)DataContext).OpenAlertCommand}"
|
||
CommandParameter="{Binding}">
|
||
<Grid ColumnDefinitions="4,*">
|
||
<Border Background="{Binding SeverityColor}" CornerRadius="2" Margin="0,0,9,0"/>
|
||
<StackPanel Grid.Column="1">
|
||
<Grid ColumnDefinitions="*,Auto">
|
||
<TextBlock Text="{Binding StudentName}" FontSize="13" FontWeight="SemiBold"/>
|
||
<TextBlock Grid.Column="1" Text="{Binding KindLabel}" FontSize="10" Opacity="0.6"/>
|
||
</Grid>
|
||
<TextBlock Text="{Binding Detail}" FontSize="11" Opacity="0.65"/>
|
||
</StackPanel>
|
||
</Grid>
|
||
</Button>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
<TextBlock Text="Keine Auffälligkeiten erkannt." Classes="emptyhint"
|
||
IsVisible="{Binding !Alerts.Count}"/>
|
||
</StackPanel>
|
||
</Border>
|
||
|
||
<!-- Meine Lerngruppen -->
|
||
<Border Grid.Column="{Binding GroupsCard.Column}" Grid.Row="{Binding GroupsCard.Row}"
|
||
IsVisible="{Binding GroupsCard.IsVisible}"
|
||
Background="{DynamicResource SystemControlBackgroundAltHighBrush}"
|
||
CornerRadius="8" Padding="16">
|
||
<StackPanel>
|
||
<TextBlock Text="MEINE LERNGRUPPEN" FontSize="11" FontWeight="Bold"
|
||
Opacity="0.5" Margin="0,0,0,10"/>
|
||
<ItemsControl ItemsSource="{Binding CurrentGroups}">
|
||
<ItemsControl.ItemsPanel>
|
||
<ItemsPanelTemplate>
|
||
<WrapPanel Orientation="Horizontal"/>
|
||
</ItemsPanelTemplate>
|
||
</ItemsControl.ItemsPanel>
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate DataType="vm:GroupChip">
|
||
<Button Command="{Binding $parent[ItemsControl].((vm:DashboardViewModel)DataContext).OpenGroupCommand}"
|
||
CommandParameter="{Binding}"
|
||
Background="{DynamicResource SystemAccentColorLight2}"
|
||
CornerRadius="6" Padding="12,6" Margin="0,0,8,8">
|
||
<StackPanel>
|
||
<TextBlock Text="{Binding Name}" FontWeight="SemiBold" FontSize="13"/>
|
||
<TextBlock Text="{Binding Subject}" FontSize="11" Opacity="0.7"
|
||
IsVisible="{Binding Subject, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"/>
|
||
</StackPanel>
|
||
</Button>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
<TextBlock Text="Noch keine Lerngruppen." Classes="emptyhint"
|
||
IsVisible="{Binding !CurrentGroups.Count}"/>
|
||
</StackPanel>
|
||
</Border>
|
||
|
||
</Grid>
|
||
</StackPanel>
|
||
</ScrollViewer>
|
||
</UserControl>
|