using global::Microsoft.AspNetCore.Components; using MP.Data; using MP.Data.DatabaseModels; using MP.Data.Services; using Newtonsoft.Json; namespace MP_TAB3.Pages { public partial class Notes : IDisposable { #region Public Methods public void Dispose() { IdxMacc = ""; CurrMSE = null; TDFeeder.dataPipe.EA_NewMessage -= DataPipe_EA_NewMessage; } #endregion Public Methods #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 protected override async Task OnInitializedAsync() { await ReloadData(); TDFeeder.dataPipe.EA_NewMessage += DataPipe_EA_NewMessage; } protected async Task RefreshData(List newList) { var ListMSE = newList; if (!string.IsNullOrEmpty(IdxMacc)) { var rawData = ListMSE.Find(x => x.IdxMacchina == IdxMacc); if (rawData != null) { CurrMSE = rawData; } else { await ReloadData(); } } await InvokeAsync(StateHasChanged); } #endregion Protected Methods #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)) { IdxMacc = await MsgServ.IdxMaccGet(); // recupero MSE macchina.... if (!string.IsNullOrEmpty(IdxMacc)) { CurrMSE = await MsgServ.GetMachineMse(IdxMacc); } } } #endregion Private Methods } }