162 lines
4.5 KiB
C#
162 lines
4.5 KiB
C#
using Microsoft.AspNetCore.Components;
|
|
using MP.Data;
|
|
using MP.Stats.Data;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
namespace MP.Stats.Components
|
|
{
|
|
public partial class ChartControlli
|
|
{
|
|
#region Protected Fields
|
|
|
|
protected const string EsitoKO = "Esito: Non Passato";
|
|
|
|
protected const string EsitoOK = "Esito: OK";
|
|
|
|
#endregion Protected Fields
|
|
|
|
#region Private Properties
|
|
|
|
private List<double> DatiPareto
|
|
{
|
|
get => ParetoData.Select(x => x.value).ToList();
|
|
}
|
|
|
|
private List<chartJsData.chartJsTSerie> DatiPlot
|
|
{
|
|
get => TSData;
|
|
}
|
|
|
|
private List<string> LabelPareto
|
|
{
|
|
get => ParetoData.Select(x => x.label).ToList();
|
|
}
|
|
|
|
private List<string> LabelPlot
|
|
{
|
|
get => TSData.Select(r => $"{r.x:yyyy-MM-dd}").ToList();
|
|
}
|
|
|
|
#endregion Private Properties
|
|
|
|
#region Protected Properties
|
|
|
|
protected SelectData _currFilter { get; set; } = new SelectData();
|
|
|
|
protected List<MP.Data.DbModels.ResControlli> _rawData { get; set; } = new List<MP.Data.DbModels.ResControlli>();
|
|
|
|
/// <summary>
|
|
/// Genera colori sfondo 33% rosso / arancione / giallo
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
protected List<string> bgColors
|
|
{
|
|
get => semaphColors(ParetoData.Count, "0.3");
|
|
}
|
|
|
|
/// <summary>
|
|
/// Genera colori sfondo 33% rosso / arancione / giallo
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
protected List<string> lineColor
|
|
{
|
|
get => solidColors("1");
|
|
}
|
|
|
|
/// <summary>
|
|
/// Genera colori linee 33% rosso / arancione / giallo
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
protected List<string> lineColors
|
|
{
|
|
get => semaphColors(ParetoData.Count, "1");
|
|
}
|
|
|
|
[Inject]
|
|
protected MessageService MessageService { get; set; }
|
|
|
|
protected List<ChartKV> ParetoData { get; set; } = new List<ChartKV>();
|
|
|
|
[Inject]
|
|
protected MpStatsService StatService { get; set; }
|
|
|
|
protected List<chartJsData.chartJsTSerie> TSData { get; set; } = new List<chartJsData.chartJsTSerie>();
|
|
|
|
#endregion Protected Properties
|
|
|
|
#region Public Properties
|
|
|
|
[Parameter]
|
|
public List<MP.Data.DbModels.ResControlli> RawData
|
|
{
|
|
get => _rawData;
|
|
set
|
|
{
|
|
// salvo valori
|
|
_rawData = value;
|
|
if (value != null)
|
|
{
|
|
// ricalcolo charting data
|
|
recalcData();
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion Public Properties
|
|
|
|
#region Private Methods
|
|
|
|
private void recalcData()
|
|
{
|
|
if (RawData != null)
|
|
{
|
|
ParetoData = RawData
|
|
.GroupBy(p => p.EsitoOk)
|
|
.Select(y => new ChartKV() { label = y.First().EsitoOk ? EsitoOK : EsitoKO, value = y.Count() })
|
|
.OrderByDescending(x => x.value)
|
|
.ToList();
|
|
|
|
TSData = RawData
|
|
.GroupBy(x => x.DataOra.Date)
|
|
.Select(r => new chartJsData.chartJsTSerie() { x = r.First().DataOra.Date, y = r.Count() })
|
|
.OrderBy(o => o.x)
|
|
.ToList();
|
|
}
|
|
}
|
|
|
|
#endregion Private Methods
|
|
|
|
#region Protected Methods
|
|
|
|
/// <summary>
|
|
/// Genera colori sfondo 33% rosso / arancione / giallo
|
|
/// </summary>
|
|
/// <param name="numRecords"></param>
|
|
/// <param name="alpha"></param>
|
|
/// <returns></returns>
|
|
protected List<string> semaphColors(int numRecords, string alpha)
|
|
{
|
|
List<string> answ = new List<string>();
|
|
|
|
// aggiungo verde/rosso
|
|
answ.Add($"rgba(54, 254, 82, {alpha})");
|
|
answ.Add($"rgba(254, 82, 65, {alpha})");
|
|
return answ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Genera colori bordo 33% rosso / arancione / giallo
|
|
/// </summary>
|
|
/// <param name="alpha"></param>
|
|
/// <returns></returns>
|
|
protected List<string> solidColors(string alpha)
|
|
{
|
|
List<string> answ = new List<string>();
|
|
answ.Add($"rgba(54, 162, 235, {alpha})");
|
|
return answ;
|
|
}
|
|
|
|
#endregion Protected Methods
|
|
}
|
|
} |