Stundenplan: Dropdown für Unterrichtsansicht/Sitzplan/Planung/Planungsviewer

Die zwei Buttons in der "Heute"-Tagesliste mit teils vom Lesson-Status
abhängiger Doppelbedeutung ("Verlaufsplan ansehen"/"Zur Lerngruppe") waren
unklar. Ersetzt durch ein Dropdown mit vier ausdrücklich benannten Zielen;
drei nutzen bestehende Commands, "Sitzplan" (Sitzpläne-Tab) ist neu und
bisher nur indirekt über den Unterrichtsmodus erreichbar gewesen.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-27 17:03:11 +02:00
co-authored by Claude Sonnet 5
parent 442e3d5e3d
commit cd08bbbbc4
5 changed files with 136 additions and 11 deletions
@@ -1177,3 +1177,45 @@ public sealed class TimetableViewModelTests
Assert.False(vm.HasUntisMismatch);
}
}
/// Nutzer-Feedback: unklar, wie man aus der "Heute"-Tagesliste zwischen Unterrichtsansicht,
/// Sitzplan, Planung und Planungsviewer wechselt — TodayLessonItem.DestinationOptions ersetzt die
/// bisherigen zwei Buttons durch ein Dropdown mit ausdrücklich benannten Zielen.
public sealed class TodayLessonItemDestinationOptionsTests
{
[Fact]
public void MitLesson_BietetAlleVierZiele()
{
var lesson = new Lesson { Topic = "Redox" };
var item = new TodayLessonItem(Guid.NewGuid(), 3, "Q1 Chemie", "R204",
"#4C8DFF", "Redox", null, lesson: lesson);
Assert.True(item.HasDestinationOptions);
Assert.Equal(
[
TimetableLessonDestination.TeachingMode, TimetableLessonDestination.Viewer,
TimetableLessonDestination.SeatingPlan, TimetableLessonDestination.Planning,
],
item.DestinationOptions.Select(o => o.Kind));
}
[Fact]
public void OhneLesson_BietetNurSitzplanUndPlanung()
{
var item = new TodayLessonItem(Guid.NewGuid(), 3, "Q1 Chemie", "R204",
"#4C8DFF", null, null);
Assert.Equal(
[TimetableLessonDestination.SeatingPlan, TimetableLessonDestination.Planning],
item.DestinationOptions.Select(o => o.Kind));
}
[Fact]
public void OhneGroupId_BietetKeineZiele()
{
var item = TodayLessonItem.ForSubstitution(3, new SubstitutionEntry { GroupId = null, Description = "Vertretung" });
Assert.False(item.HasDestinationOptions);
Assert.Empty(item.DestinationOptions);
}
}