Files
2026-09-05 00:02:28 +02:00

149 lines
9.1 KiB
XML
Raw Permalink 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"
x:Class="LehrerApp.Desktop.Views.Groups.PlanningTabView"
x:DataType="vm:PlanningTabViewModel">
<Grid RowDefinitions="Auto,2*,Auto,Auto,2*" Margin="16">
<!-- Einheiten-Toolbar: Aktionen bewusst unter der Überschrift und in umbruchfähigen
Gruppen. So kollidieren Beschriftung und Buttons auch in schmaleren Fenstern nicht. -->
<Grid Grid.Row="0" RowDefinitions="Auto,Auto" Margin="0,0,0,8" RowSpacing="6">
<StackPanel Grid.Row="0" Orientation="Horizontal" Spacing="8" VerticalAlignment="Center">
<TextBlock Text="Unterrichtseinheiten" FontSize="14" FontWeight="SemiBold"
VerticalAlignment="Center"/>
<Button Content="↕ JSON" FontSize="11" Padding="7,3"
ToolTip.Tip="Einheiten und Stunden importieren, exportieren oder die Formatbeschreibung kopieren">
<Button.Flyout>
<MenuFlyout Placement="BottomEdgeAlignedLeft">
<MenuItem Header="Einheit mit Stunden exportieren…" Click="OnExportUnit"
IsEnabled="{Binding HasUnitSelection}"/>
<MenuItem Header="Neue Einheit importieren…" Click="OnImportUnit"
IsEnabled="{Binding CanImportUnitPlanning}"/>
<MenuItem Header="Formatbeschreibung Einheit kopieren" Click="OnCopyUnitFormat"/>
<Separator/>
<MenuItem Header="Ausgewählte Stunde exportieren…" Click="OnExportLesson"
IsEnabled="{Binding HasLessonSelection}"/>
<MenuItem Header="Neue Stunde importieren…" Click="OnImportLesson"
IsEnabled="{Binding CanImportLessonPlanning}"/>
<MenuItem Header="Formatbeschreibung Stunde kopieren" Click="OnCopyLessonFormat"/>
</MenuFlyout>
</Button.Flyout>
</Button>
</StackPanel>
<WrapPanel Grid.Row="1" ItemSpacing="6" LineSpacing="6">
<Button Content=" Einheit" Command="{Binding AddUnitCommand}" IsEnabled="{Binding !IsReadOnly}"/>
<Button Content="✎" Width="38" Command="{Binding EditUnitCommand}" IsEnabled="{Binding !IsReadOnly}"
ToolTip.Tip="Ausgewählte Einheit bearbeiten" AutomationProperties.Name="Einheit bearbeiten"/>
<Button Content="⧉" Width="38" Command="{Binding CopyUnitCommand}"
ToolTip.Tip="Als Vorlage in eine andere Lerngruppe kopieren" AutomationProperties.Name="Einheit als Vorlage kopieren"/>
<Button Content="⌫" Width="38" Command="{Binding DeleteUnitCommand}" IsEnabled="{Binding !IsReadOnly}"
ToolTip.Tip="Ausgewählte Einheit löschen" AutomationProperties.Name="Einheit löschen"/>
<Button Content="✦ KI-Unterstützung" Command="{Binding AiAssistCommand}"/>
</WrapPanel>
</Grid>
<!-- Einheiten-Tabelle -->
<DataGrid Grid.Row="1" ItemsSource="{Binding Units}"
SelectedItem="{Binding SelectedUnit}"
AutoGenerateColumns="False"
IsReadOnly="True"
GridLinesVisibility="Horizontal"
CanUserReorderColumns="False"
Margin="0,0,0,8">
<DataGrid.Columns>
<DataGridTextColumn Header="Titel" Binding="{Binding Title}" Width="*"/>
<DataGridTextColumn Header="Zeitraum" Binding="{Binding DateRangeDisplay}" Width="200"/>
<DataGridTemplateColumn Header="Status" Width="130">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate x:DataType="vm:UnitSummary">
<Border Background="{Binding StatusColorHex}" CornerRadius="4"
Padding="8,2" HorizontalAlignment="Left">
<TextBlock Text="{Binding StatusLabel}" FontSize="12" Foreground="White"/>
</Border>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Fortschritt" Width="180">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate x:DataType="vm:UnitSummary">
<StackPanel Spacing="2" VerticalAlignment="Center" Margin="0,4">
<ProgressBar Value="{Binding ProgressFraction}" Maximum="1" Height="6"/>
<TextBlock Text="{Binding ProgressText}" FontSize="11" Opacity="0.7"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Kompetenzen" Binding="{Binding CompetencyCountLabel}" Width="120"/>
</DataGrid.Columns>
</DataGrid>
<Separator Grid.Row="2" Margin="0,0,0,8"/>
<!-- Stunden-Toolbar: häufige Aktionen bleiben beschriftet, sekundäre Aktionen sind als
kompakte Symbolbuttons gruppiert. Das WrapPanel darf bei Bedarf umbrechen. -->
<Grid Grid.Row="3" RowDefinitions="Auto,Auto" Margin="0,0,0,8" RowSpacing="6">
<StackPanel Grid.Row="0" Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Text="Stunden" FontSize="14" FontWeight="SemiBold"/>
<TextBlock Text="{Binding SelectedUnitTitleSuffix}" FontSize="14" FontWeight="SemiBold"/>
</StackPanel>
<WrapPanel Grid.Row="1" ItemSpacing="6" LineSpacing="6">
<Button Content=" Stunde" Command="{Binding AddLessonCommand}" IsEnabled="{Binding !IsReadOnly}"/>
<Button Content=" Serie" Command="{Binding GenerateLessonSeriesCommand}"
IsEnabled="{Binding !IsReadOnly}"
ToolTip.Tip="Stunden für alle Termine aus dem Stundenplan im gewählten Zeitraum anlegen."/>
<Button Content="Anzeigen" Command="{Binding ShowLessonCommand}"
ToolTip.Tip="Verlaufsplan schreibgeschützt und größer anzeigen — zum Mitnehmen in den Unterricht."/>
<Button Content="✎" Width="38" Command="{Binding EditLessonCommand}" IsEnabled="{Binding !IsReadOnly}"
ToolTip.Tip="Ausgewählte Stunde bearbeiten" AutomationProperties.Name="Stunde bearbeiten"/>
<Button Content="↔" Width="38" Command="{Binding MoveLessonCommand}" IsEnabled="{Binding !IsReadOnly}"
ToolTip.Tip="Ausgewählte Stunde verschieben" AutomationProperties.Name="Stunde verschieben"/>
<Button Content="⇄" Width="38" Command="{Binding ChangeLessonUnitCommand}" IsEnabled="{Binding !IsReadOnly}"
ToolTip.Tip="Ordnet die ausgewählte Stunde einer anderen Einheit derselben Gruppe zu."/>
<Button Content="Status " Command="{Binding AdvanceLessonStatusCommand}" IsEnabled="{Binding !IsReadOnly}"
ToolTip.Tip="Entwurf/Geplant → Bereit → Durchgeführt"/>
<Button Content=" Sitzung" Command="{Binding CreateParticipationSessionCommand}"
IsEnabled="{Binding !IsReadOnly}"
ToolTip.Tip="Legt eine Mitarbeitssitzung mit Datum und Thema dieser Stunde an."/>
<Button Content="⌫" Width="38" Command="{Binding DeleteLessonCommand}" IsEnabled="{Binding !IsReadOnly}"
ToolTip.Tip="Ausgewählte Stunde löschen" AutomationProperties.Name="Stunde löschen"/>
</WrapPanel>
</Grid>
<!-- Stunden-Tabelle -->
<DataGrid Grid.Row="4" ItemsSource="{Binding Lessons}"
SelectedItem="{Binding SelectedLesson}"
AutoGenerateColumns="False"
IsReadOnly="True"
GridLinesVisibility="Horizontal"
CanUserReorderColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Datum" Binding="{Binding DateDisplay}" Width="100"/>
<DataGridTextColumn Header="Nr." Binding="{Binding LessonNumber}" Width="50"/>
<DataGridTextColumn Header="Thema" Binding="{Binding Topic}" Width="*"/>
<DataGridTextColumn Header="Beginn" Binding="{Binding StartTimeDisplay}" Width="70"/>
<DataGridTemplateColumn Header="Status" Width="130">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate x:DataType="vm:LessonSummary">
<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="Phasen" Binding="{Binding PhaseCountLabel}" Width="80"/>
<DataGridTextColumn Header="Dauer" Binding="{Binding TotalDurationLabel}" Width="80"/>
<DataGridTextColumn Header="Materialien" Binding="{Binding MaterialsDisplay}" Width="150"/>
<DataGridTemplateColumn Header="HA" Width="40">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate x:DataType="vm:LessonSummary">
<TextBlock Text="✓" IsVisible="{Binding HasHomework}" HorizontalAlignment="Center"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</UserControl>