From ffdfcdf9a9cfbad0fae0f2871a1bdb78cdd558ae Mon Sep 17 00:00:00 2001 From: "marco.salvi" Date: Tue, 8 Mar 2022 18:55:09 +0100 Subject: [PATCH] Inserita parte preliminare per fare grafici parametri --- MP.MONO.Data/chartJsData.cs | 35 +++++ MP.MONO.UI.sln | 2 +- MP.MONO.UI/Components/Chart/Line.razor | 142 +++++++++++++++++++ MP.MONO.UI/Components/ParamOverview.razor | 31 +++- MP.MONO.UI/Components/ParamOverview.razor.cs | 20 ++- 5 files changed, 225 insertions(+), 5 deletions(-) create mode 100644 MP.MONO.Data/chartJsData.cs create mode 100644 MP.MONO.UI/Components/Chart/Line.razor diff --git a/MP.MONO.Data/chartJsData.cs b/MP.MONO.Data/chartJsData.cs new file mode 100644 index 0000000..dc3821f --- /dev/null +++ b/MP.MONO.Data/chartJsData.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MP.MONO.Data +{ + public class chartJsData + { + #region Public Classes + + public class chartJsTSerie + { + #region Public Properties + + public DateTime x { get; set; } + public double y { get; set; } + + #endregion Public Properties + } + + public class chartJsXY + { + #region Public Properties + + public double x { get; set; } + public double y { get; set; } + + #endregion Public Properties + } + + #endregion Public Classes + } +} diff --git a/MP.MONO.UI.sln b/MP.MONO.UI.sln index f49cdfe..a44445e 100644 --- a/MP.MONO.UI.sln +++ b/MP.MONO.UI.sln @@ -9,7 +9,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MP.MONO.Data", "MP.MONO.Dat EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MP.MONO.Core", "MP.MONO.Core\MP.MONO.Core.csproj", "{7DE649D8-511E-4674-A170-7E7AFDE4FD89}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MachineSim", "MachineSim\MachineSim.csproj", "{4C719185-F1C9-4066-8464-183166475CB5}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MachineSim", "MachineSim\MachineSim.csproj", "{4C719185-F1C9-4066-8464-183166475CB5}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/MP.MONO.UI/Components/Chart/Line.razor b/MP.MONO.UI/Components/Chart/Line.razor new file mode 100644 index 0000000..792d8b4 --- /dev/null +++ b/MP.MONO.UI/Components/Chart/Line.razor @@ -0,0 +1,142 @@ +@using MP.MONO.Data +@inject IJSRuntime JSRuntime + + + +@code { + + private List _DataTS { get; set; } = null!; + + [Parameter] + public string Id { get; set; } = "MyTs"; + + [Parameter] + public string Title { get; set; } = "Demo Line"; + + [Parameter] + public List DataTS + { + get + { + return _DataTS; + } + set + { + _DataTS = value; + //var pUpd = Task.Run(async () => await renderChart()); + //pUpd.Wait(); + } + } + + [Parameter] + public List Labels { get; set; } = new List(); + + [Parameter] + public List pointColor { get; set; } = new List(); + + [Parameter] + public List lineColor { get; set; } = new List(); + + [Parameter] + public List backColor { get; set; } = new List(); + + [Parameter] + public double AspRatio { get; set; } = 0; + + + [Parameter] + public string MinValue { get; set; } = "0"; + + [Parameter] + public string MaxValue { get; set; } = "0"; + + [Parameter] + public int lTens { get; set; } = 0; + + /// + /// Inizializzazione rendering componente + /// + /// partendo da qui: + /// https://www.williamleme.com/posts/2020/003-chartjs-blazor/ + /// https://www.puresourcecode.com/dotnet/blazor/using-chart-js-with-blazor/ + /// https://www.tutorialsteacher.com/csharp/csharp-anonymous-type + /// + /// + /// + protected override async Task OnAfterRenderAsync(bool firstRender) + { + await renderChart(); + } + + /// + /// Inizializzazione rendering componente + /// + /// partendo da qui: + /// https://www.williamleme.com/posts/2020/003-chartjs-blazor/ + /// https://www.puresourcecode.com/dotnet/blazor/using-chart-js-with-blazor/ + /// https://www.tutorialsteacher.com/csharp/csharp-anonymous-type + /// + /// + /// + protected async Task renderChart() + { + // creazione di un oggetto anonymous type con tutte le opzioni da passare a chart.js + var config = new + { + type = "line", + options = new + { + responsive = true, + scales = new + { + yAxes = new + { + display = true, + position = "right", + ticks = new + { + maxTicksLimit = 10 + }, + suggestedMin = MinValue != MaxValue ? MinValue : "auto", + suggestedMax = MinValue != MaxValue ? MaxValue : "auto" + }, + xAxes = new + { + type = "time", + distribution = "linear", + } + }, + plugins = new + { + legend = new + { + display = false + }, + }, + Animation = false, + AspectRatio = AspRatio == 0 ? "auto" : $"{AspRatio}" + }, + data = new + { + labels = Labels, + datasets = new[] + { + new + { + data = DataTS, + pointBorderColor = backColor, + borderColor = lineColor, + backgroundColor = backColor, + fill = true, + PointRadius = 2, + BorderWidth = 1, + lineTension= lTens, + stepped= false, + label= Title + } + } + } + }; + await JSRuntime.InvokeVoidAsync("setup", Id, config); + } +} \ No newline at end of file diff --git a/MP.MONO.UI/Components/ParamOverview.razor b/MP.MONO.UI/Components/ParamOverview.razor index 0523b60..7d4072c 100644 --- a/MP.MONO.UI/Components/ParamOverview.razor +++ b/MP.MONO.UI/Components/ParamOverview.razor @@ -9,8 +9,8 @@
    @foreach (var item in ListRecords) { -
  • -
    +
  • +
    @if (!string.IsNullOrEmpty(item.CssIcon)) {
    @@ -35,8 +35,35 @@
  • + @* @if (item.Title != null) { +
    + @if (ListRecords == null || ListRecords.Count == 0) + { + + } + else + { + @* + + } +
    + }*@ }
+ @* @if (string.IsNullOrEmpty(EC_SelValue) + { +
+ @if (ListRecords == null || ListRecords.Count == 0) + { + + } + else + { + + } +
+ }*@ + } else diff --git a/MP.MONO.UI/Components/ParamOverview.razor.cs b/MP.MONO.UI/Components/ParamOverview.razor.cs index 1f71435..c9ce04a 100644 --- a/MP.MONO.UI/Components/ParamOverview.razor.cs +++ b/MP.MONO.UI/Components/ParamOverview.razor.cs @@ -1,9 +1,11 @@ +using Microsoft.AspNetCore.Components; using MP.MONO.Core.DTO; using MP.MONO.Data; using Newtonsoft.Json; namespace MP.MONO.UI.Components { + public partial class ParamOverview { #region Private Properties @@ -14,6 +16,14 @@ namespace MP.MONO.UI.Components #region Private Methods + + + [Parameter] + public EventCallback EC_SelValue { get; set; } + + protected List LevelVal = new List(); + + private void ParametersPipe_EA_NewMessage(object? sender, EventArgs e) { PubSubEventArgs currArgs = (PubSubEventArgs)e; @@ -56,6 +66,12 @@ namespace MP.MONO.UI.Components return answ; } - #endregion Protected Methods + protected void raiseSelect(string SelectedValue) + { + + EC_SelValue.InvokeAsync(SelectedValue); + } + } -} \ No newline at end of file + #endregion Protected Methods +}