From 99c0abb0fd6ebbb14e4b401a7cde6a8f141c0dd1 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Mon, 26 Feb 2024 18:26:30 +0100 Subject: [PATCH] Completata sositutiozne sampler con TabDataFeeder --- MP-TAB3/Components/MseSampler.razor | 1 - MP-TAB3/Components/MseSampler.razor.cs | 162 ------------------------- MP-TAB3/MP-TAB3.csproj | 5 + MP-TAB3/Pages/Alarms.razor | 1 - MP-TAB3/Pages/Alarms.razor.cs | 38 +++++- MP-TAB3/Pages/Controls.razor | 1 - MP-TAB3/Pages/Controls.razor.cs | 39 +++++- MP-TAB3/Pages/IobInfo.razor | 1 - MP-TAB3/Pages/IobInfo.razor.cs | 38 +++++- MP-TAB3/Pages/Notes.razor | 1 - MP-TAB3/Pages/Notes.razor.cs | 38 +++++- MP-TAB3/Pages/Parameters.razor.cs | 1 + MP-TAB3/Pages/ProdPlan.razor | 1 - MP-TAB3/Pages/ProdPlan.razor.cs | 37 +++++- MP-TAB3/Pages/Scrap.razor | 1 - MP-TAB3/Pages/Scrap.razor.cs | 38 +++++- MP-TAB3/Pages/WorkShift.razor | 1 - MP-TAB3/Pages/WorkShift.razor.cs | 40 +++++- 18 files changed, 267 insertions(+), 177 deletions(-) delete mode 100644 MP-TAB3/Components/MseSampler.razor delete mode 100644 MP-TAB3/Components/MseSampler.razor.cs diff --git a/MP-TAB3/Components/MseSampler.razor b/MP-TAB3/Components/MseSampler.razor deleted file mode 100644 index 5f282702..00000000 --- a/MP-TAB3/Components/MseSampler.razor +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/MP-TAB3/Components/MseSampler.razor.cs b/MP-TAB3/Components/MseSampler.razor.cs deleted file mode 100644 index 8f32699b..00000000 --- a/MP-TAB3/Components/MseSampler.razor.cs +++ /dev/null @@ -1,162 +0,0 @@ -using global::Microsoft.AspNetCore.Components; -using MP.Data.DatabaseModels; -using MP.Data.Services; -using NLog; - -namespace MP_TAB3.Components -{ - public partial class MseSampler : IDisposable - { - #region Public Properties - - [Parameter] - public EventCallback> E_Updated { get; set; } - - /// Moltiplicatore campionamento: - /// HF: se > 1 (mappa) - /// LF: se < 1 (dettaglio) - [Parameter] - public double SampleMult { get; set; } = 1; - - #endregion Public Properties - - #region Public Methods - - public void Dispose() - { - if (aTimer != null) - { - disposeTimer(); - } - } - - #endregion Public Methods - - #region Protected Fields - - protected int fastTimerMSec = 3000; - - #endregion Protected Fields - - #region Protected Properties - - [Inject] - protected IConfiguration config { get; set; } = null!; - - protected int fastRefreshMs - { - get - { - // tempo variabile tra +/- 10% del target (SampleMult) della freq standard di update MSE - int answ = ((int)(fastTimerMSec / SampleMult * rnd.Next(900, 1100))) / 1000; - return answ; - } - } - - [Inject] - protected MessageService MServ { get; set; } = null!; - - [Inject] - protected StatusData SDService { get; set; } = null!; - - #endregion Protected Properties - - #region Protected Methods - - protected void ElapsedTimer(object? source, System.Timers.ElapsedEventArgs e) - { - try - { - var pUpd = Task.Run(async () => - { - numCall++; - // se supero limite --> resetto - if (numCall >= maxCall) - { - StartTimer(); - numCall = 0; - } - else - { - aTimer.Interval = fastRefreshMs; - await InvokeAsync(RefreshData); - } - }); - pUpd.Wait(); - } - catch (Exception exc) - { - Log.Error($"Eccezione durante MseSampler.ElapsedTimer{Environment.NewLine}{exc}"); - } - } - - protected override void OnInitialized() - { - SetupConf(); - StartTimer(); - } - - protected void StartTimer() - { - if (aTimer != null) - { - disposeTimer(); - } - aTimer = new System.Timers.Timer(fastRefreshMs); - aTimer.Elapsed += ElapsedTimer; - aTimer.Enabled = true; - aTimer.Start(); - Log.Info("MseSampler Timer started!"); - } - - #endregion Protected Methods - - #region Private Fields - - private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); - - private System.Timers.Timer aTimer = null!; - - /// - /// max chimate prima di fare dispose/GC - /// - private int maxCall = 10; - - /// - /// Numero chiamate al sampler - /// - private int numCall = 0; - - private Random rnd = new Random(); - - #endregion Private Fields - - #region Private Methods - - private void disposeTimer() - { - aTimer.Elapsed -= ElapsedTimer; - aTimer.Stop(); - aTimer.Dispose(); - GC.Collect(); - Log.Info("MseSampler Timer Disposed!"); - } - - private async Task RefreshData() - { - List ListMSE = await SDService.MseGetAll(); - await MServ.SaveMse(ListMSE); - await E_Updated.InvokeAsync(ListMSE); - } - - private void SetupConf() - { - // sistemo i parametri opzionali... - fastTimerMSec = config.GetValue("OptConf:msRefresh"); - maxCall = config.GetValue("OptConf:samplerMaxCall"); - Log.Trace($"MseSampler setupConf | Effettuato setup parametri | fastRefreshMSec: {fastTimerMSec} | maxCall: {maxCall}"); - } - - #endregion Private Methods - } -} \ No newline at end of file diff --git a/MP-TAB3/MP-TAB3.csproj b/MP-TAB3/MP-TAB3.csproj index fb4223f8..0012844d 100644 --- a/MP-TAB3/MP-TAB3.csproj +++ b/MP-TAB3/MP-TAB3.csproj @@ -8,8 +8,13 @@ MP_TAB3 + + + + + diff --git a/MP-TAB3/Pages/Alarms.razor b/MP-TAB3/Pages/Alarms.razor index cba45328..76e3aca8 100644 --- a/MP-TAB3/Pages/Alarms.razor +++ b/MP-TAB3/Pages/Alarms.razor @@ -1,6 +1,5 @@ @page "/alarms" - @if (string.IsNullOrEmpty(IdxMacc) || CurrMSE == null) { diff --git a/MP-TAB3/Pages/Alarms.razor.cs b/MP-TAB3/Pages/Alarms.razor.cs index de6fd6db..43cf8a7f 100644 --- a/MP-TAB3/Pages/Alarms.razor.cs +++ b/MP-TAB3/Pages/Alarms.razor.cs @@ -1,6 +1,8 @@ using global::Microsoft.AspNetCore.Components; +using MP.Data; using MP.Data.DatabaseModels; using MP.Data.Services; +using Newtonsoft.Json; namespace MP_TAB3.Pages { @@ -12,7 +14,7 @@ namespace MP_TAB3.Pages { IdxMacc = ""; CurrMSE = null; - //GC.Collect(); + TDFeeder.dataPipe.EA_NewMessage -= DataPipe_EA_NewMessage; } #endregion Public Methods @@ -20,11 +22,15 @@ namespace MP_TAB3.Pages #region Protected Properties protected MappaStatoExpl? CurrMSE { get; set; } = null; + protected string IdxMacc { get; set; } = ""; [Inject] protected MessageService MsgServ { get; set; } = null!; + [Inject] + protected TabDataFeeder TDFeeder { get; set; } = null!; + #endregion Protected Properties #region Protected Methods @@ -32,6 +38,7 @@ namespace MP_TAB3.Pages protected override async Task OnInitializedAsync() { await ReloadData(); + TDFeeder.dataPipe.EA_NewMessage += DataPipe_EA_NewMessage; } protected async Task RefreshData(List newList) @@ -56,6 +63,35 @@ namespace MP_TAB3.Pages #region Private Methods + /// + /// Ricevuto nuovi dati da mostrare! + /// + /// + /// + /// + private void DataPipe_EA_NewMessage(object? sender, EventArgs e) + { + PubSubEventArgs currArgs = (PubSubEventArgs)e; + // conversione on-the-fly List --> allarmi + if (!string.IsNullOrEmpty(currArgs.newMessage)) + { + try + { + List? dataList = JsonConvert.DeserializeObject>(currArgs.newMessage); + if (dataList != null) + { + InvokeAsync(() => RefreshData(dataList)); + } + } + catch + { } + } + InvokeAsync(() => + { + StateHasChanged(); + }); + } + private async Task ReloadData() { if (string.IsNullOrEmpty(IdxMacc)) diff --git a/MP-TAB3/Pages/Controls.razor b/MP-TAB3/Pages/Controls.razor index 8a35b6c9..881e1e03 100644 --- a/MP-TAB3/Pages/Controls.razor +++ b/MP-TAB3/Pages/Controls.razor @@ -1,6 +1,5 @@ @page "/controls" - @if (string.IsNullOrEmpty(IdxMacc) || CurrMSE == null || IsLoading) { diff --git a/MP-TAB3/Pages/Controls.razor.cs b/MP-TAB3/Pages/Controls.razor.cs index 0668beed..5c884059 100644 --- a/MP-TAB3/Pages/Controls.razor.cs +++ b/MP-TAB3/Pages/Controls.razor.cs @@ -1,6 +1,8 @@ using global::Microsoft.AspNetCore.Components; +using MP.Data; using MP.Data.DatabaseModels; using MP.Data.Services; +using Newtonsoft.Json; namespace MP_TAB3.Pages { @@ -12,7 +14,7 @@ namespace MP_TAB3.Pages { IdxMacc = ""; CurrMSE = null; - //GC.Collect(); + TDFeeder.dataPipe.EA_NewMessage -= DataPipe_EA_NewMessage; } #endregion Public Methods @@ -20,11 +22,15 @@ namespace MP_TAB3.Pages #region Protected Properties protected MappaStatoExpl? CurrMSE { get; set; } = null; + protected string IdxMacc { get; set; } = ""; [Inject] protected MessageService MsgServ { get; set; } = null!; + [Inject] + protected TabDataFeeder TDFeeder { get; set; } = null!; + #endregion Protected Properties #region Protected Methods @@ -39,6 +45,7 @@ namespace MP_TAB3.Pages protected override async Task OnInitializedAsync() { await ReloadData(); + TDFeeder.dataPipe.EA_NewMessage += DataPipe_EA_NewMessage; } protected async Task RefreshData(List newList) @@ -69,12 +76,42 @@ namespace MP_TAB3.Pages #region Private Fields private string IdxMaccSubSel = ""; + private bool IsLoading = false; #endregion Private Fields #region Private Methods + /// + /// Ricevuto nuovi dati da mostrare! + /// + /// + /// + /// + private void DataPipe_EA_NewMessage(object? sender, EventArgs e) + { + PubSubEventArgs currArgs = (PubSubEventArgs)e; + // conversione on-the-fly List --> allarmi + if (!string.IsNullOrEmpty(currArgs.newMessage)) + { + try + { + List? dataList = JsonConvert.DeserializeObject>(currArgs.newMessage); + if (dataList != null) + { + InvokeAsync(() => RefreshData(dataList)); + } + } + catch + { } + } + InvokeAsync(() => + { + StateHasChanged(); + }); + } + private async Task ReloadData() { if (string.IsNullOrEmpty(IdxMacc)) diff --git a/MP-TAB3/Pages/IobInfo.razor b/MP-TAB3/Pages/IobInfo.razor index 35077c37..f07e9f92 100644 --- a/MP-TAB3/Pages/IobInfo.razor +++ b/MP-TAB3/Pages/IobInfo.razor @@ -1,6 +1,5 @@ @page "/iob-info" - @if (string.IsNullOrEmpty(IdxMacc) || CurrMSE == null) { diff --git a/MP-TAB3/Pages/IobInfo.razor.cs b/MP-TAB3/Pages/IobInfo.razor.cs index d33ea89f..8276a5af 100644 --- a/MP-TAB3/Pages/IobInfo.razor.cs +++ b/MP-TAB3/Pages/IobInfo.razor.cs @@ -1,6 +1,8 @@ using global::Microsoft.AspNetCore.Components; +using MP.Data; using MP.Data.DatabaseModels; using MP.Data.Services; +using Newtonsoft.Json; namespace MP_TAB3.Pages { @@ -12,7 +14,7 @@ namespace MP_TAB3.Pages { IdxMacc = ""; CurrMSE = null; - //GC.Collect(); + TDFeeder.dataPipe.EA_NewMessage -= DataPipe_EA_NewMessage; } #endregion Public Methods @@ -20,11 +22,15 @@ namespace MP_TAB3.Pages #region Protected Properties protected MappaStatoExpl? CurrMSE { get; set; } = null; + protected string IdxMacc { get; set; } = ""; [Inject] protected MessageService MsgServ { get; set; } = null!; + [Inject] + protected TabDataFeeder TDFeeder { get; set; } = null!; + #endregion Protected Properties #region Protected Methods @@ -32,6 +38,7 @@ namespace MP_TAB3.Pages protected override async Task OnInitializedAsync() { await ReloadData(); + TDFeeder.dataPipe.EA_NewMessage += DataPipe_EA_NewMessage; } protected async Task RefreshData(List newList) @@ -56,6 +63,35 @@ namespace MP_TAB3.Pages #region Private Methods + /// + /// Ricevuto nuovi dati da mostrare! + /// + /// + /// + /// + private void DataPipe_EA_NewMessage(object? sender, EventArgs e) + { + PubSubEventArgs currArgs = (PubSubEventArgs)e; + // conversione on-the-fly List --> allarmi + if (!string.IsNullOrEmpty(currArgs.newMessage)) + { + try + { + List? dataList = JsonConvert.DeserializeObject>(currArgs.newMessage); + if (dataList != null) + { + InvokeAsync(() => RefreshData(dataList)); + } + } + catch + { } + } + InvokeAsync(() => + { + StateHasChanged(); + }); + } + private async Task ReloadData() { if (string.IsNullOrEmpty(IdxMacc)) diff --git a/MP-TAB3/Pages/Notes.razor b/MP-TAB3/Pages/Notes.razor index de63c2db..a6efd042 100644 --- a/MP-TAB3/Pages/Notes.razor +++ b/MP-TAB3/Pages/Notes.razor @@ -1,6 +1,5 @@ @page "/notes" - @if (string.IsNullOrEmpty(IdxMacc) || CurrMSE == null) { diff --git a/MP-TAB3/Pages/Notes.razor.cs b/MP-TAB3/Pages/Notes.razor.cs index 62ac74b4..6c89ffbe 100644 --- a/MP-TAB3/Pages/Notes.razor.cs +++ b/MP-TAB3/Pages/Notes.razor.cs @@ -1,6 +1,9 @@ using global::Microsoft.AspNetCore.Components; +using MP.Data; using MP.Data.DatabaseModels; using MP.Data.Services; +using Newtonsoft.Json; + namespace MP_TAB3.Pages { @@ -12,7 +15,7 @@ namespace MP_TAB3.Pages { IdxMacc = ""; CurrMSE = null; - //GC.Collect(); + TDFeeder.dataPipe.EA_NewMessage -= DataPipe_EA_NewMessage; } #endregion Public Methods @@ -25,6 +28,9 @@ namespace MP_TAB3.Pages [Inject] protected MessageService MsgServ { get; set; } = null!; + [Inject] + protected TabDataFeeder TDFeeder { get; set; } = null!; + #endregion Protected Properties #region Protected Methods @@ -32,6 +38,7 @@ namespace MP_TAB3.Pages protected override async Task OnInitializedAsync() { await ReloadData(); + TDFeeder.dataPipe.EA_NewMessage += DataPipe_EA_NewMessage; } protected async Task RefreshData(List newList) @@ -56,6 +63,35 @@ namespace MP_TAB3.Pages #region Private Methods + /// + /// Ricevuto nuovi dati da mostrare! + /// + /// + /// + /// + private void DataPipe_EA_NewMessage(object? sender, EventArgs e) + { + PubSubEventArgs currArgs = (PubSubEventArgs)e; + // conversione on-the-fly List --> allarmi + if (!string.IsNullOrEmpty(currArgs.newMessage)) + { + try + { + List? dataList = JsonConvert.DeserializeObject>(currArgs.newMessage); + if (dataList != null) + { + InvokeAsync(() => RefreshData(dataList)); + } + } + catch + { } + } + InvokeAsync(() => + { + StateHasChanged(); + }); + } + private async Task ReloadData() { if (string.IsNullOrEmpty(IdxMacc)) diff --git a/MP-TAB3/Pages/Parameters.razor.cs b/MP-TAB3/Pages/Parameters.razor.cs index 49daa78a..8c65a789 100644 --- a/MP-TAB3/Pages/Parameters.razor.cs +++ b/MP-TAB3/Pages/Parameters.razor.cs @@ -4,6 +4,7 @@ using MP.Data.DatabaseModels; using MP.Data.Services; using Newtonsoft.Json; + namespace MP_TAB3.Pages { public partial class Parameters : IDisposable diff --git a/MP-TAB3/Pages/ProdPlan.razor b/MP-TAB3/Pages/ProdPlan.razor index 4130f6ac..5f909498 100644 --- a/MP-TAB3/Pages/ProdPlan.razor +++ b/MP-TAB3/Pages/ProdPlan.razor @@ -1,6 +1,5 @@ @page "/prod-plan" - @if (string.IsNullOrEmpty(IdxMacc) || CurrMSE == null) { diff --git a/MP-TAB3/Pages/ProdPlan.razor.cs b/MP-TAB3/Pages/ProdPlan.razor.cs index c7e206f2..3c701d1a 100644 --- a/MP-TAB3/Pages/ProdPlan.razor.cs +++ b/MP-TAB3/Pages/ProdPlan.razor.cs @@ -1,6 +1,8 @@ using global::Microsoft.AspNetCore.Components; +using MP.Data; using MP.Data.DatabaseModels; using MP.Data.Services; +using Newtonsoft.Json; using NLog; namespace MP_TAB3.Pages @@ -13,7 +15,7 @@ namespace MP_TAB3.Pages { IdxMacc = ""; CurrMSE = null; - //GC.Collect(); + TDFeeder.dataPipe.EA_NewMessage -= DataPipe_EA_NewMessage; } #endregion Public Methods @@ -26,6 +28,9 @@ namespace MP_TAB3.Pages [Inject] protected MessageService MsgServ { get; set; } = null!; + [Inject] + protected TabDataFeeder TDFeeder { get; set; } = null!; + #endregion Protected Properties #region Protected Methods @@ -33,6 +38,7 @@ namespace MP_TAB3.Pages protected override async Task OnInitializedAsync() { await ReloadData(); + TDFeeder.dataPipe.EA_NewMessage += DataPipe_EA_NewMessage; } protected async Task RefreshData(List newList) @@ -63,6 +69,35 @@ namespace MP_TAB3.Pages #region Private Methods + /// + /// Ricevuto nuovi dati da mostrare! + /// + /// + /// + /// + private void DataPipe_EA_NewMessage(object? sender, EventArgs e) + { + PubSubEventArgs currArgs = (PubSubEventArgs)e; + // conversione on-the-fly List --> allarmi + if (!string.IsNullOrEmpty(currArgs.newMessage)) + { + try + { + List? dataList = JsonConvert.DeserializeObject>(currArgs.newMessage); + if (dataList != null) + { + InvokeAsync(() => RefreshData(dataList)); + } + } + catch + { } + } + InvokeAsync(() => + { + StateHasChanged(); + }); + } + private async Task ReloadData() { try diff --git a/MP-TAB3/Pages/Scrap.razor b/MP-TAB3/Pages/Scrap.razor index 6ffaf1a3..51f857e6 100644 --- a/MP-TAB3/Pages/Scrap.razor +++ b/MP-TAB3/Pages/Scrap.razor @@ -1,6 +1,5 @@ @page "/scrap" - @if (string.IsNullOrEmpty(IdxMacc) || CurrMSE == null) { diff --git a/MP-TAB3/Pages/Scrap.razor.cs b/MP-TAB3/Pages/Scrap.razor.cs index aea77e19..2646022e 100644 --- a/MP-TAB3/Pages/Scrap.razor.cs +++ b/MP-TAB3/Pages/Scrap.razor.cs @@ -1,6 +1,8 @@ using global::Microsoft.AspNetCore.Components; +using MP.Data; using MP.Data.DatabaseModels; using MP.Data.Services; +using Newtonsoft.Json; namespace MP_TAB3.Pages { @@ -12,7 +14,7 @@ namespace MP_TAB3.Pages { IdxMacc = ""; CurrMSE = null; - //GC.Collect(); + TDFeeder.dataPipe.EA_NewMessage -= DataPipe_EA_NewMessage; } #endregion Public Methods @@ -20,11 +22,15 @@ namespace MP_TAB3.Pages #region Protected Properties protected MappaStatoExpl? CurrMSE { get; set; } = null; + protected string IdxMacc { get; set; } = ""; [Inject] protected MessageService MsgServ { get; set; } = null!; + [Inject] + protected TabDataFeeder TDFeeder { get; set; } = null!; + #endregion Protected Properties #region Protected Methods @@ -32,6 +38,7 @@ namespace MP_TAB3.Pages protected override async Task OnInitializedAsync() { await ReloadData(); + TDFeeder.dataPipe.EA_NewMessage += DataPipe_EA_NewMessage; } protected async Task RefreshData(List newList) @@ -67,6 +74,35 @@ namespace MP_TAB3.Pages #region Private Methods + /// + /// Ricevuto nuovi dati da mostrare! + /// + /// + /// + /// + private void DataPipe_EA_NewMessage(object? sender, EventArgs e) + { + PubSubEventArgs currArgs = (PubSubEventArgs)e; + // conversione on-the-fly List --> allarmi + if (!string.IsNullOrEmpty(currArgs.newMessage)) + { + try + { + List? dataList = JsonConvert.DeserializeObject>(currArgs.newMessage); + if (dataList != null) + { + InvokeAsync(() => RefreshData(dataList)); + } + } + catch + { } + } + InvokeAsync(() => + { + StateHasChanged(); + }); + } + private async Task ReloadData() { if (string.IsNullOrEmpty(IdxMacc)) diff --git a/MP-TAB3/Pages/WorkShift.razor b/MP-TAB3/Pages/WorkShift.razor index f6e8f517..bc115e6f 100644 --- a/MP-TAB3/Pages/WorkShift.razor +++ b/MP-TAB3/Pages/WorkShift.razor @@ -1,6 +1,5 @@ @page "/workshift" - @if (string.IsNullOrEmpty(IdxMacc) || CurrMSE == null) { diff --git a/MP-TAB3/Pages/WorkShift.razor.cs b/MP-TAB3/Pages/WorkShift.razor.cs index 640f137f..9d221fb1 100644 --- a/MP-TAB3/Pages/WorkShift.razor.cs +++ b/MP-TAB3/Pages/WorkShift.razor.cs @@ -1,6 +1,8 @@ using global::Microsoft.AspNetCore.Components; +using MP.Data; using MP.Data.DatabaseModels; using MP.Data.Services; +using Newtonsoft.Json; namespace MP_TAB3.Pages { @@ -13,14 +15,17 @@ namespace MP_TAB3.Pages IdxMacc = ""; CurrMSE = null; currTurni = new TurniMaccModel(); - //GC.Collect(); + TDFeeder.dataPipe.EA_NewMessage -= DataPipe_EA_NewMessage; } #endregion Public Methods + #region Protected Properties protected MappaStatoExpl? CurrMSE { get; set; } = null; + protected TurniMaccModel currTurni { get; set; } = new TurniMaccModel(); + protected string IdxMacc { get; set; } = ""; [Inject] @@ -68,6 +73,9 @@ namespace MP_TAB3.Pages [Inject] protected TabDataService TabServ { get; set; } = null!; + [Inject] + protected TabDataFeeder TDFeeder { get; set; } = null!; + #endregion Protected Properties #region Protected Methods @@ -80,6 +88,7 @@ namespace MP_TAB3.Pages protected override async Task OnInitializedAsync() { await ReloadData(); + TDFeeder.dataPipe.EA_NewMessage += DataPipe_EA_NewMessage; } protected async Task RefreshData(List newList) @@ -104,6 +113,35 @@ namespace MP_TAB3.Pages #region Private Methods + /// + /// Ricevuto nuovi dati da mostrare! + /// + /// + /// + /// + private void DataPipe_EA_NewMessage(object? sender, EventArgs e) + { + PubSubEventArgs currArgs = (PubSubEventArgs)e; + // conversione on-the-fly List --> allarmi + if (!string.IsNullOrEmpty(currArgs.newMessage)) + { + try + { + List? dataList = JsonConvert.DeserializeObject>(currArgs.newMessage); + if (dataList != null) + { + InvokeAsync(() => RefreshData(dataList)); + } + } + catch + { } + } + InvokeAsync(() => + { + StateHasChanged(); + }); + } + private async Task ReloadData() { if (string.IsNullOrEmpty(IdxMacc))