Skip to content

Commit 60ed01d

Browse files
authored
Merge pull request #451 from serverlessworkflow/fix-dashboard-task-navigation
Improved task hierarchy navigation using a "tree view" in the Dashboard
2 parents bb98d91 + 6a7de2f commit 60ed01d

File tree

20 files changed

+69
-56
lines changed

20 files changed

+69
-56
lines changed

src/api/Synapse.Api.Application/Synapse.Api.Application.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<NeutralLanguage>en</NeutralLanguage>
88
<GenerateDocumentationFile>True</GenerateDocumentationFile>
99
<VersionPrefix>1.0.0</VersionPrefix>
10-
<VersionSuffix>alpha5.1</VersionSuffix>
10+
<VersionSuffix>alpha5.2</VersionSuffix>
1111
<AssemblyVersion>$(VersionPrefix)</AssemblyVersion>
1212
<FileVersion>$(VersionPrefix)</FileVersion>
1313
<Authors>The Synapse Authors</Authors>

src/api/Synapse.Api.Client.Core/Synapse.Api.Client.Core.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<NeutralLanguage>en</NeutralLanguage>
88
<GenerateDocumentationFile>True</GenerateDocumentationFile>
99
<VersionPrefix>1.0.0</VersionPrefix>
10-
<VersionSuffix>alpha5.1</VersionSuffix>
10+
<VersionSuffix>alpha5.2</VersionSuffix>
1111
<AssemblyVersion>$(VersionPrefix)</AssemblyVersion>
1212
<FileVersion>$(VersionPrefix)</FileVersion>
1313
<Authors>The Synapse Authors</Authors>

src/api/Synapse.Api.Client.Http/Synapse.Api.Client.Http.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<NeutralLanguage>en</NeutralLanguage>
88
<GenerateDocumentationFile>True</GenerateDocumentationFile>
99
<VersionPrefix>1.0.0</VersionPrefix>
10-
<VersionSuffix>alpha5.1</VersionSuffix>
10+
<VersionSuffix>alpha5.2</VersionSuffix>
1111
<AssemblyVersion>$(VersionPrefix)</AssemblyVersion>
1212
<FileVersion>$(VersionPrefix)</FileVersion>
1313
<Authors>The Synapse Authors</Authors>

src/api/Synapse.Api.Http/Synapse.Api.Http.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<OutputType>Library</OutputType>
99
<GenerateDocumentationFile>True</GenerateDocumentationFile>
1010
<VersionPrefix>1.0.0</VersionPrefix>
11-
<VersionSuffix>alpha5.1</VersionSuffix>
11+
<VersionSuffix>alpha5.2</VersionSuffix>
1212
<AssemblyVersion>$(VersionPrefix)</AssemblyVersion>
1313
<FileVersion>$(VersionPrefix)</FileVersion>
1414
<Authors>The Synapse Authors</Authors>

src/api/Synapse.Api.Server/Synapse.Api.Server.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<NeutralLanguage>en</NeutralLanguage>
88
<GenerateDocumentationFile>True</GenerateDocumentationFile>
99
<VersionPrefix>1.0.0</VersionPrefix>
10-
<VersionSuffix>alpha5.1</VersionSuffix>
10+
<VersionSuffix>alpha5.2</VersionSuffix>
1111
<AssemblyVersion>$(VersionPrefix)</AssemblyVersion>
1212
<FileVersion>$(VersionPrefix)</FileVersion>
1313
<Authors>The Synapse Authors</Authors>

src/cli/Synapse.Cli/Synapse.Cli.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<NeutralLanguage>en</NeutralLanguage>
99
<GenerateDocumentationFile>True</GenerateDocumentationFile>
1010
<VersionPrefix>1.0.0</VersionPrefix>
11-
<VersionSuffix>alpha5.1</VersionSuffix>
11+
<VersionSuffix>alpha5.2</VersionSuffix>
1212
<AssemblyVersion>$(VersionPrefix)</AssemblyVersion>
1313
<FileVersion>$(VersionPrefix)</FileVersion>
1414
<Authors>The Synapse Authors</Authors>

src/core/Synapse.Core.Infrastructure.Containers.Docker/Synapse.Core.Infrastructure.Containers.Docker.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<NeutralLanguage>en</NeutralLanguage>
88
<GenerateDocumentationFile>True</GenerateDocumentationFile>
99
<VersionPrefix>1.0.0</VersionPrefix>
10-
<VersionSuffix>alpha5.1</VersionSuffix>
10+
<VersionSuffix>alpha5.2</VersionSuffix>
1111
<AssemblyVersion>$(VersionPrefix)</AssemblyVersion>
1212
<FileVersion>$(VersionPrefix)</FileVersion>
1313
<Authors>The Synapse Authors</Authors>

src/core/Synapse.Core.Infrastructure.Containers.Kubernetes/Synapse.Core.Infrastructure.Containers.Kubernetes.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<NeutralLanguage>en</NeutralLanguage>
88
<GenerateDocumentationFile>True</GenerateDocumentationFile>
99
<VersionPrefix>1.0.0</VersionPrefix>
10-
<VersionSuffix>alpha5.1</VersionSuffix>
10+
<VersionSuffix>alpha5.2</VersionSuffix>
1111
<AssemblyVersion>$(VersionPrefix)</AssemblyVersion>
1212
<FileVersion>$(VersionPrefix)</FileVersion>
1313
<Authors>The Synapse Authors</Authors>

src/core/Synapse.Core.Infrastructure/Synapse.Core.Infrastructure.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<NeutralLanguage>en</NeutralLanguage>
88
<GenerateDocumentationFile>True</GenerateDocumentationFile>
99
<VersionPrefix>1.0.0</VersionPrefix>
10-
<VersionSuffix>alpha5.1</VersionSuffix>
10+
<VersionSuffix>alpha5.2</VersionSuffix>
1111
<AssemblyVersion>$(VersionPrefix)</AssemblyVersion>
1212
<FileVersion>$(VersionPrefix)</FileVersion>
1313
<Authors>The Synapse Authors</Authors>

src/core/Synapse.Core/Synapse.Core.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<NeutralLanguage>en</NeutralLanguage>
88
<GenerateDocumentationFile>True</GenerateDocumentationFile>
99
<VersionPrefix>1.0.0</VersionPrefix>
10-
<VersionSuffix>alpha5.1</VersionSuffix>
10+
<VersionSuffix>alpha5.2</VersionSuffix>
1111
<AssemblyVersion>$(VersionPrefix)</AssemblyVersion>
1212
<FileVersion>$(VersionPrefix)</FileVersion>
1313
<Authors>The Synapse Authors</Authors>

src/correlator/Synapse.Correlator/Synapse.Correlator.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<NeutralLanguage>en</NeutralLanguage>
99
<GenerateDocumentationFile>True</GenerateDocumentationFile>
1010
<VersionPrefix>1.0.0</VersionPrefix>
11-
<VersionSuffix>alpha5.1</VersionSuffix>
11+
<VersionSuffix>alpha5.2</VersionSuffix>
1212
<AssemblyVersion>$(VersionPrefix)</AssemblyVersion>
1313
<FileVersion>$(VersionPrefix)</FileVersion>
1414
<Authors>The Synapse Authors</Authors>

src/dashboard/Synapse.Dashboard/Components/TaskInstanceDetails/TaskInstanceDetails.razor

-35
Original file line numberDiff line numberDiff line change
@@ -71,32 +71,6 @@
7171
<DocumentDetails Label='Output' Reference="@TaskInstance.OutputReference" />
7272
}
7373
</div>
74-
<h6 class="pt-3">Executed Tasks</h6>
75-
@if (SubTasks == null || SubTasks.Count() == 0)
76-
{
77-
@("-")
78-
}
79-
else
80-
{
81-
<table class="table table-hover">
82-
<thead>
83-
<tr>
84-
<th>Name</th>
85-
<th class="text-center">Status</th>
86-
<th class="text-center">Start Time</th>
87-
<th class="text-center">End Time</th>
88-
<th class="text-center">Duration</th>
89-
<th></th>
90-
</tr>
91-
</thead>
92-
<tbody>
93-
@foreach (var task in SubTasks)
94-
{
95-
<TaskInstanceRow TaskInstance="@task" Tasks="@Tasks"/>
96-
}
97-
</tbody>
98-
</table>
99-
}
10074
<h6 class="pt-3">Runs</h6>
10175
@if (TaskInstance.Runs == null || TaskInstance.Runs.Count == 0)
10276
{
@@ -163,13 +137,4 @@
163137

164138
@code {
165139
[Parameter] public TaskInstance? TaskInstance { get; set; }
166-
[Parameter] public IEnumerable<TaskInstance>? Tasks { get; set; }
167-
168-
IEnumerable<TaskInstance> SubTasks
169-
{
170-
get
171-
{
172-
return TaskInstance == null ? [] : (this.Tasks ?? []).Where(t => t.ParentId == TaskInstance.Id);
173-
}
174-
}
175140
}

src/dashboard/Synapse.Dashboard/Components/WorkflowInstanceDetails/TaskInstanceRow.razor

+25-2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,17 @@
1818

1919
@if (TaskInstance != null) {
2020
<tr @onclick="async _ => await OnToggleRow()" class="cursor-pointer">
21+
<td>
22+
@if (HasChildren) {
23+
@for(var i = 0; i<Depth; i++)
24+
{
25+
<span class="ps-2"></span>
26+
}
27+
<span @onclick="ToggleChildrenVisibility" @onclick:stopPropagation="true">
28+
<Icon Name="showChildren ? IconName.Dash : IconName.Plus" Class="cursor-pointer" />
29+
</span>
30+
}
31+
</td>
2132
<td>@TaskInstance.Reference</td>
2233
<td class="text-center"><span class="badge rounded-pill badge rounded-pill border @TaskInstance.Status.GetColorClass()">@(TaskInstance.Status ?? TaskInstanceStatus.Pending)</span></td>
2334
<td class="text-center">@(TaskInstance.StartedAt?.RelativeFormat() ?? "-")</td>
@@ -38,7 +49,7 @@
3849
<tr>
3950
<td colspan="999">
4051
<Collapse @ref="collapse">
41-
<TaskInstanceDetails TaskInstance="@TaskInstance" Tasks="@Tasks" />
52+
<TaskInstanceDetails TaskInstance="@TaskInstance" />
4253
</Collapse>
4354
</td>
4455
</tr>
@@ -47,9 +58,12 @@
4758

4859
@code {
4960
[Parameter] public TaskInstance? TaskInstance { get; set; }
50-
[Parameter] public IEnumerable<TaskInstance>? Tasks { get; set; }
61+
[Parameter] public bool HasChildren { get; set; }
62+
[Parameter] public EventCallback<( string, int )> OnToggleChildrenClick { get; set; }
63+
[Parameter] public int Depth { get; set; }
5164
bool isOpen = false;
5265
Collapse? collapse;
66+
bool showChildren = false;
5367

5468
async Task OnToggleRow()
5569
{
@@ -62,4 +76,13 @@
6276
}
6377
StateHasChanged();
6478
}
79+
80+
async Task ToggleChildrenVisibility()
81+
{
82+
showChildren = !showChildren;
83+
if (OnToggleChildrenClick.HasDelegate && TaskInstance != null)
84+
{
85+
await OnToggleChildrenClick.InvokeAsync((TaskInstance.Id, Depth ));
86+
}
87+
}
6588
}

src/dashboard/Synapse.Dashboard/Components/WorkflowInstanceDetails/WorkflowInstanceDetails.razor

+27-2
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
<table class="table table-hover">
7878
<thead>
7979
<tr>
80+
<th></th>
8081
<th>Name</th>
8182
<th class="text-center">Status</th>
8283
<th class="text-center">Start Time</th>
@@ -86,9 +87,9 @@
8687
</tr>
8788
</thead>
8889
<tbody>
89-
@foreach (var task in workflowInstance.Status.Tasks.Where(task => string.IsNullOrWhiteSpace(task.ParentId)) )
90+
@foreach (var task in workflowInstance.Status.Tasks.Where(task => string.IsNullOrWhiteSpace(task.ParentId) || expandedTasks.ContainsKey(task.ParentId)) )
9091
{
91-
<TaskInstanceRow TaskInstance="@task" Tasks="@workflowInstance.Status.Tasks" />
92+
<TaskInstanceRow TaskInstance="@task" Depth="string.IsNullOrWhiteSpace(task.ParentId) ? 0 : (expandedTasks[task.ParentId] + 1)" HasChildren="workflowInstance.Status.Tasks.Any(t => t.ParentId == task.Id)" OnToggleChildrenClick="ToggleChildrenTask" />
9293
}
9394
</tbody>
9495
</table>
@@ -186,6 +187,7 @@
186187
@code {
187188
private WorkflowInstance? workflowInstance;
188189
[Parameter] public WorkflowInstance? WorkflowInstance { get; set; }
190+
private Dictionary<string, int> expandedTasks = new();
189191

190192
protected override void OnParametersSet()
191193
{
@@ -204,4 +206,27 @@
204206
shouldRender = false;
205207
return true;
206208
}
209+
210+
protected void CloseChildrenTask(string taskId)
211+
{
212+
if (expandedTasks.ContainsKey(taskId))
213+
{
214+
expandedTasks.Remove(taskId);
215+
}
216+
foreach (var child in workflowInstance?.Status?.Tasks?.Where(task => task.ParentId == taskId) ?? [])
217+
{
218+
CloseChildrenTask(child.Id);
219+
}
220+
}
221+
222+
protected void ToggleChildrenTask((string, int) e)
223+
{
224+
(string taskId, int depth) = e;
225+
if (expandedTasks.ContainsKey(taskId))
226+
{
227+
CloseChildrenTask(taskId);
228+
}
229+
else expandedTasks.Add(taskId, depth);
230+
shouldRender = true;
231+
}
207232
}

src/operator/Synapse.Operator/Synapse.Operator.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<NeutralLanguage>en</NeutralLanguage>
99
<GenerateDocumentationFile>True</GenerateDocumentationFile>
1010
<VersionPrefix>1.0.0</VersionPrefix>
11-
<VersionSuffix>alpha5.1</VersionSuffix>
11+
<VersionSuffix>alpha5.2</VersionSuffix>
1212
<AssemblyVersion>$(VersionPrefix)</AssemblyVersion>
1313
<FileVersion>$(VersionPrefix)</FileVersion>
1414
<Authors>The Synapse Authors</Authors>

src/runner/Synapse.Runner/Synapse.Runner.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<NeutralLanguage>en</NeutralLanguage>
99
<GenerateDocumentationFile>True</GenerateDocumentationFile>
1010
<VersionPrefix>1.0.0</VersionPrefix>
11-
<VersionSuffix>alpha5.1</VersionSuffix>
11+
<VersionSuffix>alpha5.2</VersionSuffix>
1212
<AssemblyVersion>$(VersionPrefix)</AssemblyVersion>
1313
<FileVersion>$(VersionPrefix)</FileVersion>
1414
<Authors>The Synapse Authors</Authors>

src/runtime/Synapse.Runtime.Abstractions/Synapse.Runtime.Abstractions.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<NeutralLanguage>en</NeutralLanguage>
88
<GenerateDocumentationFile>True</GenerateDocumentationFile>
99
<VersionPrefix>1.0.0</VersionPrefix>
10-
<VersionSuffix>alpha5.1</VersionSuffix>
10+
<VersionSuffix>alpha5.2</VersionSuffix>
1111
<AssemblyVersion>$(VersionPrefix)</AssemblyVersion>
1212
<FileVersion>$(VersionPrefix)</FileVersion>
1313
<Authors>The Synapse Authors</Authors>

src/runtime/Synapse.Runtime.Docker/Synapse.Runtime.Docker.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<NeutralLanguage>en</NeutralLanguage>
88
<GenerateDocumentationFile>True</GenerateDocumentationFile>
99
<VersionPrefix>1.0.0</VersionPrefix>
10-
<VersionSuffix>alpha5.1</VersionSuffix>
10+
<VersionSuffix>alpha5.2</VersionSuffix>
1111
<AssemblyVersion>$(VersionPrefix)</AssemblyVersion>
1212
<FileVersion>$(VersionPrefix)</FileVersion>
1313
<Authors>The Synapse Authors</Authors>

src/runtime/Synapse.Runtime.Kubernetes/Synapse.Runtime.Kubernetes.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<NeutralLanguage>en</NeutralLanguage>
88
<GenerateDocumentationFile>True</GenerateDocumentationFile>
99
<VersionPrefix>1.0.0</VersionPrefix>
10-
<VersionSuffix>alpha5.1</VersionSuffix>
10+
<VersionSuffix>alpha5.2</VersionSuffix>
1111
<AssemblyVersion>$(VersionPrefix)</AssemblyVersion>
1212
<FileVersion>$(VersionPrefix)</FileVersion>
1313
<Authors>The Synapse Authors</Authors>

src/runtime/Synapse.Runtime.Native/Synapse.Runtime.Native.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<NeutralLanguage>en</NeutralLanguage>
88
<GenerateDocumentationFile>True</GenerateDocumentationFile>
99
<VersionPrefix>1.0.0</VersionPrefix>
10-
<VersionSuffix>alpha5.1</VersionSuffix>
10+
<VersionSuffix>alpha5.2</VersionSuffix>
1111
<AssemblyVersion>$(VersionPrefix)</AssemblyVersion>
1212
<FileVersion>$(VersionPrefix)</FileVersion>
1313
<Authors>The Synapse Authors</Authors>

0 commit comments

Comments
 (0)