feat(central-ui): tag selector + data-type auto-fill on Secured Writes
This commit is contained in:
@@ -5,6 +5,8 @@
|
|||||||
@using ZB.MOM.WW.ScadaBridge.Commons.Interfaces.Repositories
|
@using ZB.MOM.WW.ScadaBridge.Commons.Interfaces.Repositories
|
||||||
@using ZB.MOM.WW.ScadaBridge.Commons.Messages.Management
|
@using ZB.MOM.WW.ScadaBridge.Commons.Messages.Management
|
||||||
@using ZB.MOM.WW.ScadaBridge.Commons.Types.Enums
|
@using ZB.MOM.WW.ScadaBridge.Commons.Types.Enums
|
||||||
|
@using ZB.MOM.WW.ScadaBridge.CentralUI.Components.Dialogs
|
||||||
|
@using ZB.MOM.WW.ScadaBridge.Commons.Interfaces.Protocol
|
||||||
@using ZB.MOM.WW.ScadaBridge.Security
|
@using ZB.MOM.WW.ScadaBridge.Security
|
||||||
@inject ISecuredWriteService SecuredWriteSvc
|
@inject ISecuredWriteService SecuredWriteSvc
|
||||||
@inject ISiteRepository SiteRepository
|
@inject ISiteRepository SiteRepository
|
||||||
@@ -58,8 +60,14 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<label class="form-label form-label-sm">Tag path</label>
|
<label class="form-label form-label-sm">Tag path</label>
|
||||||
|
<div class="input-group input-group-sm">
|
||||||
<input class="form-control form-control-sm" @bind="_formTagPath"
|
<input class="form-control form-control-sm" @bind="_formTagPath"
|
||||||
placeholder="e.g. PLC1.Pump.Setpoint" data-test="secured-write-tagpath" />
|
placeholder="e.g. PLC1.Pump.Setpoint" data-test="secured-write-tagpath" />
|
||||||
|
<button class="btn btn-outline-secondary" type="button"
|
||||||
|
disabled="@(!CanBrowse)"
|
||||||
|
title="@(CanBrowse ? "Browse tags" : "Pick a site and MxGateway connection first")"
|
||||||
|
@onclick="OpenBrowser" data-test="secured-write-browse">Browse…</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<label class="form-label form-label-sm">Value</label>
|
<label class="form-label form-label-sm">Value</label>
|
||||||
@@ -89,6 +97,11 @@
|
|||||||
Submit for verification
|
Submit for verification
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
<NodeBrowserDialog @ref="_browserRef"
|
||||||
|
SiteId="@_formSiteIdentifier"
|
||||||
|
ConnectionName="@_formConnectionName"
|
||||||
|
ShowSearch="false"
|
||||||
|
OnNodeSelected="OnTagPicked" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Authorized>
|
</Authorized>
|
||||||
@@ -226,6 +239,25 @@
|
|||||||
private string _formValueType = nameof(DataType.Boolean);
|
private string _formValueType = nameof(DataType.Boolean);
|
||||||
private string _formComment = "";
|
private string _formComment = "";
|
||||||
|
|
||||||
|
private NodeBrowserDialog? _browserRef;
|
||||||
|
|
||||||
|
private bool CanBrowse =>
|
||||||
|
!string.IsNullOrWhiteSpace(_formSiteIdentifier)
|
||||||
|
&& !string.IsNullOrWhiteSpace(_formConnectionName);
|
||||||
|
|
||||||
|
private async Task OpenBrowser()
|
||||||
|
{
|
||||||
|
if (!CanBrowse || _browserRef is null) return;
|
||||||
|
await _browserRef.ShowAsync(_formSiteIdentifier, _formConnectionName, _formTagPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnTagPicked(BrowseNode node)
|
||||||
|
{
|
||||||
|
_formTagPath = node.NodeId;
|
||||||
|
if (SecuredWriteDataTypeMapper.TryMap(node.DataType, out var dt))
|
||||||
|
_formValueType = dt.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
private bool _submitting;
|
private bool _submitting;
|
||||||
private bool _actionInProgress;
|
private bool _actionInProgress;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user