diff --git a/src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Dialogs/OpcUaBrowserDialog.razor b/src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Dialogs/OpcUaBrowserDialog.razor new file mode 100644 index 00000000..381397d1 --- /dev/null +++ b/src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Dialogs/OpcUaBrowserDialog.razor @@ -0,0 +1,92 @@ +@using ZB.MOM.WW.ScadaBridge.Commons.Interfaces.Protocol +@using ZB.MOM.WW.ScadaBridge.Commons.Messages.Management +@using ZB.MOM.WW.ScadaBridge.CentralUI.Services +@inject IOpcUaBrowseService BrowseService + +@if (_isVisible) +{ + +} + +@code { + [Parameter] public string SiteId { get; set; } = ""; + [Parameter] public int DataConnectionId { get; set; } + [Parameter] public string ConnectionName { get; set; } = ""; + [Parameter] public string? InitialNodeId { get; set; } + [Parameter] public EventCallback OnSelected { get; set; } + [Parameter] public EventCallback OnCancelled { get; set; } + + private bool _isVisible; + private string? _selectedNodeId; + private string _manualNodeId = ""; + private BrowseFailure? _failure; + private string _failureMessage = ""; + + public async Task ShowAsync() + { + _isVisible = true; + _manualNodeId = InitialNodeId ?? ""; + _selectedNodeId = InitialNodeId; + await LoadRootAsync(); + } + + private async Task LoadRootAsync() + { + // Task 16 + } + + private Task RetryRootLoad() => LoadRootAsync(); + + private void UseManual() + { + _selectedNodeId = _manualNodeId.Trim(); + } + + private async Task Confirm() + { + _isVisible = false; + if (!string.IsNullOrWhiteSpace(_selectedNodeId)) + await OnSelected.InvokeAsync(_selectedNodeId!); + } + + private async Task Cancel() + { + _isVisible = false; + await OnCancelled.InvokeAsync(); + } +}