Bisher war die Einheit einer Stunde nach dem Anlegen fix - bei falscher Auswahl im Erstellen-Dialog blieb nur Löschen+Neuanlegen. Neuer Button öffnet einen Dialog zur Auswahl der Ziel-Einheit; die Ansicht springt danach automatisch dorthin mit der Stunde vorausgewählt. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
141 lines
8.3 KiB
XML
141 lines
8.3 KiB
XML
<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 -->
|
||
<Grid Grid.Row="0" ColumnDefinitions="*,Auto" Margin="0,0,0,8">
|
||
<StackPanel Grid.Column="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>
|
||
<StackPanel Grid.Column="1" Orientation="Horizontal" Spacing="8">
|
||
<Button Content="+ Einheit" Command="{Binding AddUnitCommand}" IsEnabled="{Binding !IsReadOnly}"/>
|
||
<Button Content="Bearbeiten" Command="{Binding EditUnitCommand}" IsEnabled="{Binding !IsReadOnly}"/>
|
||
<Button Content="Als Vorlage kopieren" Command="{Binding CopyUnitCommand}"/>
|
||
<Button Content="Löschen" Command="{Binding DeleteUnitCommand}" IsEnabled="{Binding !IsReadOnly}"/>
|
||
<Button Content="🤖 KI-Unterstützung" Command="{Binding AiAssistCommand}"/>
|
||
</StackPanel>
|
||
</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 -->
|
||
<Grid Grid.Row="3" ColumnDefinitions="*,Auto" Margin="0,0,0,8">
|
||
<StackPanel Grid.Column="0" Orientation="Horizontal" VerticalAlignment="Center">
|
||
<TextBlock Text="Stunden" FontSize="14" FontWeight="SemiBold"/>
|
||
<TextBlock Text="{Binding SelectedUnitTitleSuffix}" FontSize="14" FontWeight="SemiBold"/>
|
||
</StackPanel>
|
||
<StackPanel Grid.Column="1" Orientation="Horizontal" Spacing="8">
|
||
<Button Content="+ Stunde" Command="{Binding AddLessonCommand}" IsEnabled="{Binding !IsReadOnly}"/>
|
||
<Button Content="Serie erzeugen" 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="Bearbeiten" Command="{Binding EditLessonCommand}" IsEnabled="{Binding !IsReadOnly}"/>
|
||
<Button Content="Verschieben" Command="{Binding MoveLessonCommand}" IsEnabled="{Binding !IsReadOnly}"/>
|
||
<Button Content="Einheit wechseln" Command="{Binding ChangeLessonUnitCommand}" IsEnabled="{Binding !IsReadOnly}"
|
||
ToolTip.Tip="Ordnet die ausgewählte Stunde einer anderen Einheit derselben Gruppe zu."/>
|
||
<Button Content="Status weiter" Command="{Binding AdvanceLessonStatusCommand}" IsEnabled="{Binding !IsReadOnly}"
|
||
ToolTip.Tip="Entwurf/Geplant → Bereit → Durchgeführt"/>
|
||
<Button Content="Sitzung erzeugen" Command="{Binding CreateParticipationSessionCommand}"
|
||
IsEnabled="{Binding !IsReadOnly}"
|
||
ToolTip.Tip="Legt eine Mitarbeitssitzung mit Datum und Thema dieser Stunde an."/>
|
||
<Button Content="Löschen" Command="{Binding DeleteLessonCommand}" IsEnabled="{Binding !IsReadOnly}"/>
|
||
</StackPanel>
|
||
</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>
|