using Microsoft.AspNetCore.Components; using MP.MONO.Core.DTO; using MP.MONO.Data; using Newtonsoft.Json; namespace MP.MONO.UI.Components { public partial class ParamPlot { protected List LevelVal = new List(); protected DateTime lastRec = DateTime.Now.AddMinutes(-1); protected int sampleSecMin = 1; private List? ListRecords { get; set; } = null; //protected string cssSel(string ParamName) //{ // string answ = ParamName == SelVal ? "fa-solid fa-chevron-right" : ""; // return answ; //} protected string _selParam { get; set; } = ""; protected List getLineColors(string alpha) { List answ = new List(); answ.Add($"rgba(54, 82, 254, {alpha})"); return answ; } protected List getFillColors(string alpha) { List answ = new List(); answ.Add($"rgba(108, 164, 254, {alpha})"); return answ; } protected List getPointColors(string alpha) { List answ = new List(); answ.Add($"rgba(108, 118, 158, {alpha})"); return answ; } [Parameter] public string SelectedParam { get { return _selParam; } set { // controllo se è variato if (_selParam != value) { // salvo _selParam = value; // resetto TimeSerie LevelVal = new List(); } } } protected override async Task OnInitializedAsync() { //await ReloadData(); await Task.Delay(1); MMDataService.parametersPipe.EA_NewMessage += ParametersPipe_EA_NewMessage; } private int maxRecord = 10; private bool showParam = false; private void toggleParam() { showParam = !showParam; } protected string? MinVal { get; set; } = null; protected string? MaxVal { get; set; } = null; //private int inputValue = 123; private void ParametersPipe_EA_NewMessage(object? sender, EventArgs e) { DateTime adesso = DateTime.Now; if (lastRec.AddSeconds(sampleSecMin) < adesso) { PubSubEventArgs currArgs = (PubSubEventArgs)e; if (!string.IsNullOrEmpty(currArgs.newMessage)) { try { var ListRecords = JsonConvert.DeserializeObject>(currArgs.newMessage); // prendo SOLO il dato della TS richiesta if (ListRecords != null) { var newData = ListRecords.Where(x => x.Title == SelectedParam).FirstOrDefault(); // lo accodo if (newData != null) { if (string.IsNullOrEmpty(MinVal) || string.IsNullOrEmpty(MaxVal)) { MinVal = $"{newData.MinVal:N0}"; MaxVal = $"{newData.MaxVal:N0}"; } LevelVal.Add(new chartJsData.chartJsTSerie() { x = adesso, y = newData.ValueNum }); if (LevelVal.Count > maxRecord) { LevelVal.RemoveRange(0, LevelVal.Count - maxRecord); } } } } catch { } } lastRec = adesso; } InvokeAsync(() => { StateHasChanged(); }); } } }