feat(ui): planning sessions UI (Plan C) #5

Merged
mikakuns merged 9 commits from feat/planning-sessions-ui into main 2026-04-23 17:38:09 +00:00
2 changed files with 23 additions and 1 deletions
Showing only changes of commit 388a8c1fae - Show all commits

View File

@@ -37,6 +37,9 @@ public sealed partial class TaskRowViewModel : ViewModelBase
public bool IsPlanningParent => Status == TaskStatus.Planning || Status == TaskStatus.Planned; public bool IsPlanningParent => Status == TaskStatus.Planning || Status == TaskStatus.Planned;
public bool IsDraft => Status == TaskStatus.Draft; public bool IsDraft => Status == TaskStatus.Draft;
public bool CanOpenPlanningSession => Status == TaskStatus.Manual && !IsChild;
public bool CanResumeOrDiscardPlanning => Status == TaskStatus.Planning;
public string? PlanningBadge => Status switch public string? PlanningBadge => Status switch
{ {
TaskStatus.Planning => "PLANNING", TaskStatus.Planning => "PLANNING",
@@ -76,9 +79,15 @@ public sealed partial class TaskRowViewModel : ViewModelBase
OnPropertyChanged(nameof(IsPlanningParent)); OnPropertyChanged(nameof(IsPlanningParent));
OnPropertyChanged(nameof(PlanningBadge)); OnPropertyChanged(nameof(PlanningBadge));
OnPropertyChanged(nameof(IsDraft)); OnPropertyChanged(nameof(IsDraft));
OnPropertyChanged(nameof(CanOpenPlanningSession));
OnPropertyChanged(nameof(CanResumeOrDiscardPlanning));
} }
partial void OnParentTaskIdChanged(string? value) => OnPropertyChanged(nameof(IsChild)); partial void OnParentTaskIdChanged(string? value)
{
OnPropertyChanged(nameof(IsChild));
OnPropertyChanged(nameof(CanOpenPlanningSession));
}
partial void OnBranchChanged(string? value) => OnPropertyChanged(nameof(HasBranch)); partial void OnBranchChanged(string? value) => OnPropertyChanged(nameof(HasBranch));
partial void OnLiveTailChanged(string? value) => OnPropertyChanged(nameof(HasLiveTail)); partial void OnLiveTailChanged(string? value) => OnPropertyChanged(nameof(HasLiveTail));

View File

@@ -38,6 +38,19 @@
IsVisible="{Binding IsQueued}" IsVisible="{Binding IsQueued}"
Click="OnRemoveFromQueueClick"/> Click="OnRemoveFromQueueClick"/>
<Separator/> <Separator/>
<MenuItem Header="Open planning Session"
Command="{Binding $parent[ItemsControl].((vm:TasksIslandViewModel)DataContext).OpenPlanningSessionCommand}"
CommandParameter="{Binding}"
IsVisible="{Binding CanOpenPlanningSession}"/>
<MenuItem Header="Resume planning Session"
Command="{Binding $parent[ItemsControl].((vm:TasksIslandViewModel)DataContext).ResumePlanningSessionCommand}"
CommandParameter="{Binding}"
IsVisible="{Binding CanResumeOrDiscardPlanning}"/>
<MenuItem Header="Discard planning session"
Command="{Binding $parent[ItemsControl].((vm:TasksIslandViewModel)DataContext).DiscardPlanningSessionCommand}"
CommandParameter="{Binding}"
IsVisible="{Binding CanResumeOrDiscardPlanning}"/>
<Separator/>
<MenuItem Header="Schedule for..." Click="OnScheduleForClick"/> <MenuItem Header="Schedule for..." Click="OnScheduleForClick"/>
<MenuItem Header="Clear schedule" <MenuItem Header="Clear schedule"
IsVisible="{Binding HasSchedule}" IsVisible="{Binding HasSchedule}"