From 7c8040b4411df1ed7a809e64ae77b591cb09fc3a Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Sat, 22 May 2021 12:42:30 +0200 Subject: [PATCH 01/16] Abbozzato recupero dati scarti --- MP.Stats/Components/ChartScarti.razor | 35 +++++++++++++++++++++++++++ MP.Stats/Data/ChartKV.cs | 17 +++++++++++++ MP.Stats/Data/MpStatsService.cs | 31 +++++++++++++++++++++++- MP.Stats/Pages/Scarti.razor | 1 + 4 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 MP.Stats/Components/ChartScarti.razor create mode 100644 MP.Stats/Data/ChartKV.cs diff --git a/MP.Stats/Components/ChartScarti.razor b/MP.Stats/Components/ChartScarti.razor new file mode 100644 index 00000000..cfa6718c --- /dev/null +++ b/MP.Stats/Components/ChartScarti.razor @@ -0,0 +1,35 @@ +@using MP.Stats.Data + +@inject MessageService MessageService +@inject MpStatsService StatService + +
+
+
    + + @foreach (var item in CurrData) + { +
  • @item.label: @item.value
  • + } +
+
+
+
+ +@code { + + [Parameter] + public SelectData currFilter { get; set; } + + protected List CurrData = new List(); + + protected override async Task OnInitializedAsync() + { + await reloadData(); + } + + private async Task reloadData() + { + CurrData = await StatService.StatScartiGetPareto(currFilter, MessageService.SearchVal); + } +} \ No newline at end of file diff --git a/MP.Stats/Data/ChartKV.cs b/MP.Stats/Data/ChartKV.cs new file mode 100644 index 00000000..6fcca452 --- /dev/null +++ b/MP.Stats/Data/ChartKV.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace MP.Stats.Data +{ + public class ChartKV + { + #region Public Properties + + public string label { get; set; } = ""; + public double value { get; set; } = 0; + + #endregion Public Properties + } +} \ No newline at end of file diff --git a/MP.Stats/Data/MpStatsService.cs b/MP.Stats/Data/MpStatsService.cs index 9b17ab77..decb5923 100644 --- a/MP.Stats/Data/MpStatsService.cs +++ b/MP.Stats/Data/MpStatsService.cs @@ -242,7 +242,7 @@ namespace MP.Stats.Data { //return Task.FromResult(dbController.StatScartiGetAll(DataStart, DataEnd, IdxMacchina, IdxODL, KeyRichiesta, CodArticolo).ToArray()); List dbResult = new List(); - string cacheKey = getCacheKey("MP:STATS:SCARTI", CurrFilter); + string cacheKey = getCacheKey("MP:STATS:SCARTI:RAW", CurrFilter); string rawData; var redisDataList = await distributedCache.GetAsync(cacheKey); if (redisDataList != null) @@ -260,6 +260,35 @@ namespace MP.Stats.Data return await Task.FromResult(dbResult); } + public async Task> StatScartiGetPareto(SelectData CurrFilter, string searchVal = "") + { + List statResult = new List(); + string cacheKey = getCacheKey("MP:STATS:SCARTI:PARETO", CurrFilter); + string rawData; + var redisDataList = await distributedCache.GetAsync(cacheKey); + if (redisDataList != null) + { + rawData = Encoding.UTF8.GetString(redisDataList); + statResult = JsonConvert.DeserializeObject>(rawData); + } + else + { + // recupero dal DB (eventualmente con cache) + var dbResult = StatScartiGetAll(CurrFilter, searchVal); + // faccio conteggio... + statResult = dbResult + .Result + .GroupBy(x => x.Causale) + .Select(y => new ChartKV() { label = y.First().Causale, value = y.Sum(c => c.Qta) }) + .ToList(); + + rawData = JsonConvert.SerializeObject(statResult); + redisDataList = Encoding.UTF8.GetBytes(rawData); + await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt); + } + return await Task.FromResult(statResult); + } + public async Task> StatTurniOeeGetAllAsync(DateTime DataStart, DateTime DataEnd, string IdxMacchina, int IdxODL, string KeyRichiesta, string CodArticolo, string searchVal = "") { return await Task.FromResult(dbController.StatTurniOeeGetAll(DataStart, DataEnd, IdxMacchina, IdxODL, KeyRichiesta, CodArticolo)); diff --git a/MP.Stats/Pages/Scarti.razor b/MP.Stats/Pages/Scarti.razor index 6e1d4d55..9e35ebee 100644 --- a/MP.Stats/Pages/Scarti.razor +++ b/MP.Stats/Pages/Scarti.razor @@ -7,6 +7,7 @@
+ @**@ @if (ListRecords == null) { From 8a190f3da9e8ae3cc855788e526f00ec6ce0adf2 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Sat, 22 May 2021 14:33:33 +0200 Subject: [PATCH 02/16] corretto recupero dati x scarti (pareto) --- MP.Stats/Components/ChartScarti.razor | 4 ++-- MP.Stats/Data/MpStatsService.cs | 6 +++--- MP.Stats/Pages/Scarti.razor | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/MP.Stats/Components/ChartScarti.razor b/MP.Stats/Components/ChartScarti.razor index cfa6718c..c080c4bf 100644 --- a/MP.Stats/Components/ChartScarti.razor +++ b/MP.Stats/Components/ChartScarti.razor @@ -7,7 +7,7 @@
    - @foreach (var item in CurrData) + @foreach (var item in @CurrData) {
  • @item.label: @item.value
  • } @@ -21,7 +21,7 @@ [Parameter] public SelectData currFilter { get; set; } - protected List CurrData = new List(); + protected List CurrData { get; set; } = new List(); protected override async Task OnInitializedAsync() { diff --git a/MP.Stats/Data/MpStatsService.cs b/MP.Stats/Data/MpStatsService.cs index decb5923..55c0d61d 100644 --- a/MP.Stats/Data/MpStatsService.cs +++ b/MP.Stats/Data/MpStatsService.cs @@ -274,12 +274,12 @@ namespace MP.Stats.Data else { // recupero dal DB (eventualmente con cache) - var dbResult = StatScartiGetAll(CurrFilter, searchVal); + var dbResult = await StatScartiGetAll(CurrFilter, searchVal); // faccio conteggio... statResult = dbResult - .Result .GroupBy(x => x.Causale) - .Select(y => new ChartKV() { label = y.First().Causale, value = y.Sum(c => c.Qta) }) + .Select(y => new ChartKV() { label = y.First().Descrizione, value = y.Sum(c => c.Qta) }) + .OrderByDescending(x => x.value) .ToList(); rawData = JsonConvert.SerializeObject(statResult); diff --git a/MP.Stats/Pages/Scarti.razor b/MP.Stats/Pages/Scarti.razor index 9e35ebee..7f392517 100644 --- a/MP.Stats/Pages/Scarti.razor +++ b/MP.Stats/Pages/Scarti.razor @@ -7,7 +7,7 @@
- @**@ + @if (ListRecords == null) { From 42d93a146663a549608a7be7441b8de63d7c66b3 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Sat, 22 May 2021 15:26:51 +0200 Subject: [PATCH 03/16] inizio gestione refresh chart on refilter --- MP.Stats/Components/ChartScarti.razor | 152 ++++++++++++++++++++++++-- MP.Stats/Data/MpStatsService.cs | 7 +- 2 files changed, 147 insertions(+), 12 deletions(-) diff --git a/MP.Stats/Components/ChartScarti.razor b/MP.Stats/Components/ChartScarti.razor index c080c4bf..ae0651ad 100644 --- a/MP.Stats/Components/ChartScarti.razor +++ b/MP.Stats/Components/ChartScarti.razor @@ -5,24 +5,158 @@
-
    - - @foreach (var item in @CurrData) - { -
  • @item.label: @item.value
  • - } -
+
+
+
    + @foreach (var item in @CurrData) + { +
  • + @item.label + @item.value +
  • + } +
+
+
+ +
+
+
+
-
@code { + protected SelectData _currFilter { get; set; } + [Parameter] - public SelectData currFilter { get; set; } + public SelectData currFilter + { + get => _currFilter; + set + { + _currFilter = value; + Task.Run(() => await reloadData()); + Task.Run(() => await HandleRedraw()); + } + } + + BarChart ParetoGuasti; + + object barChartOptions = new + { + //Title = new + //{ + // Display = true, + // Text = "Causali Scarto" + //}, + Scales = new + { + XAxes = new object[] + { + new { + Display = false + } + }, + YAxes = new object[] + { + new { + Display = true, + ticks= new { + suggestedMin = 0 + } + } + } + }, + Tooltips = new + { + Mode = "nearest", + Intersect = false + }, + Hover = new + { + Mode = "nearest", + Intersect = false + }, + //Legend = new + //{ + // Display = true, + // FullWidth = true + //}, + AspectRatio = 2.5 + }; + +#if false +object horizontalLineChartOptions = new +{ +//Title = new +//{ +// Display = true, +// Text = "Line chart sample" +//}, +//Scales = new +//{ +// XAxes = new object[] +// { +// new { +// //ScaleLabel = new { +// //Display = true, LabelString = "value" }, +// Stacked = true +// } +// } +//}, +Tooltips = new +{ +Mode = "nearest", +Intersect = false +}, +Hover = new +{ +Mode = "nearest", +Intersect = false +}, +Legend = new +{ +Display = true, +FullWidth = true +}, +AspectRatio = 2.5 +}; +#endif + protected List CurrData { get; set; } = new List(); + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await HandleRedraw(); + } + } + async Task HandleRedraw() + { + await ParetoGuasti.Clear(); + await ParetoGuasti.AddLabelsDatasetsAndUpdate(CurrData.Select(x => x.label).ToList(), GetBarChartDataset()); + } + + BarChartDataset GetBarChartDataset() + { + return new BarChartDataset + { + Label = "Causali Scarto", + Data = CurrData.Select(x => x.value).ToList(), + BackgroundColor = backgroundColors, + //BorderColor = borderColors, + HoverBorderWidth = 5 + }; + } + + + List backgroundColors = new List { ChartColor.FromRgba(255, 99, 132, 0.2f), ChartColor.FromRgba(54, 162, 235, 0.2f), ChartColor.FromRgba(255, 206, 86, 0.2f), ChartColor.FromRgba(75, 192, 192, 0.2f), ChartColor.FromRgba(153, 102, 255, 0.2f), ChartColor.FromRgba(255, 159, 64, 0.2f) }; + List borderColors = new List { ChartColor.FromRgba(255, 99, 132, 1f), ChartColor.FromRgba(54, 162, 235, 1f), ChartColor.FromRgba(255, 206, 86, 1f), ChartColor.FromRgba(75, 192, 192, 1f), ChartColor.FromRgba(153, 102, 255, 1f), ChartColor.FromRgba(255, 159, 64, 1f) }; + protected override async Task OnInitializedAsync() { await reloadData(); diff --git a/MP.Stats/Data/MpStatsService.cs b/MP.Stats/Data/MpStatsService.cs index 55c0d61d..b82acd46 100644 --- a/MP.Stats/Data/MpStatsService.cs +++ b/MP.Stats/Data/MpStatsService.cs @@ -135,12 +135,13 @@ namespace MP.Stats.Data return Task.FromResult(answ); } - public Task> ArticoliList(string searchVal) + public async Task> ArticoliList(string searchVal) { List answ = new List(); answ.Add(new AutocompleteModel { LabelField = "--- TUTTE ---", ValueField = "*" }); - answ.AddRange(dbController.MacchineGetAll().Select(x => new AutocompleteModel { LabelField = x.IdxMacchina, ValueField = x.IdxMacchina }).ToList()); - return Task.FromResult(answ); + var listMacchine = dbController.MacchineGetAll(); + answ.AddRange(listMacchine.Select(x => new AutocompleteModel { LabelField = x.IdxMacchina, ValueField = x.IdxMacchina }).ToList()); + return await Task.FromResult(answ); } public Task> CommesseGetSearch(int numRecord, string searchVal = "") From 2e9a774a479b8851c8f9f1132bf765b545cac8d2 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Sat, 22 May 2021 16:21:40 +0200 Subject: [PATCH 04/16] Divisione codice/layout x chart scarti --- MP.Stats/Components/ChartScarti.razor | 145 ----------------------- MP.Stats/Components/ChartScarti.razor.cs | 135 +++++++++++++++++++++ MP.Stats/Pages/Scarti.razor | 2 +- 3 files changed, 136 insertions(+), 146 deletions(-) create mode 100644 MP.Stats/Components/ChartScarti.razor.cs diff --git a/MP.Stats/Components/ChartScarti.razor b/MP.Stats/Components/ChartScarti.razor index ae0651ad..f4cde99d 100644 --- a/MP.Stats/Components/ChartScarti.razor +++ b/MP.Stats/Components/ChartScarti.razor @@ -1,8 +1,5 @@ @using MP.Stats.Data -@inject MessageService MessageService -@inject MpStatsService StatService -
@@ -25,145 +22,3 @@
- -@code { - - protected SelectData _currFilter { get; set; } - - [Parameter] - public SelectData currFilter - { - get => _currFilter; - set - { - _currFilter = value; - Task.Run(() => await reloadData()); - Task.Run(() => await HandleRedraw()); - } - } - - BarChart ParetoGuasti; - - object barChartOptions = new - { - //Title = new - //{ - // Display = true, - // Text = "Causali Scarto" - //}, - Scales = new - { - XAxes = new object[] - { - new { - Display = false - } - }, - YAxes = new object[] - { - new { - Display = true, - ticks= new { - suggestedMin = 0 - } - } - } - }, - Tooltips = new - { - Mode = "nearest", - Intersect = false - }, - Hover = new - { - Mode = "nearest", - Intersect = false - }, - //Legend = new - //{ - // Display = true, - // FullWidth = true - //}, - AspectRatio = 2.5 - }; - -#if false -object horizontalLineChartOptions = new -{ -//Title = new -//{ -// Display = true, -// Text = "Line chart sample" -//}, -//Scales = new -//{ -// XAxes = new object[] -// { -// new { -// //ScaleLabel = new { -// //Display = true, LabelString = "value" }, -// Stacked = true -// } -// } -//}, -Tooltips = new -{ -Mode = "nearest", -Intersect = false -}, -Hover = new -{ -Mode = "nearest", -Intersect = false -}, -Legend = new -{ -Display = true, -FullWidth = true -}, -AspectRatio = 2.5 -}; -#endif - - - protected List CurrData { get; set; } = new List(); - - protected override async Task OnAfterRenderAsync(bool firstRender) - { - if (firstRender) - { - await HandleRedraw(); - } - } - async Task HandleRedraw() - { - await ParetoGuasti.Clear(); - await ParetoGuasti.AddLabelsDatasetsAndUpdate(CurrData.Select(x => x.label).ToList(), GetBarChartDataset()); - } - - BarChartDataset GetBarChartDataset() - { - return new BarChartDataset - { - Label = "Causali Scarto", - Data = CurrData.Select(x => x.value).ToList(), - BackgroundColor = backgroundColors, - //BorderColor = borderColors, - HoverBorderWidth = 5 - }; - } - - - List backgroundColors = new List { ChartColor.FromRgba(255, 99, 132, 0.2f), ChartColor.FromRgba(54, 162, 235, 0.2f), ChartColor.FromRgba(255, 206, 86, 0.2f), ChartColor.FromRgba(75, 192, 192, 0.2f), ChartColor.FromRgba(153, 102, 255, 0.2f), ChartColor.FromRgba(255, 159, 64, 0.2f) }; - List borderColors = new List { ChartColor.FromRgba(255, 99, 132, 1f), ChartColor.FromRgba(54, 162, 235, 1f), ChartColor.FromRgba(255, 206, 86, 1f), ChartColor.FromRgba(75, 192, 192, 1f), ChartColor.FromRgba(153, 102, 255, 1f), ChartColor.FromRgba(255, 159, 64, 1f) }; - - protected override async Task OnInitializedAsync() - { - await reloadData(); - } - - private async Task reloadData() - { - CurrData = await StatService.StatScartiGetPareto(currFilter, MessageService.SearchVal); - } -} \ No newline at end of file diff --git a/MP.Stats/Components/ChartScarti.razor.cs b/MP.Stats/Components/ChartScarti.razor.cs new file mode 100644 index 00000000..1665130d --- /dev/null +++ b/MP.Stats/Components/ChartScarti.razor.cs @@ -0,0 +1,135 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Blazorise.Charts; +using Microsoft.AspNetCore.Components; +using MP.Stats.Data; + +namespace MP.Stats.Components +{ + public partial class ChartScarti + { + [Inject] + protected MessageService MessageService { get; set; } + [Inject] + protected MpStatsService StatService { get; set; } + + protected SelectData _currFilter { get; set; } = new SelectData(); + + + + [Parameter] + public SelectData DataFilter + { + get => _currFilter; + set + { + _currFilter = value; + var dataReload = Task.Run(async () => + { + await reloadData(); + await HandleRedraw(); + }); + } + } + + protected BarChart ParetoGuasti; + + object barChartOptions = new + { + //Title = new + //{ + // Display = true, + // Text = "Causali Scarto" + //}, + Scales = new + { + XAxes = new object[] + { + new { + Display = false + } + }, + YAxes = new object[] + { + new { + Display = true, + ticks= new { + suggestedMin = 0 + } + } + } + }, + Tooltips = new + { + Mode = "nearest", + Intersect = false + }, + Hover = new + { + Mode = "nearest", + Intersect = false + }, + //Legend = new + //{ + // Display = true, + // FullWidth = true + //}, + Animation = false, + AspectRatio = 2.5 + }; + + + protected List CurrData { get; set; } = new List(); + + //protected override async Task OnAfterRenderAsync(bool firstRender) + //{ + // if (firstRender) + // { + // await HandleRedraw(); + // } + //} + protected async Task HandleRedraw() + { + await ParetoGuasti.Clear(); + await ParetoGuasti.AddLabelsDatasetsAndUpdate(GetBarChartLabels(), GetBarChartDataset()); + } + + List GetBarChartLabels() + { + var answ = CurrData.Select(x => x.label).ToList(); + return answ; + } + + BarChartDataset GetBarChartDataset() + { + var answ = new BarChartDataset + { + Label = "Causali Scarto", + Data = CurrData.Select(x => x.value).ToList(), + BackgroundColor = backgroundColors, + //BorderColor = borderColors, + HoverBorderWidth = 5 + }; + return answ; + } + + + List backgroundColors = new List + { ChartColor.FromRgba(255, 99, 132, 0.2f), ChartColor.FromRgba(54, 162, 235, 0.2f), ChartColor.FromRgba(255, 206, 86, 0.2f), ChartColor.FromRgba(75, 192, 192, 0.2f), ChartColor.FromRgba(153, 102, 255, 0.2f), ChartColor.FromRgba(255, 159, 64, 0.2f) }; + List borderColors = new List + { ChartColor.FromRgba(255, 99, 132, 1f), ChartColor.FromRgba(54, 162, 235, 1f), ChartColor.FromRgba(255, 206, 86, 1f), ChartColor.FromRgba(75, 192, 192, 1f), ChartColor.FromRgba(153, 102, 255, 1f), ChartColor.FromRgba(255, 159, 64, 1f) }; + + protected override async Task OnInitializedAsync() + { + await reloadData(); + } + + private async Task reloadData() + { + CurrData = await StatService.StatScartiGetPareto(DataFilter, MessageService.SearchVal); + } + + } +} diff --git a/MP.Stats/Pages/Scarti.razor b/MP.Stats/Pages/Scarti.razor index 7f392517..4d1e1f5e 100644 --- a/MP.Stats/Pages/Scarti.razor +++ b/MP.Stats/Pages/Scarti.razor @@ -7,7 +7,7 @@
- + @if (ListRecords == null) { From 39d1eddb20a6d0aaf8d06c4a86d75a4aeedeea1e Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Sat, 22 May 2021 16:34:22 +0200 Subject: [PATCH 05/16] calcolo al volo dati x charting --- MP.Stats/Components/ChartScarti.razor.cs | 29 +++++++++++++----------- MP.Stats/Data/MpStatsService.cs | 29 ------------------------ MP.Stats/Pages/Scarti.razor | 2 +- 3 files changed, 17 insertions(+), 43 deletions(-) diff --git a/MP.Stats/Components/ChartScarti.razor.cs b/MP.Stats/Components/ChartScarti.razor.cs index 1665130d..be8489dd 100644 --- a/MP.Stats/Components/ChartScarti.razor.cs +++ b/MP.Stats/Components/ChartScarti.razor.cs @@ -17,18 +17,20 @@ namespace MP.Stats.Components protected SelectData _currFilter { get; set; } = new SelectData(); - + protected List _listScarti { get; set; } = new List(); [Parameter] - public SelectData DataFilter + public List ListScarti { - get => _currFilter; + get => _listScarti; set { - _currFilter = value; + // salvo valori + _listScarti = value; + // ricalcolo charting data + recalcData(); var dataReload = Task.Run(async () => { - await reloadData(); await HandleRedraw(); }); } @@ -121,15 +123,16 @@ namespace MP.Stats.Components List borderColors = new List { ChartColor.FromRgba(255, 99, 132, 1f), ChartColor.FromRgba(54, 162, 235, 1f), ChartColor.FromRgba(255, 206, 86, 1f), ChartColor.FromRgba(75, 192, 192, 1f), ChartColor.FromRgba(153, 102, 255, 1f), ChartColor.FromRgba(255, 159, 64, 1f) }; - protected override async Task OnInitializedAsync() + private void recalcData() { - await reloadData(); + if (ListScarti != null) + { + CurrData = ListScarti + .GroupBy(x => x.Causale) + .Select(y => new ChartKV() { label = y.First().Descrizione, value = y.Sum(c => c.Qta) }) + .OrderByDescending(x => x.value) + .ToList(); + } } - - private async Task reloadData() - { - CurrData = await StatService.StatScartiGetPareto(DataFilter, MessageService.SearchVal); - } - } } diff --git a/MP.Stats/Data/MpStatsService.cs b/MP.Stats/Data/MpStatsService.cs index b82acd46..986300d0 100644 --- a/MP.Stats/Data/MpStatsService.cs +++ b/MP.Stats/Data/MpStatsService.cs @@ -261,35 +261,6 @@ namespace MP.Stats.Data return await Task.FromResult(dbResult); } - public async Task> StatScartiGetPareto(SelectData CurrFilter, string searchVal = "") - { - List statResult = new List(); - string cacheKey = getCacheKey("MP:STATS:SCARTI:PARETO", CurrFilter); - string rawData; - var redisDataList = await distributedCache.GetAsync(cacheKey); - if (redisDataList != null) - { - rawData = Encoding.UTF8.GetString(redisDataList); - statResult = JsonConvert.DeserializeObject>(rawData); - } - else - { - // recupero dal DB (eventualmente con cache) - var dbResult = await StatScartiGetAll(CurrFilter, searchVal); - // faccio conteggio... - statResult = dbResult - .GroupBy(x => x.Causale) - .Select(y => new ChartKV() { label = y.First().Descrizione, value = y.Sum(c => c.Qta) }) - .OrderByDescending(x => x.value) - .ToList(); - - rawData = JsonConvert.SerializeObject(statResult); - redisDataList = Encoding.UTF8.GetBytes(rawData); - await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt); - } - return await Task.FromResult(statResult); - } - public async Task> StatTurniOeeGetAllAsync(DateTime DataStart, DateTime DataEnd, string IdxMacchina, int IdxODL, string KeyRichiesta, string CodArticolo, string searchVal = "") { return await Task.FromResult(dbController.StatTurniOeeGetAll(DataStart, DataEnd, IdxMacchina, IdxODL, KeyRichiesta, CodArticolo)); diff --git a/MP.Stats/Pages/Scarti.razor b/MP.Stats/Pages/Scarti.razor index 4d1e1f5e..a4973bd9 100644 --- a/MP.Stats/Pages/Scarti.razor +++ b/MP.Stats/Pages/Scarti.razor @@ -7,7 +7,7 @@
- + @if (ListRecords == null) { From 04c6d0a317561daa1a836c35cbabbf16f18874a1 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Sat, 22 May 2021 16:56:27 +0200 Subject: [PATCH 06/16] ok ciclo colori --- MP.Stats/Components/ChartScarti.razor.cs | 39 +++++++++++++++++++----- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/MP.Stats/Components/ChartScarti.razor.cs b/MP.Stats/Components/ChartScarti.razor.cs index be8489dd..f81dea5b 100644 --- a/MP.Stats/Components/ChartScarti.razor.cs +++ b/MP.Stats/Components/ChartScarti.razor.cs @@ -94,8 +94,11 @@ namespace MP.Stats.Components //} protected async Task HandleRedraw() { - await ParetoGuasti.Clear(); - await ParetoGuasti.AddLabelsDatasetsAndUpdate(GetBarChartLabels(), GetBarChartDataset()); + if (ParetoGuasti != null) + { + await ParetoGuasti.Clear(); + await ParetoGuasti.AddLabelsDatasetsAndUpdate(GetBarChartLabels(), GetBarChartDataset()); + } } List GetBarChartLabels() @@ -108,20 +111,40 @@ namespace MP.Stats.Components { var answ = new BarChartDataset { - Label = "Causali Scarto", + Label = "Pareto Causali Scarto", Data = CurrData.Select(x => x.value).ToList(), - BackgroundColor = backgroundColors, + BackgroundColor = backgroundColors(CurrData.Count), //BorderColor = borderColors, HoverBorderWidth = 5 }; return answ; } + /// + /// Genera colori sfondo 33% rosso / arancione / giallo + /// + /// + /// + protected List backgroundColors(int numRecords) + { + List answ = new List(); + // rosso... + for (int i = 0; i < numRecords / 3; i++) + { + answ.Add(ChartColor.FromRgba(255, 99, 132, 0.4f)); + } + // arancione + for (int i = 0; i < numRecords / 3; i++) + { + answ.Add(ChartColor.FromRgba(255, 206, 86, 0.4f)); + } + while (answ.Count < numRecords) + { + answ.Add(ChartColor.FromRgba(54, 82, 235, 0.4f)); + } - List backgroundColors = new List - { ChartColor.FromRgba(255, 99, 132, 0.2f), ChartColor.FromRgba(54, 162, 235, 0.2f), ChartColor.FromRgba(255, 206, 86, 0.2f), ChartColor.FromRgba(75, 192, 192, 0.2f), ChartColor.FromRgba(153, 102, 255, 0.2f), ChartColor.FromRgba(255, 159, 64, 0.2f) }; - List borderColors = new List - { ChartColor.FromRgba(255, 99, 132, 1f), ChartColor.FromRgba(54, 162, 235, 1f), ChartColor.FromRgba(255, 206, 86, 1f), ChartColor.FromRgba(75, 192, 192, 1f), ChartColor.FromRgba(153, 102, 255, 1f), ChartColor.FromRgba(255, 159, 64, 1f) }; + return answ; + } private void recalcData() { From a961542d406628fff8e601e00ff7a2e8a14f5351 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Sat, 22 May 2021 17:04:48 +0200 Subject: [PATCH 07/16] Abbozzato grafico a linea --- MP.Stats/Components/ChartScarti.razor | 32 +++++----- MP.Stats/Components/ChartScarti.razor.cs | 77 ++++++++++++++++++++++-- 2 files changed, 89 insertions(+), 20 deletions(-) diff --git a/MP.Stats/Components/ChartScarti.razor b/MP.Stats/Components/ChartScarti.razor index f4cde99d..ec627be6 100644 --- a/MP.Stats/Components/ChartScarti.razor +++ b/MP.Stats/Components/ChartScarti.razor @@ -1,24 +1,26 @@ @using MP.Stats.Data +
-
+
+
    + @foreach (var item in @CurrData) + { +
  • + @item.label + @item.value +
  • + } +
+
+
-
-
    - @foreach (var item in @CurrData) - { -
  • - @item.label - @item.value -
  • - } -
-
-
+
+
+ +
-
-
diff --git a/MP.Stats/Components/ChartScarti.razor.cs b/MP.Stats/Components/ChartScarti.razor.cs index f81dea5b..ac07c1ed 100644 --- a/MP.Stats/Components/ChartScarti.razor.cs +++ b/MP.Stats/Components/ChartScarti.razor.cs @@ -37,8 +37,9 @@ namespace MP.Stats.Components } protected BarChart ParetoGuasti; + protected LineChart NumGuasti; - object barChartOptions = new + protected object barChartOptions = new { //Title = new //{ @@ -48,20 +49,20 @@ namespace MP.Stats.Components Scales = new { XAxes = new object[] - { + { new { Display = false } - }, + }, YAxes = new object[] - { + { new { Display = true, ticks= new { suggestedMin = 0 } } - } + } }, Tooltips = new { @@ -82,6 +83,49 @@ namespace MP.Stats.Components AspectRatio = 2.5 }; + protected object lineChartOptions = new + { + //Title = new + //{ + // Display = true, + // Text = "Causali Scarto" + //}, + Scales = new + { + XAxes = new object[] + { + new { + Display = false + } + }, + YAxes = new object[] + { + new { + Display = true, + ticks= new { + suggestedMin = 0 + } + } + } + }, + Tooltips = new + { + Mode = "nearest", + Intersect = false + }, + Hover = new + { + Mode = "nearest", + Intersect = false + }, + //Legend = new + //{ + // Display = true, + // FullWidth = true + //}, + Animation = false, + AspectRatio = 2.5 + }; protected List CurrData { get; set; } = new List(); @@ -99,6 +143,11 @@ namespace MP.Stats.Components await ParetoGuasti.Clear(); await ParetoGuasti.AddLabelsDatasetsAndUpdate(GetBarChartLabels(), GetBarChartDataset()); } + if (NumGuasti != null) + { + await NumGuasti.Clear(); + await NumGuasti.AddLabelsDatasetsAndUpdate(GetLineChartLabels(), GetLineChartDataset()); + } } List GetBarChartLabels() @@ -106,6 +155,11 @@ namespace MP.Stats.Components var answ = CurrData.Select(x => x.label).ToList(); return answ; } + List GetLineChartLabels() + { + var answ = CurrData.Select(x => x.label).ToList(); + return answ; + } BarChartDataset GetBarChartDataset() { @@ -119,6 +173,19 @@ namespace MP.Stats.Components }; return answ; } + LineChartDataset GetLineChartDataset() + { + var answ = new LineChartDataset + { + Label = "Numero Scarti Periodo", + Data = CurrData.Select(x => x.value).ToList(), + BackgroundColor = backgroundColors(CurrData.Count), + Fill = true, + PointRadius = 2, + BorderDash = new List { } + }; + return answ; + } /// /// Genera colori sfondo 33% rosso / arancione / giallo From 9880ef3d75c033bc780552a14b18da0aa4ae34a9 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Sat, 22 May 2021 17:27:58 +0200 Subject: [PATCH 08/16] update grafico come stepped line --- MP.Stats/Components/ChartScarti.razor | 2 +- MP.Stats/Components/ChartScarti.razor.cs | 23 +++++++++++++++-------- MP.Stats/Data/ChartTS.cs | 17 +++++++++++++++++ 3 files changed, 33 insertions(+), 9 deletions(-) create mode 100644 MP.Stats/Data/ChartTS.cs diff --git a/MP.Stats/Components/ChartScarti.razor b/MP.Stats/Components/ChartScarti.razor index ec627be6..86b7d6ce 100644 --- a/MP.Stats/Components/ChartScarti.razor +++ b/MP.Stats/Components/ChartScarti.razor @@ -4,7 +4,7 @@
    - @foreach (var item in @CurrData) + @foreach (var item in @ParetoData) {
  • @item.label diff --git a/MP.Stats/Components/ChartScarti.razor.cs b/MP.Stats/Components/ChartScarti.razor.cs index ac07c1ed..f5460e9e 100644 --- a/MP.Stats/Components/ChartScarti.razor.cs +++ b/MP.Stats/Components/ChartScarti.razor.cs @@ -127,7 +127,8 @@ namespace MP.Stats.Components AspectRatio = 2.5 }; - protected List CurrData { get; set; } = new List(); + protected List ParetoData { get; set; } = new List(); + protected List TSData { get; set; } = new List(); //protected override async Task OnAfterRenderAsync(bool firstRender) //{ @@ -152,12 +153,12 @@ namespace MP.Stats.Components List GetBarChartLabels() { - var answ = CurrData.Select(x => x.label).ToList(); + var answ = ParetoData.Select(x => x.label).ToList(); return answ; } List GetLineChartLabels() { - var answ = CurrData.Select(x => x.label).ToList(); + var answ = TSData.Select(x => x.TLabel.ToString()).ToList(); return answ; } @@ -166,8 +167,8 @@ namespace MP.Stats.Components var answ = new BarChartDataset { Label = "Pareto Causali Scarto", - Data = CurrData.Select(x => x.value).ToList(), - BackgroundColor = backgroundColors(CurrData.Count), + Data = ParetoData.Select(x => x.value).ToList(), + BackgroundColor = backgroundColors(ParetoData.Count), //BorderColor = borderColors, HoverBorderWidth = 5 }; @@ -178,10 +179,11 @@ namespace MP.Stats.Components var answ = new LineChartDataset { Label = "Numero Scarti Periodo", - Data = CurrData.Select(x => x.value).ToList(), - BackgroundColor = backgroundColors(CurrData.Count), + Data = TSData.Select(x => x.Value).ToList(), + BackgroundColor = backgroundColors(1), Fill = true, PointRadius = 2, + SteppedLine=true, BorderDash = new List { } }; return answ; @@ -217,11 +219,16 @@ namespace MP.Stats.Components { if (ListScarti != null) { - CurrData = ListScarti + ParetoData = ListScarti .GroupBy(x => x.Causale) .Select(y => new ChartKV() { label = y.First().Descrizione, value = y.Sum(c => c.Qta) }) .OrderByDescending(x => x.value) .ToList(); + + TSData = ListScarti + .Select(y => new ChartTS() { TLabel = y.DataOraRif, Value = y.Qta }) + .OrderBy(x => x.TLabel) + .ToList(); } } } diff --git a/MP.Stats/Data/ChartTS.cs b/MP.Stats/Data/ChartTS.cs new file mode 100644 index 00000000..18d64e24 --- /dev/null +++ b/MP.Stats/Data/ChartTS.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace MP.Stats.Data +{ + public class ChartTS + { + #region Public Properties + + public DateTime TLabel { get; set; } = DateTime.Now; + public double Value { get; set; } = 0; + + #endregion Public Properties + } +} \ No newline at end of file From dddeff9dff450f385e8d06dab1aa9ce373e85ecd Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Sat, 22 May 2021 17:31:05 +0200 Subject: [PATCH 09/16] ok x stepped --- MP.Stats/Components/ChartScarti.razor.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MP.Stats/Components/ChartScarti.razor.cs b/MP.Stats/Components/ChartScarti.razor.cs index f5460e9e..d64aca3d 100644 --- a/MP.Stats/Components/ChartScarti.razor.cs +++ b/MP.Stats/Components/ChartScarti.razor.cs @@ -183,7 +183,7 @@ namespace MP.Stats.Components BackgroundColor = backgroundColors(1), Fill = true, PointRadius = 2, - SteppedLine=true, + SteppedLine = true, BorderDash = new List { } }; return answ; From 567a0e33754b9aed546519f9678012362a36ec53 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Sat, 22 May 2021 17:37:18 +0200 Subject: [PATCH 10/16] Group by giornaliero, da inserire date "vuote" --- MP.Stats/Components/ChartScarti.razor.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/MP.Stats/Components/ChartScarti.razor.cs b/MP.Stats/Components/ChartScarti.razor.cs index d64aca3d..3a431c10 100644 --- a/MP.Stats/Components/ChartScarti.razor.cs +++ b/MP.Stats/Components/ChartScarti.razor.cs @@ -95,7 +95,8 @@ namespace MP.Stats.Components XAxes = new object[] { new { - Display = false + Display = true, + //type = "time" } }, YAxes = new object[] @@ -158,7 +159,7 @@ namespace MP.Stats.Components } List GetLineChartLabels() { - var answ = TSData.Select(x => x.TLabel.ToString()).ToList(); + var answ = TSData.Select(x => x.TLabel.ToString("ddd dd.MM")).ToList(); return answ; } @@ -226,7 +227,8 @@ namespace MP.Stats.Components .ToList(); TSData = ListScarti - .Select(y => new ChartTS() { TLabel = y.DataOraRif, Value = y.Qta }) + .GroupBy(x => x.DataOraRif.Date) + .Select(y => new ChartTS() { TLabel = y.First().DataOraRif.Date, Value = y.Sum(c => c.Qta) }) .OrderBy(x => x.TLabel) .ToList(); } From e57755af2feaa55610dc3ff2f4193839b6cee6a0 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Mon, 24 May 2021 09:47:51 +0200 Subject: [PATCH 11/16] Completata gestione filtro show/hide charts --- MP.Stats/Components/SelectionFilter.razor | 111 +++++++++++-------- MP.Stats/Components/SelectionFilter.razor.cs | 11 ++ MP.Stats/Pages/Scarti.razor | 9 +- MP.Stats/Pages/Scarti.razor.cs | 10 ++ 4 files changed, 92 insertions(+), 49 deletions(-) diff --git a/MP.Stats/Components/SelectionFilter.razor b/MP.Stats/Components/SelectionFilter.razor index abc3bb9f..186d369e 100644 --- a/MP.Stats/Components/SelectionFilter.razor +++ b/MP.Stats/Components/SelectionFilter.razor @@ -2,63 +2,82 @@ @using MP.Stats.Data -
    -
    +
    +
    - - -
    -
    -
    -
    - - -
    -
    -
    -
    - - - @foreach (var item in ddlMacchine) +
    +
    -
    -
    -
    -
    - +
    +
    +
    +
    + +
    -
    - - @foreach (var item in ddlCommesse) - { - - } - -
    -
    -
    -
    -
    -
    - +
    +
    + + +
    +
    +
    +
    + + + @foreach (var item in ddlMacchine) + { + + } + +
    +
    +
    +
    +
    +
    + +
    + +
    + + @foreach (var item in ddlCommesse) + { + + } + +
    +
    +
    +
    +
    +
    + +
    + +
    + + @foreach (var item in ddlArticoli) + { + + } +
    -
    - - @foreach (var item in ddlArticoli) - { - - } -
    -
    +

    diff --git a/MP.Stats/Components/SelectionFilter.razor.cs b/MP.Stats/Components/SelectionFilter.razor.cs index 70af721e..6cfab2d6 100644 --- a/MP.Stats/Components/SelectionFilter.razor.cs +++ b/MP.Stats/Components/SelectionFilter.razor.cs @@ -150,6 +150,12 @@ namespace MP.Stats.Components #region Public Properties + [Parameter] + public EventCallback chartsToggle { get; set; } + + [Parameter] + public bool chartVisible { get; set; } = false; + [Parameter] public EventCallback filterChanged { get; set; } @@ -194,6 +200,11 @@ namespace MP.Stats.Components filterReset.InvokeAsync(SelFilter); } + protected void toggleChart() + { + chartsToggle.InvokeAsync(chartVisible); + } + #endregion Protected Methods } } \ No newline at end of file diff --git a/MP.Stats/Pages/Scarti.razor b/MP.Stats/Pages/Scarti.razor index a4973bd9..2cbadff3 100644 --- a/MP.Stats/Pages/Scarti.razor +++ b/MP.Stats/Pages/Scarti.razor @@ -3,11 +3,14 @@ @using MP.Stats.Components
    -
    - +
    +
    - + @if (ShowCharts == true) + { + + } @if (ListRecords == null) { diff --git a/MP.Stats/Pages/Scarti.razor.cs b/MP.Stats/Pages/Scarti.razor.cs index bfb8cc7c..bcd6b211 100644 --- a/MP.Stats/Pages/Scarti.razor.cs +++ b/MP.Stats/Pages/Scarti.razor.cs @@ -36,6 +36,7 @@ namespace MP.Stats.Pages private int currPage { get; set; } = 1; private bool isLoading { get; set; } = false; private int numRecord { get; set; } = 10; + private bool ShowCharts { get; set; } = false; #endregion Private Properties @@ -127,6 +128,15 @@ namespace MP.Stats.Pages await reloadData(); } + protected async Task ToggleChart(bool doShow) + { + ShowCharts = !ShowCharts; + if (ShowCharts) + { + await reloadData(); + } + } + protected async Task UpdateData() { currRecord = null; From 51e54796aeb810594fc5d7e61d981945457d04fb Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Mon, 24 May 2021 09:48:02 +0200 Subject: [PATCH 12/16] fix spazi filtro --- MP.Stats/Pages/Controlli.razor | 2 +- MP.Stats/Pages/Diario.razor | 2 +- MP.Stats/Pages/Oee.razor | 2 +- MP.Stats/Pages/ReportODL.razor | 2 +- MP.Stats/Pages/UserLog.razor | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/MP.Stats/Pages/Controlli.razor b/MP.Stats/Pages/Controlli.razor index 6fa4103f..4afbf04a 100644 --- a/MP.Stats/Pages/Controlli.razor +++ b/MP.Stats/Pages/Controlli.razor @@ -4,7 +4,7 @@ @using MP.Stats.Components
    -
    +
    diff --git a/MP.Stats/Pages/Diario.razor b/MP.Stats/Pages/Diario.razor index 313bd370..ac381528 100644 --- a/MP.Stats/Pages/Diario.razor +++ b/MP.Stats/Pages/Diario.razor @@ -3,7 +3,7 @@ @using MP.Stats.Components
    -
    +
    diff --git a/MP.Stats/Pages/Oee.razor b/MP.Stats/Pages/Oee.razor index 598eb0c3..2beb55a2 100644 --- a/MP.Stats/Pages/Oee.razor +++ b/MP.Stats/Pages/Oee.razor @@ -3,7 +3,7 @@ @using MP.Stats.Components
    -
    +
    diff --git a/MP.Stats/Pages/ReportODL.razor b/MP.Stats/Pages/ReportODL.razor index ebf165af..536804d6 100644 --- a/MP.Stats/Pages/ReportODL.razor +++ b/MP.Stats/Pages/ReportODL.razor @@ -3,7 +3,7 @@ @using MP.Stats.Components
    -
    +
    diff --git a/MP.Stats/Pages/UserLog.razor b/MP.Stats/Pages/UserLog.razor index 29465fa5..4dc6b64b 100644 --- a/MP.Stats/Pages/UserLog.razor +++ b/MP.Stats/Pages/UserLog.razor @@ -3,7 +3,7 @@ @using MP.Stats.Components
    -
    +
    From fb451384d24131cbb1762c33fb837348f76fce61 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Mon, 24 May 2021 10:23:50 +0200 Subject: [PATCH 13/16] Pulizia metodi pareto non utilizzati --- MP.Data/Controllers/MpStatsController.cs | 61 --------------------- MP.Data/DatabaseModels/TurniPareto.cs | 26 --------- MP.Data/DatabaseModels/TurniParetoOdl.cs | 28 ---------- MP.Data/MP.Data.csproj | 5 ++ MP.Data/MoonPro_STATSContext.cs | 68 +----------------------- 5 files changed, 7 insertions(+), 181 deletions(-) delete mode 100644 MP.Data/DatabaseModels/TurniPareto.cs delete mode 100644 MP.Data/DatabaseModels/TurniParetoOdl.cs diff --git a/MP.Data/Controllers/MpStatsController.cs b/MP.Data/Controllers/MpStatsController.cs index 843c0daf..8a01f41f 100644 --- a/MP.Data/Controllers/MpStatsController.cs +++ b/MP.Data/Controllers/MpStatsController.cs @@ -168,13 +168,6 @@ namespace MP.Data.Controllers { List dbResult = new List(); - //dbResult = dbCtx - // . - // .Where(x => x.Descrizione.Contains(searchVal) || x.IdxMacchina.Contains(searchVal) || x.CodArticolo.Contains(searchVal) || x.KeyRichiesta.Contains(searchVal) || string.IsNullOrEmpty(searchVal)) - // .OrderByDescending(x => x.InizioStato) - // .Take(numRecord) - // .ToList(); - var dataFrom = new SqlParameter("@dataFrom", DataStart); var dataTo = new SqlParameter("@dataTo", DataEnd); var idxMacchina = new SqlParameter("@idxMacchina", IdxMacchina); @@ -269,60 +262,6 @@ namespace MP.Data.Controllers return dbResult; } - /// - /// Elenco tabella TurniPareto da filtro - /// - /// - /// - /// - /// - /// - public List StatTurniParetoGetAll(DateTime DataStart, DateTime DataEnd, string IdxMacchina, int IdxODL, string KeyRichiesta, string CodArticolo) - { - List dbResult = new List(); - - var dataFrom = new SqlParameter("@dataFrom", DataStart); - var dataTo = new SqlParameter("@dataTo", DataEnd); - var idxMacchina = new SqlParameter("@idxMacchina", IdxMacchina); - var idxODL = new SqlParameter("@IdxODL", IdxODL); - var keyRichiesta = new SqlParameter("@KeyRichiesta", KeyRichiesta); - var codArticolo = new SqlParameter("@CodArticolo", CodArticolo); - - dbResult = dbCtx - .DbSetTurniPareto - .FromSqlRaw("EXEC stp_UI_ParetoTurni_GetByFilter @dataFrom,@dataTo,@idxMacchina,@IdxODL,@KeyRichiesta,@CodArticolo", dataFrom, dataTo, idxMacchina, idxODL, keyRichiesta, codArticolo) - .ToList(); - - return dbResult; - } - - /// - /// Elenco tabella TurniParetoOdl da filtro - /// - /// - /// - /// - /// - /// - public List StatTurniParetoOdlGetAll(DateTime DataStart, DateTime DataEnd, string IdxMacchina, int IdxODL, string KeyRichiesta, string CodArticolo) - { - List dbResult = new List(); - - var dataFrom = new SqlParameter("@dataFrom", DataStart); - var dataTo = new SqlParameter("@dataTo", DataEnd); - var idxMacchina = new SqlParameter("@idxMacchina", IdxMacchina); - var idxODL = new SqlParameter("@IdxODL", IdxODL); - var keyRichiesta = new SqlParameter("@KeyRichiesta", KeyRichiesta); - var codArticolo = new SqlParameter("@CodArticolo", CodArticolo); - - dbResult = dbCtx - .DbSetTurniParetoOdl - .FromSqlRaw("EXEC stp_UI_ParetoTurniOdl_GetByFilter @dataFrom,@dataTo,@idxMacchina,@IdxODL,@KeyRichiesta,@CodArticolo", dataFrom, dataTo, idxMacchina, idxODL, keyRichiesta, codArticolo) - .ToList(); - - return dbResult; - } - /// /// Elenco tabella UserLog da filtro /// diff --git a/MP.Data/DatabaseModels/TurniPareto.cs b/MP.Data/DatabaseModels/TurniPareto.cs deleted file mode 100644 index 73c9d689..00000000 --- a/MP.Data/DatabaseModels/TurniPareto.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System; -using System.Collections.Generic; - -#nullable disable - -namespace MP.Data.DatabaseModels -{ - public partial class TurniPareto - { - #region Public Properties - - public string ClasseTempo { get; set; } - public string CodArticolo { get; set; } - public string CodMacchina { get; set; } - public DateTime DataRif { get; set; } - public string DescArticolo { get; set; } - public string Descrizione { get; set; } - public string IdxMacchina { get; set; } - public int IdxStato { get; set; } - public double? TotPeriodo { get; set; } - public int? TotPz { get; set; } - public string Turno { get; set; } - - #endregion Public Properties - } -} \ No newline at end of file diff --git a/MP.Data/DatabaseModels/TurniParetoOdl.cs b/MP.Data/DatabaseModels/TurniParetoOdl.cs deleted file mode 100644 index 7a15b270..00000000 --- a/MP.Data/DatabaseModels/TurniParetoOdl.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using System.Collections.Generic; - -#nullable disable - -namespace MP.Data.DatabaseModels -{ - public partial class TurniParetoOdl - { - #region Public Properties - - public string ClasseTempo { get; set; } - public string CodArticolo { get; set; } - public string CodMacchina { get; set; } - public DateTime DataRif { get; set; } - public string DescArticolo { get; set; } - public string Descrizione { get; set; } - public string IdxMacchina { get; set; } - public int? IdxOdl { get; set; } - public int IdxStato { get; set; } - public string KeyRichiesta { get; set; } - public double? TotPeriodo { get; set; } - public int? TotPz { get; set; } - public string Turno { get; set; } - - #endregion Public Properties - } -} \ No newline at end of file diff --git a/MP.Data/MP.Data.csproj b/MP.Data/MP.Data.csproj index de2014da..f9e16cd0 100644 --- a/MP.Data/MP.Data.csproj +++ b/MP.Data/MP.Data.csproj @@ -6,6 +6,11 @@ MP.Data + + + + + diff --git a/MP.Data/MoonPro_STATSContext.cs b/MP.Data/MoonPro_STATSContext.cs index b6161519..3218b430 100644 --- a/MP.Data/MoonPro_STATSContext.cs +++ b/MP.Data/MoonPro_STATSContext.cs @@ -43,8 +43,10 @@ namespace MP.Data public virtual DbSet DbSetODL { get; set; } public virtual DbSet DbSetScarti { get; set; } public virtual DbSet DbSetTurniOee { get; set; } +#if false public virtual DbSet DbSetTurniPareto { get; set; } public virtual DbSet DbSetTurniParetoOdl { get; set; } +#endif public virtual DbSet DbSetUserLog { get; set; } #endregion Public Properties @@ -103,72 +105,6 @@ namespace MP.Data .HasMaxLength(5); }); - modelBuilder.Entity(entity => - { - entity.HasNoKey(); - - entity.ToView("v_UI_Pareto_Turni"); - - entity.Property(e => e.ClasseTempo).HasMaxLength(50); - - entity.Property(e => e.CodArticolo) - .IsRequired() - .HasMaxLength(50); - - entity.Property(e => e.CodMacchina).HasMaxLength(50); - - entity.Property(e => e.DataRif).HasColumnType("datetime"); - - entity.Property(e => e.DescArticolo).HasMaxLength(250); - - entity.Property(e => e.Descrizione).HasMaxLength(50); - - entity.Property(e => e.IdxMacchina) - .IsRequired() - .HasMaxLength(50); - - entity.Property(e => e.TotPeriodo).HasColumnName("totPeriodo"); - - entity.Property(e => e.Turno) - .IsRequired() - .HasMaxLength(5); - }); - - modelBuilder.Entity(entity => - { - entity.HasNoKey(); - - entity.ToView("v_UI_Pareto_TurniOdl"); - - entity.Property(e => e.ClasseTempo).HasMaxLength(50); - - entity.Property(e => e.CodArticolo) - .IsRequired() - .HasMaxLength(50); - - entity.Property(e => e.CodMacchina).HasMaxLength(50); - - entity.Property(e => e.DataRif).HasColumnType("datetime"); - - entity.Property(e => e.DescArticolo).HasMaxLength(250); - - entity.Property(e => e.Descrizione).HasMaxLength(50); - - entity.Property(e => e.IdxMacchina) - .IsRequired() - .HasMaxLength(50); - - entity.Property(e => e.IdxOdl).HasColumnName("IdxODL"); - - entity.Property(e => e.KeyRichiesta).HasMaxLength(50); - - entity.Property(e => e.TotPeriodo).HasColumnName("totPeriodo"); - - entity.Property(e => e.Turno) - .IsRequired() - .HasMaxLength(5); - }); - modelBuilder.Entity(entity => { entity.HasNoKey(); From 0ea29f61d4ad8886a5d92d1013dbf2065bb0455d Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Mon, 24 May 2021 10:23:57 +0200 Subject: [PATCH 14/16] refresh gestione scarti --- MP.Stats/Components/ChartScarti.razor | 3 +-- MP.Stats/Data/MpStatsService.cs | 10 ---------- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/MP.Stats/Components/ChartScarti.razor b/MP.Stats/Components/ChartScarti.razor index 86b7d6ce..6b772be2 100644 --- a/MP.Stats/Components/ChartScarti.razor +++ b/MP.Stats/Components/ChartScarti.razor @@ -1,6 +1,5 @@ @using MP.Stats.Data -
      @@ -23,4 +22,4 @@
    -
    +
    \ No newline at end of file diff --git a/MP.Stats/Data/MpStatsService.cs b/MP.Stats/Data/MpStatsService.cs index 986300d0..659d7a45 100644 --- a/MP.Stats/Data/MpStatsService.cs +++ b/MP.Stats/Data/MpStatsService.cs @@ -287,16 +287,6 @@ namespace MP.Stats.Data return await Task.FromResult(dbResult); } - public Task StatTurniParetoGetAll(DateTime DataStart, DateTime DataEnd, string IdxMacchina, int IdxODL, string KeyRichiesta, string CodArticolo, string searchVal = "") - { - return Task.FromResult(dbController.StatTurniParetoGetAll(DataStart, DataEnd, IdxMacchina, IdxODL, KeyRichiesta, CodArticolo).ToArray()); - } - - public Task StatTurniParetoOdlGetAll(DateTime DataStart, DateTime DataEnd, string IdxMacchina, int IdxODL, string KeyRichiesta, string CodArticolo, string searchVal = "") - { - return Task.FromResult(dbController.StatTurniParetoOdlGetAll(DataStart, DataEnd, IdxMacchina, IdxODL, KeyRichiesta, CodArticolo).ToArray()); - } - public async Task> StatUserLogGetAll(SelectData CurrFilter, string searchVal = "") { //return Task.FromResult(dbController.StatUserLogGetAll(DataStart, DataEnd, IdxMacchina, IdxODL, KeyRichiesta, CodArticolo).ToArray()); From fe1153fd699d2a750bbf34a159d923cba49ecf40 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Mon, 24 May 2021 10:31:46 +0200 Subject: [PATCH 15/16] Ok scrolling elenco causali guasto --- MP.Stats/Components/ChartScarti.razor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MP.Stats/Components/ChartScarti.razor b/MP.Stats/Components/ChartScarti.razor index 6b772be2..5370931e 100644 --- a/MP.Stats/Components/ChartScarti.razor +++ b/MP.Stats/Components/ChartScarti.razor @@ -1,7 +1,7 @@ @using MP.Stats.Data
    -
    +
      @foreach (var item in @ParetoData) { From 4026142b120786088449d4b7dab05868a39c9c12 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Mon, 24 May 2021 11:12:03 +0200 Subject: [PATCH 16/16] Eliminazione errore doppio plot (check null list) --- MP.Stats/Components/ChartScarti.razor | 47 +++--- MP.Stats/Components/ChartScarti.razor.cs | 188 ++++++++++++----------- 2 files changed, 126 insertions(+), 109 deletions(-) diff --git a/MP.Stats/Components/ChartScarti.razor b/MP.Stats/Components/ChartScarti.razor index 5370931e..d64d42bb 100644 --- a/MP.Stats/Components/ChartScarti.razor +++ b/MP.Stats/Components/ChartScarti.razor @@ -1,25 +1,34 @@ @using MP.Stats.Data
      -
      -
        - @foreach (var item in @ParetoData) - { -
      • - @item.label - @item.value -
      • - } -
      -
      -
      -
      -
      - -
      -
      - + @if (ListScarti == null || ListScarti.Count == 0) + { +
      +
      No Chart Data
      +
      + } + else + { +
      +
        + @foreach (var item in @ParetoData) + { +
      • + @item.label + @item.value +
      • + } +
      +
      +
      +
      +
      + +
      +
      + +
      -
      + }
      \ No newline at end of file diff --git a/MP.Stats/Components/ChartScarti.razor.cs b/MP.Stats/Components/ChartScarti.razor.cs index 3a431c10..f67e7626 100644 --- a/MP.Stats/Components/ChartScarti.razor.cs +++ b/MP.Stats/Components/ChartScarti.razor.cs @@ -10,42 +10,10 @@ namespace MP.Stats.Components { public partial class ChartScarti { - [Inject] - protected MessageService MessageService { get; set; } - [Inject] - protected MpStatsService StatService { get; set; } - - protected SelectData _currFilter { get; set; } = new SelectData(); - - protected List _listScarti { get; set; } = new List(); - - [Parameter] - public List ListScarti - { - get => _listScarti; - set - { - // salvo valori - _listScarti = value; - // ricalcolo charting data - recalcData(); - var dataReload = Task.Run(async () => - { - await HandleRedraw(); - }); - } - } - - protected BarChart ParetoGuasti; - protected LineChart NumGuasti; + #region Protected Fields protected object barChartOptions = new { - //Title = new - //{ - // Display = true, - // Text = "Causali Scarto" - //}, Scales = new { XAxes = new object[] @@ -74,22 +42,12 @@ namespace MP.Stats.Components Mode = "nearest", Intersect = false }, - //Legend = new - //{ - // Display = true, - // FullWidth = true - //}, Animation = false, AspectRatio = 2.5 }; protected object lineChartOptions = new { - //Title = new - //{ - // Display = true, - // Text = "Causali Scarto" - //}, Scales = new { XAxes = new object[] @@ -119,51 +77,61 @@ namespace MP.Stats.Components Mode = "nearest", Intersect = false }, - //Legend = new - //{ - // Display = true, - // FullWidth = true - //}, Animation = false, AspectRatio = 2.5 }; + protected LineChart NumGuasti; + + protected BarChart ParetoGuasti; + + #endregion Protected Fields + + #region Protected Properties + + protected SelectData _currFilter { get; set; } = new SelectData(); + + protected List _listScarti { get; set; } = new List(); + + [Inject] + protected MessageService MessageService { get; set; } + protected List ParetoData { get; set; } = new List(); + + [Inject] + protected MpStatsService StatService { get; set; } + protected List TSData { get; set; } = new List(); - //protected override async Task OnAfterRenderAsync(bool firstRender) - //{ - // if (firstRender) - // { - // await HandleRedraw(); - // } - //} - protected async Task HandleRedraw() + #endregion Protected Properties + + #region Public Properties + + [Parameter] + public List ListScarti { - if (ParetoGuasti != null) + get => _listScarti; + set { - await ParetoGuasti.Clear(); - await ParetoGuasti.AddLabelsDatasetsAndUpdate(GetBarChartLabels(), GetBarChartDataset()); - } - if (NumGuasti != null) - { - await NumGuasti.Clear(); - await NumGuasti.AddLabelsDatasetsAndUpdate(GetLineChartLabels(), GetLineChartDataset()); + // salvo valori + _listScarti = value; + if (value != null) + { + // ricalcolo charting data + recalcData(); + var dataReload = Task.Run(async () => + { + await HandleRedraw(); + }); + } } } - List GetBarChartLabels() - { - var answ = ParetoData.Select(x => x.label).ToList(); - return answ; - } - List GetLineChartLabels() - { - var answ = TSData.Select(x => x.TLabel.ToString("ddd dd.MM")).ToList(); - return answ; - } + #endregion Public Properties - BarChartDataset GetBarChartDataset() + #region Private Methods + + private BarChartDataset GetBarChartDataset() { var answ = new BarChartDataset { @@ -175,7 +143,14 @@ namespace MP.Stats.Components }; return answ; } - LineChartDataset GetLineChartDataset() + + private List GetBarChartLabels() + { + var answ = ParetoData.Select(x => x.label).ToList(); + return answ; + } + + private LineChartDataset GetLineChartDataset() { var answ = new LineChartDataset { @@ -190,6 +165,34 @@ namespace MP.Stats.Components return answ; } + private List GetLineChartLabels() + { + var answ = TSData.Select(x => x.TLabel.ToString("ddd dd.MM")).ToList(); + return answ; + } + + private void recalcData() + { + if (ListScarti != null) + { + ParetoData = ListScarti + .GroupBy(x => x.Causale) + .Select(y => new ChartKV() { label = y.First().Descrizione, value = y.Sum(c => c.Qta) }) + .OrderByDescending(x => x.value) + .ToList(); + + TSData = ListScarti + .GroupBy(x => x.DataOraRif.Date) + .Select(y => new ChartTS() { TLabel = y.First().DataOraRif.Date, Value = y.Sum(c => c.Qta) }) + .OrderBy(x => x.TLabel) + .ToList(); + } + } + + #endregion Private Methods + + #region Protected Methods + /// /// Genera colori sfondo 33% rosso / arancione / giallo /// @@ -216,22 +219,27 @@ namespace MP.Stats.Components return answ; } - private void recalcData() + //protected override async Task OnAfterRenderAsync(bool firstRender) + //{ + // if (firstRender) + // { + // await HandleRedraw(); + // } + //} + protected async Task HandleRedraw() { - if (ListScarti != null) + if (ParetoGuasti != null) { - ParetoData = ListScarti - .GroupBy(x => x.Causale) - .Select(y => new ChartKV() { label = y.First().Descrizione, value = y.Sum(c => c.Qta) }) - .OrderByDescending(x => x.value) - .ToList(); - - TSData = ListScarti - .GroupBy(x => x.DataOraRif.Date) - .Select(y => new ChartTS() { TLabel = y.First().DataOraRif.Date, Value = y.Sum(c => c.Qta) }) - .OrderBy(x => x.TLabel) - .ToList(); + await ParetoGuasti.Clear(); + await ParetoGuasti.AddLabelsDatasetsAndUpdate(GetBarChartLabels(), GetBarChartDataset()); + } + if (NumGuasti != null) + { + await NumGuasti.Clear(); + await NumGuasti.AddLabelsDatasetsAndUpdate(GetLineChartLabels(), GetLineChartDataset()); } } + + #endregion Protected Methods } -} +} \ No newline at end of file