From 0b5c1307f9bd6e140d7e8bde5d92b3cc012db157 Mon Sep 17 00:00:00 2001
From: Jean-Baptiste Bianchi <jb.bianchi@neuroglia.io>
Date: Fri, 31 Jan 2025 15:19:26 +0100
Subject: [PATCH] feat(Dashboard): center to node - Added a feature to center
 the graph on a clicked node in the dashboard

Signed-off-by: Jean-Baptiste Bianchi <jb.bianchi@neuroglia.io>
---
 src/api/Synapse.Api.Http/Synapse.Api.Http.csproj     |  4 ++--
 .../Synapse.Core.Infrastructure.csproj               | 12 ++++++------
 src/core/Synapse.Core/Synapse.Core.csproj            |  4 ++--
 .../Synapse.Correlator/Synapse.Correlator.csproj     | 12 ++++++------
 .../Components/WorkflowDiagram/WorkflowDiagram.razor |  4 ++++
 .../Synapse.Dashboard/Synapse.Dashboard.csproj       |  2 +-
 src/runner/Synapse.Runner/Synapse.Runner.csproj      | 10 +++++-----
 tests/Synapse.UnitTests/Synapse.UnitTests.csproj     |  6 +++---
 8 files changed, 29 insertions(+), 25 deletions(-)

diff --git a/src/api/Synapse.Api.Http/Synapse.Api.Http.csproj b/src/api/Synapse.Api.Http/Synapse.Api.Http.csproj
index dbe2e207..2b4e27c7 100644
--- a/src/api/Synapse.Api.Http/Synapse.Api.Http.csproj
+++ b/src/api/Synapse.Api.Http/Synapse.Api.Http.csproj
@@ -43,8 +43,8 @@
   </ItemGroup>
 	
   <ItemGroup>
-    <PackageReference Include="Neuroglia.Mediation.AspNetCore" Version="4.19.0" />
-    <PackageReference Include="Neuroglia.Security.AspNetCore" Version="4.19.0" />
+    <PackageReference Include="Neuroglia.Mediation.AspNetCore" Version="4.19.1" />
+    <PackageReference Include="Neuroglia.Security.AspNetCore" Version="4.19.1" />
 	<PackageReference Include="Swashbuckle.AspNetCore.SwaggerGen" Version="7.2.0" />
   </ItemGroup>
 
diff --git a/src/core/Synapse.Core.Infrastructure/Synapse.Core.Infrastructure.csproj b/src/core/Synapse.Core.Infrastructure/Synapse.Core.Infrastructure.csproj
index 443e8984..ba493273 100644
--- a/src/core/Synapse.Core.Infrastructure/Synapse.Core.Infrastructure.csproj
+++ b/src/core/Synapse.Core.Infrastructure/Synapse.Core.Infrastructure.csproj
@@ -45,12 +45,12 @@
   <ItemGroup>
 	<PackageReference Include="IdentityModel" Version="7.0.0" />
 	<PackageReference Include="Microsoft.IdentityModel.JsonWebTokens" Version="8.3.1" />
-	<PackageReference Include="Neuroglia.Data.Expressions.Abstractions" Version="4.19.0" />
-	<PackageReference Include="Neuroglia.Data.Infrastructure.Redis" Version="4.19.0" />
-	<PackageReference Include="Neuroglia.Data.Infrastructure.ResourceOriented.Redis" Version="4.19.0" />
-	<PackageReference Include="Neuroglia.Mediation" Version="4.19.0" />
-	<PackageReference Include="Neuroglia.Plugins" Version="4.19.0" />
-	<PackageReference Include="Neuroglia.Serialization.Xml" Version="4.19.0" />
+	<PackageReference Include="Neuroglia.Data.Expressions.Abstractions" Version="4.19.1" />
+	<PackageReference Include="Neuroglia.Data.Infrastructure.Redis" Version="4.19.1" />
+	<PackageReference Include="Neuroglia.Data.Infrastructure.ResourceOriented.Redis" Version="4.19.1" />
+	<PackageReference Include="Neuroglia.Mediation" Version="4.19.1" />
+	<PackageReference Include="Neuroglia.Plugins" Version="4.19.1" />
+	<PackageReference Include="Neuroglia.Serialization.Xml" Version="4.19.1" />
 	<PackageReference Include="ServerlessWorkflow.Sdk.IO" Version="1.0.0" />
   </ItemGroup>
 	
diff --git a/src/core/Synapse.Core/Synapse.Core.csproj b/src/core/Synapse.Core/Synapse.Core.csproj
index c4f8f688..d892ab23 100644
--- a/src/core/Synapse.Core/Synapse.Core.csproj
+++ b/src/core/Synapse.Core/Synapse.Core.csproj
@@ -67,8 +67,8 @@
 	<PackageReference Include="Apache.Avro" Version="1.12.0" />
 	<PackageReference Include="Docker.DotNet" Version="3.125.15" />
 	<PackageReference Include="KubernetesClient" Version="16.0.2" />
-	<PackageReference Include="Neuroglia.Data.Infrastructure.ResourceOriented" Version="4.19.0" />
-	<PackageReference Include="Neuroglia.Eventing.CloudEvents" Version="4.19.0" />
+	<PackageReference Include="Neuroglia.Data.Infrastructure.ResourceOriented" Version="4.19.1" />
+	<PackageReference Include="Neuroglia.Eventing.CloudEvents" Version="4.19.1" />
     <PackageReference Include="Semver" Version="3.0.0" />
     <PackageReference Include="ServerlessWorkflow.Sdk" Version="1.0.0" />
   </ItemGroup>
diff --git a/src/correlator/Synapse.Correlator/Synapse.Correlator.csproj b/src/correlator/Synapse.Correlator/Synapse.Correlator.csproj
index cb836a2a..abd22a90 100644
--- a/src/correlator/Synapse.Correlator/Synapse.Correlator.csproj
+++ b/src/correlator/Synapse.Correlator/Synapse.Correlator.csproj
@@ -36,12 +36,12 @@
 	<PackageReference Include="Microsoft.Extensions.Configuration.KeyPerFile" Version="9.0.1" />
     <PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.1" />
     <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.21.0" />
-	<PackageReference Include="Neuroglia.Data.Expressions.JavaScript" Version="4.19.0" />
-	<PackageReference Include="Neuroglia.Data.Expressions.JQ" Version="4.19.0" />
-    <PackageReference Include="Neuroglia.Eventing.CloudEvents.AspNetCore" Version="4.19.0" />
-	<PackageReference Include="Neuroglia.Mediation.AspNetCore" Version="4.19.0" />
-	<PackageReference Include="Neuroglia.Eventing.CloudEvents.Infrastructure" Version="4.19.0" />
-	<PackageReference Include="Neuroglia.Security.AspNetCore" Version="4.19.0" />
+	<PackageReference Include="Neuroglia.Data.Expressions.JavaScript" Version="4.19.1" />
+	<PackageReference Include="Neuroglia.Data.Expressions.JQ" Version="4.19.1" />
+    <PackageReference Include="Neuroglia.Eventing.CloudEvents.AspNetCore" Version="4.19.1" />
+	<PackageReference Include="Neuroglia.Mediation.AspNetCore" Version="4.19.1" />
+	<PackageReference Include="Neuroglia.Eventing.CloudEvents.Infrastructure" Version="4.19.1" />
+	<PackageReference Include="Neuroglia.Security.AspNetCore" Version="4.19.1" />
 	<PackageReference Include="Swashbuckle.AspNetCore.SwaggerGen" Version="7.2.0" />
 	<PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="7.2.0" />
   </ItemGroup>
diff --git a/src/dashboard/Synapse.Dashboard/Components/WorkflowDiagram/WorkflowDiagram.razor b/src/dashboard/Synapse.Dashboard/Components/WorkflowDiagram/WorkflowDiagram.razor
index 5f1fba46..cb7caf22 100644
--- a/src/dashboard/Synapse.Dashboard/Components/WorkflowDiagram/WorkflowDiagram.razor
+++ b/src/dashboard/Synapse.Dashboard/Components/WorkflowDiagram/WorkflowDiagram.razor
@@ -153,6 +153,10 @@
             graph.CssClass = "";
             isDirty = true;
         }
+        if (graph != null && this.Store.DagreGraph != null && e.GraphElement is INodeViewModel node)
+        {
+            await this.Store.DagreGraph.CenterAsync(node);
+        }
         if (OnMouseUp.HasDelegate)
         {
             await OnMouseUp.InvokeAsync(e);
diff --git a/src/dashboard/Synapse.Dashboard/Synapse.Dashboard.csproj b/src/dashboard/Synapse.Dashboard/Synapse.Dashboard.csproj
index 7a35323b..f6a2a55e 100644
--- a/src/dashboard/Synapse.Dashboard/Synapse.Dashboard.csproj
+++ b/src/dashboard/Synapse.Dashboard/Synapse.Dashboard.csproj
@@ -17,7 +17,7 @@
 	<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Authentication" Version="9.0.1" />
     <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="9.0.1" PrivateAssets="all" />
     <PackageReference Include="moment.net" Version="1.3.4" />
-    <PackageReference Include="Neuroglia.Blazor.Dagre" Version="4.19.0" />
+    <PackageReference Include="Neuroglia.Blazor.Dagre" Version="4.19.1" />
   </ItemGroup>
 
   <ItemGroup>
diff --git a/src/runner/Synapse.Runner/Synapse.Runner.csproj b/src/runner/Synapse.Runner/Synapse.Runner.csproj
index e076a3de..4032ca3a 100644
--- a/src/runner/Synapse.Runner/Synapse.Runner.csproj
+++ b/src/runner/Synapse.Runner/Synapse.Runner.csproj
@@ -63,11 +63,11 @@
 	<PackageReference Include="Moq" Version="4.20.72" />
 	<PackageReference Include="Neuroglia.AsyncApi.Client.Bindings.All" Version="3.0.1" />
 	<PackageReference Include="Neuroglia.AsyncApi.DependencyInjectionExtensions" Version="3.0.1" />
-	<PackageReference Include="Neuroglia.Data.Expressions.JavaScript" Version="4.19.0" />
-	<PackageReference Include="Neuroglia.Data.Expressions.JQ" Version="4.19.0" />
-	<PackageReference Include="Neuroglia.Eventing.CloudEvents.Infrastructure" Version="4.19.0" />
-	<PackageReference Include="Neuroglia.Scripting.NodeJS" Version="4.19.0" />
-	<PackageReference Include="Neuroglia.Scripting.Python" Version="4.19.0" />
+	<PackageReference Include="Neuroglia.Data.Expressions.JavaScript" Version="4.19.1" />
+	<PackageReference Include="Neuroglia.Data.Expressions.JQ" Version="4.19.1" />
+	<PackageReference Include="Neuroglia.Eventing.CloudEvents.Infrastructure" Version="4.19.1" />
+	<PackageReference Include="Neuroglia.Scripting.NodeJS" Version="4.19.1" />
+	<PackageReference Include="Neuroglia.Scripting.Python" Version="4.19.1" />
 	<PackageReference Include="NReco.Logging.File" Version="1.2.2" />
 	<PackageReference Include="protobuf-net.Grpc.ClientFactory" Version="1.2.2" />
     <PackageReference Include="System.Reactive" Version="6.0.1" />
diff --git a/tests/Synapse.UnitTests/Synapse.UnitTests.csproj b/tests/Synapse.UnitTests/Synapse.UnitTests.csproj
index c4c87fc2..d4adf3a6 100644
--- a/tests/Synapse.UnitTests/Synapse.UnitTests.csproj
+++ b/tests/Synapse.UnitTests/Synapse.UnitTests.csproj
@@ -19,9 +19,9 @@
     <PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.1" />
     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
     <PackageReference Include="Moq" Version="4.20.72" />
-    <PackageReference Include="Neuroglia.Data.Expressions.JQ" Version="4.19.0" />
-    <PackageReference Include="Neuroglia.Data.Infrastructure.Memory" Version="4.19.0" />
-    <PackageReference Include="Neuroglia.Data.Infrastructure.ResourceOriented.Redis" Version="4.19.0" />
+    <PackageReference Include="Neuroglia.Data.Expressions.JQ" Version="4.19.1" />
+    <PackageReference Include="Neuroglia.Data.Infrastructure.Memory" Version="4.19.1" />
+    <PackageReference Include="Neuroglia.Data.Infrastructure.ResourceOriented.Redis" Version="4.19.1" />
     <PackageReference Include="ServerlessWorkflow.Sdk.Builders" Version="1.0.0" />
 	<PackageReference Include="ServerlessWorkflow.Sdk.IO" Version="1.0.0" />
 	<PackageReference Include="System.Net.Http" Version="4.3.4" />