Files
LehrerApp/LehrerApp.Desktop/Views/Groups/GroupDetailView.axaml
T
adminandClaude Sonnet 5 8cbd4475d7 Klausur: Fach aus Lerngruppe übernehmen, Rückgabedatum erfassen
- Fach kommt jetzt aus der Lerngruppe statt manuell pro Klausur
  eingegeben zu werden: Fach-Feld im Anlegen-Dialog der Lerngruppe
  ist nicht mehr auf Typ "Kurs" beschränkt, da eine Gruppe genau ein
  Fach unterrichtet (bei zwei Fächern legt man zwei Gruppen an). Im
  Klausur-Dialog ist das Fach dadurch nur noch read-only Kontext statt
  eines redundanten Eingabefelds.
- Neues Feld Exam.ReturnedAt: wird beim Statuswechsel auf "Zurück-
  gegeben" automatisch mit dem heutigen Datum belegt (und beim
  Zurücknehmen des Status wieder geleert), ist im Klausur-Dialog aber
  auch manuell nachträglich korrigierbar. Sichtbar als eigene Spalte
  im Klausuren-Tab.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 23:16:52 +02:00

169 lines
8.4 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.Groups"
xmlns:views="clr-namespace:LehrerApp.Desktop.Views.Groups"
xmlns:models="clr-namespace:LehrerApp.Core.Models;assembly=LehrerApp.Core"
x:Class="LehrerApp.Desktop.Views.Groups.GroupDetailView"
x:DataType="vm:GroupDetailViewModel">
<Grid RowDefinitions="Auto,*">
<!-- Header -->
<Border Grid.Row="0" Padding="20,16"
BorderBrush="{DynamicResource SystemControlForegroundBaseLowBrush}"
BorderThickness="0,0,0,1">
<Grid ColumnDefinitions="*,Auto">
<StackPanel Grid.Column="0">
<TextBlock Text="{Binding GroupTitle}" FontSize="22" FontWeight="SemiBold"/>
<TextBlock Text="{Binding GroupSubtitle}" FontSize="12" Opacity="0.5"/>
</StackPanel>
<StackPanel Grid.Column="1" Orientation="Horizontal" Spacing="8">
<TextBlock VerticalAlignment="Center" Opacity="0.6" FontSize="13">
<Run Text="{Binding StudentCount}"/>
<Run Text=" Schüler"/>
</TextBlock>
<Button Content=" Schüler" Command="{Binding AddStudentCommand}"/>
<Button Content=" Austragen" Command="{Binding RemoveStudentCommand}"
IsVisible="{Binding SelectedStudent, Converter={x:Static ObjectConverters.IsNotNull}}"/>
<Button Content=" Klausur" Command="{Binding AddExamCommand}"/>
</StackPanel>
</Grid>
</Border>
<TabbedPage Grid.Row="1" TabPlacement="Top" SelectedIndex="{Binding ActiveTabIndex}">
<!-- Tab: Übersicht -->
<ContentPage Header="Übersicht">
<ScrollViewer Padding="20">
<StackPanel Spacing="12">
<TextBlock Text="{Binding GroupSubtitle}" Opacity="0.7" FontSize="14"/>
<TextBlock Text="Hier erscheint später eine Zusammenfassung der Lerngruppe."
Opacity="0.4"/>
</StackPanel>
</ScrollViewer>
</ContentPage>
<!-- Tab: Schüler -->
<ContentPage Header="Schüler">
<DataGrid ItemsSource="{Binding Students}"
SelectedItem="{Binding SelectedStudent}"
AutoGenerateColumns="False"
IsReadOnly="True"
GridLinesVisibility="Horizontal"
CanUserReorderColumns="False"
CanUserResizeColumns="True"
Margin="0">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding FullName}" Width="*"/>
<DataGridTextColumn Header="Zeitraum" Binding="{Binding PeriodLabel}" Width="90"/>
</DataGrid.Columns>
</DataGrid>
</ContentPage>
<!-- Tab: Mitarbeit -->
<ContentPage Header="Mitarbeit">
<views:ParticipationTabView DataContext="{Binding ParticipationTab}"/>
</ContentPage>
<!-- Tab: Klausuren -->
<ContentPage Header="Klausuren">
<Grid RowDefinitions="Auto,*">
<StackPanel Grid.Row="0" Orientation="Horizontal" Spacing="8" Margin="0,0,0,8"
IsVisible="{Binding SelectedExam, Converter={x:Static ObjectConverters.IsNotNull}}">
<Button Content="Bearbeiten" Command="{Binding EditExamCommand}"/>
<Button Content="Duplizieren" Command="{Binding DuplicateExamCommand}"/>
<SplitButton Content="Status ▸" Command="{Binding AdvanceExamStatusCommand}">
<SplitButton.Flyout>
<MenuFlyout Placement="BottomEdgeAlignedLeft">
<MenuItem Header="Geplant" Command="{Binding SetExamStatusCommand}"
CommandParameter="{x:Static models:ExamStatus.Planned}"/>
<MenuItem Header="Durchgeführt" Command="{Binding SetExamStatusCommand}"
CommandParameter="{x:Static models:ExamStatus.Conducted}"/>
<MenuItem Header="Korrigiert" Command="{Binding SetExamStatusCommand}"
CommandParameter="{x:Static models:ExamStatus.Graded}"/>
<MenuItem Header="Zurückgegeben" Command="{Binding SetExamStatusCommand}"
CommandParameter="{x:Static models:ExamStatus.Returned}"/>
</MenuFlyout>
</SplitButton.Flyout>
</SplitButton>
<Button Content="Löschen" Command="{Binding DeleteExamCommand}"/>
</StackPanel>
<DataGrid Grid.Row="1" ItemsSource="{Binding Exams}"
SelectedItem="{Binding SelectedExam}"
AutoGenerateColumns="False"
IsReadOnly="True"
GridLinesVisibility="Horizontal"
CanUserReorderColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Datum" Binding="{Binding Date}" Width="110"/>
<DataGridTextColumn Header="Titel" Binding="{Binding Title}" Width="*"/>
<DataGridTemplateColumn Header="Status" Width="150">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate x:DataType="vm:ExamSummary">
<Border Background="{Binding StatusColorHex}" CornerRadius="4"
Padding="8,2" HorizontalAlignment="Left">
<TextBlock Text="{Binding StatusLabel}" FontSize="12" Foreground="White"/>
</Border>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Rückgabe" Binding="{Binding ReturnedAtDisplay}" Width="100"/>
</DataGrid.Columns>
<DataGrid.ContextMenu>
<ContextMenu>
<MenuItem Header="Bearbeiten" Command="{Binding EditExamCommand}"/>
<MenuItem Header="Duplizieren" Command="{Binding DuplicateExamCommand}"/>
<MenuItem Header="Status">
<MenuItem Header="Weiter" Command="{Binding AdvanceExamStatusCommand}"/>
<Separator/>
<MenuItem Header="Geplant" Command="{Binding SetExamStatusCommand}"
CommandParameter="{x:Static models:ExamStatus.Planned}"/>
<MenuItem Header="Durchgeführt" Command="{Binding SetExamStatusCommand}"
CommandParameter="{x:Static models:ExamStatus.Conducted}"/>
<MenuItem Header="Korrigiert" Command="{Binding SetExamStatusCommand}"
CommandParameter="{x:Static models:ExamStatus.Graded}"/>
<MenuItem Header="Zurückgegeben" Command="{Binding SetExamStatusCommand}"
CommandParameter="{x:Static models:ExamStatus.Returned}"/>
</MenuItem>
<Separator/>
<MenuItem Header="Löschen" Command="{Binding DeleteExamCommand}"/>
</ContextMenu>
</DataGrid.ContextMenu>
</DataGrid>
</Grid>
</ContentPage>
<!-- Tab: Noten -->
<ContentPage Header="Noten">
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock Text="Notenübersicht" FontSize="16" Opacity="0.4"
HorizontalAlignment="Center"/>
<TextBlock Text="Wird implementiert." FontSize="12" Opacity="0.3"
HorizontalAlignment="Center"/>
</StackPanel>
</ContentPage>
<!-- Tab: Planung -->
<ContentPage Header="Planung">
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock Text="Unterrichtseinheiten" FontSize="16" Opacity="0.4"
HorizontalAlignment="Center"/>
<TextBlock Text="Wird implementiert." FontSize="12" Opacity="0.3"
HorizontalAlignment="Center"/>
</StackPanel>
</ContentPage>
<!-- Tab: Dokumentation -->
<ContentPage Header="Dokumentation">
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock Text="Schülerdokumentation" FontSize="16" Opacity="0.4"
HorizontalAlignment="Center"/>
<TextBlock Text="Wird implementiert." FontSize="12" Opacity="0.3"
HorizontalAlignment="Center"/>
</StackPanel>
</ContentPage>
</TabbedPage>
</Grid>
</UserControl>