Files
mapo-mono/MP.MONO.UI/Components/ParamPlot.razor.cs
T
2022-03-09 18:46:30 +01:00

121 lines
3.7 KiB
C#

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<chartJsData.chartJsTSerie> LevelVal = new List<chartJsData.chartJsTSerie>();
protected DateTime lastRec = DateTime.Now.AddMinutes(-1);
protected int sampleSecMin = 1;
//protected string cssSel(string ParamName)
//{
// string answ = ParamName == SelVal ? "fa-solid fa-chevron-right" : "";
// return answ;
//}
protected string _selParam { get; set; } = "";
protected List<string> getLineColors(string alpha)
{
List<string> answ = new List<string>();
answ.Add($"rgba(54, 82, 254, {alpha})");
return answ;
}
protected List<string> getFillColors(string alpha)
{
List<string> answ = new List<string>();
answ.Add($"rgba(108, 164, 254, {alpha})");
return answ;
}
protected List<string> getPointColors(string alpha)
{
List<string> answ = new List<string>();
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<chartJsData.chartJsTSerie>();
}
}
}
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;
}
//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<List<DisplayDataDTO>>(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)
{
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();
});
}
}
}