using Microsoft.AspNetCore.Components; using MP.MONO.Core.DTO; using MP.MONO.Data; using MP.MONO.UI.Data; using Newtonsoft.Json; namespace MP.MONO.UI.Components { public partial class AlarmsOverview : IDisposable { #region Public Properties [Parameter] public EventCallback messageReceived { get; set; } [Parameter] public bool compMode { get; set; } = false; #endregion Public Properties #region Public Methods public void Dispose() { MMDataService.alarmPipe.EA_NewMessage -= AlarmPipe_EA_NewMessage; } private string css() { string answ = ""; if (ListRecords != null) { if (ListRecords.Count == 0) { answ = "text-dark"; } else { answ = "pulse-warning text-warning bg-danger "; } } return answ; } private void showAalarms() { compMode = !compMode; } #endregion Public Methods #region Protected Methods protected override async Task OnInitializedAsync() { await ReloadData(); MMDataService.alarmPipe.EA_NewMessage += AlarmPipe_EA_NewMessage; } protected async Task ReloadData() { var alarmList = await MMDataService.getAlarms(); ListRecords = alarmList.Select(x => new DisplayDataDTO() { IsNumeric = false, Title = $"{DateTime.Now:yyyy-MM-dd HH:mm:ss}", Value = x, Order = ListRecords == null ? 0 : ListRecords.Count }).ToList(); } #endregion Protected Methods #region Private Properties private List? ListRecords { get; set; } = new List(); private selectGlobalToggle currFilter { get; set; } = new selectGlobalToggle(); private int numAlarm { get => currFilter.numAlarms; set { if (ListRecords != null) { currFilter.numAlarms = value; } } } #endregion Private Properties #region Private Methods private void AlarmPipe_EA_NewMessage(object? sender, EventArgs e) { PubSubEventArgs currArgs = (PubSubEventArgs)e; // conversione on-the-fly List --> allarmi if (!string.IsNullOrEmpty(currArgs.newMessage)) { try { var alarmList = JsonConvert.DeserializeObject>(currArgs.newMessage); if (alarmList != null) { ListRecords = alarmList.Select(x => new DisplayDataDTO() { IsNumeric = false, Title = $"{DateTime.Now:yyyy-MM-dd HH:mm:ss}", Value = x, Order = ListRecords == null ? 0 : ListRecords.Count }).ToList(); messageReceived.InvokeAsync(alarmList.Count); } if (ListRecords.Count != 0 || ListRecords == null) { compMode = false; trigger.show = false; } else { compMode = true; trigger.show = true; } } catch { } } InvokeAsync(() => { StateHasChanged(); }); numAlarm = ListRecords.Count; } toolsTrigger trigger = new toolsTrigger(); #endregion Private Methods } }