feat: complete dashboard chapter
This commit is contained in:
@@ -9,21 +9,56 @@
|
||||
<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 -->
|
||||
<StackPanel>
|
||||
<TextBlock Text="{Binding Greeting}" FontSize="14" Opacity="0.6"/>
|
||||
<TextBlock Text="{Binding CurrentDate}" FontSize="24" FontWeight="SemiBold"/>
|
||||
</StackPanel>
|
||||
<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>
|
||||
|
||||
<Grid ColumnDefinitions="*,*" RowDefinitions="Auto,Auto,Auto,Auto">
|
||||
<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">
|
||||
|
||||
<!-- Heutige Stunden -->
|
||||
<Border Grid.Column="0" Grid.Row="0" Margin="0,0,8,8"
|
||||
<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>
|
||||
@@ -63,7 +98,8 @@
|
||||
</Border>
|
||||
|
||||
<!-- Offene Aufgaben -->
|
||||
<Border Grid.Column="1" Grid.Row="0" Margin="8,0,0,8"
|
||||
<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>
|
||||
@@ -88,7 +124,8 @@
|
||||
|
||||
<!-- Kalender: feste Position direkt unter Heute/Aufgaben, damit die wachsende
|
||||
Lerngruppen-Liste darunter ihn nicht nach unten verdrängt. -->
|
||||
<Border Grid.Column="0" Grid.Row="1" Margin="0,0,8,8" HorizontalAlignment="Left"
|
||||
<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">
|
||||
@@ -150,20 +187,24 @@
|
||||
</ItemsControl.ItemsPanel>
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate x:DataType="vm:CalendarDayCell">
|
||||
<Border Classes="daycell" Classes.ownclass="{Binding IsOwnClassDay}"
|
||||
Classes.haslesson="{Binding HasLesson}"
|
||||
Classes.outside="{Binding !IsCurrentMonth}"
|
||||
Width="32" Height="32" Margin="1" CornerRadius="6"
|
||||
ToolTip.Tip="{Binding Tooltip}">
|
||||
<Grid>
|
||||
<TextBlock Classes="daynum" Classes.today="{Binding IsToday}"
|
||||
Text="{Binding DayNumber}" FontSize="12"
|
||||
HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
<Ellipse Width="5" Height="5" Fill="#E53935" Margin="0,0,0,3"
|
||||
HorizontalAlignment="Center" VerticalAlignment="Bottom"
|
||||
IsVisible="{Binding HasExam}"/>
|
||||
</Grid>
|
||||
</Border>
|
||||
<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"/>
|
||||
<Ellipse Width="5" Height="5" Fill="#E53935" Margin="0,0,0,3"
|
||||
HorizontalAlignment="Center" VerticalAlignment="Bottom"
|
||||
IsVisible="{Binding HasExam}"/>
|
||||
</Grid>
|
||||
</Border>
|
||||
</Button>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
@@ -183,11 +224,35 @@
|
||||
<TextBlock Text="Meine Klasse" FontSize="10" Opacity="0.6"/>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
|
||||
<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"/>
|
||||
</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="1" Grid.Row="1" Margin="8,0,0,8" VerticalAlignment="Top"
|
||||
<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>
|
||||
@@ -220,7 +285,8 @@
|
||||
</Border>
|
||||
|
||||
<!-- Fehlzeiten-Warnung (5.2.3) -->
|
||||
<Border Grid.Column="0" Grid.Row="2" Margin="0,0,8,8" VerticalAlignment="Top"
|
||||
<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>
|
||||
@@ -249,7 +315,8 @@
|
||||
</Border>
|
||||
|
||||
<!-- Förderplan-Wiedervorlage (5.3.2) -->
|
||||
<Border Grid.Column="1" Grid.Row="2" Margin="8,0,0,8" VerticalAlignment="Top"
|
||||
<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>
|
||||
@@ -278,8 +345,113 @@
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<!-- Meine Lerngruppen: wächst mit der Zeit, deshalb ganz unten und volle Breite -->
|
||||
<Border Grid.Column="0" Grid.Row="3" Grid.ColumnSpan="2"
|
||||
<!-- 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>
|
||||
|
||||
<!-- 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>
|
||||
|
||||
Reference in New Issue
Block a user