using Microsoft.AspNetCore.Components; using MP.MONO.Core.DTO; using MP.MONO.Data; using Newtonsoft.Json; namespace MP.MONO.UI.Components { public partial class MachStatsOverview : IDisposable { [Parameter] public bool ShowAll { get; set; } = false; #region Public Methods public void Dispose() { MMDataService.alarmPipe.EA_NewMessage -= MachStatsPipe_EA_NewMessage; } #endregion Public Methods #region Protected Methods protected string cssBar(string cssClass) { return cssClass; } protected override async Task OnInitializedAsync() { await ReloadData(); MMDataService.machStatsPipe.EA_NewMessage += MachStatsPipe_EA_NewMessage; } protected string percProgress(double num, double minVal, double maxVal) { string answ = "width: 0%;"; double den = (maxVal - minVal) != 0 ? (maxVal - minVal) : 1; double ratio = ((double)num) / den; answ = $"width: {ratio:P0};"; return answ; } protected async Task ReloadData() { var rawData = await MMDataService.getStats(); ListRecords = rawData.Where(x => x.HLShow || ShowAll).ToList(); } #endregion Protected Methods #region Private Properties private List? ListRecords { get; set; } = null; #endregion Private Properties #region Private Methods private void MachStatsPipe_EA_NewMessage(object? sender, EventArgs e) { PubSubEventArgs currArgs = (PubSubEventArgs)e; if (!string.IsNullOrEmpty(currArgs.newMessage)) { try { var rawData = JsonConvert.DeserializeObject>(currArgs.newMessage); if (rawData != null) { ListRecords = rawData.Where(x => x.HLShow || ShowAll).ToList(); } } catch { } } InvokeAsync(() => { StateHasChanged(); }); } #endregion Private Methods } }