From efe3ada03d4c21d3494c38003a79afc5670c25e2 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Thu, 18 Jun 2026 11:03:22 -0400 Subject: [PATCH] feat(m9/T25): connection live-status indicators on the design page --- .../Pages/Design/DataConnections.razor | 74 +++++++++ .../ServiceCollectionExtensions.cs | 7 + .../Services/ConnectionHealthQueryService.cs | 86 ++++++++++ .../Services/IConnectionHealthQueryService.cs | 27 ++++ .../DataConnectionsPageTests.cs | 47 ++++++ .../ConnectionHealthQueryServiceTests.cs | 152 ++++++++++++++++++ 6 files changed, 393 insertions(+) create mode 100644 src/ZB.MOM.WW.ScadaBridge.CentralUI/Services/ConnectionHealthQueryService.cs create mode 100644 src/ZB.MOM.WW.ScadaBridge.CentralUI/Services/IConnectionHealthQueryService.cs create mode 100644 tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/Services/ConnectionHealthQueryServiceTests.cs diff --git a/src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/DataConnections.razor b/src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/DataConnections.razor index 43f73e4c..4cac2de1 100644 --- a/src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/DataConnections.razor +++ b/src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/DataConnections.razor @@ -1,10 +1,14 @@ @page "/design/connections" @page "/design/data-connections" @using ZB.MOM.WW.ScadaBridge.Security +@using ZB.MOM.WW.ScadaBridge.CentralUI.Services @using ZB.MOM.WW.ScadaBridge.Commons.Entities.Sites @using ZB.MOM.WW.ScadaBridge.Commons.Interfaces.Repositories +@using ZB.MOM.WW.ScadaBridge.Commons.Types.Enums @attribute [Authorize(Policy = AuthorizationPolicies.RequireDesign)] +@implements IDisposable @inject ISiteRepository SiteRepository +@inject IConnectionHealthQueryService ConnectionHealthQuery @inject NavigationManager NavigationManager @inject IDialogService Dialog @@ -80,6 +84,21 @@ { @node.Label @node.Connection!.Protocol + var health = _connectionHealth.TryGetValue(node.Connection!.Id, out var h) + ? (ConnectionHealth?)h + : null; + @if (health is { } known) + { + @known + } + else + { + Unknown + } }