- fix componenti grafici Bootstrap5
- fix filtro azioni UL
This commit is contained in:
Samuele Locatelli
2025-02-18 12:51:26 +01:00
parent 43aae08d1e
commit 256851a0ce
20 changed files with 155 additions and 102 deletions
+15
View File
@@ -46,5 +46,20 @@ namespace MP.Data.DatabaseModels
return answ;
}
}
[NotMapped]
public decimal AvgTotEn01
{
get
{
var num = TotEn01;
var den = TotCount01;
if (den == 0)
{
den = 1;
}
decimal answ = num / den;
return answ;
}
}
}
}
+21 -7
View File
@@ -11,6 +11,9 @@ namespace MP.Stats.Components
{
#region Public Properties
[Parameter]
public bool DynMode { get; set; } = false;
[Parameter]
public List<MP.Data.DatabaseModels.OdlEnergyModel> RawData
{
@@ -22,7 +25,7 @@ namespace MP.Stats.Components
if (value != null)
{
// ricalcolo charting data
recalcData();
RecalcData();
}
}
}
@@ -158,7 +161,7 @@ namespace MP.Stats.Components
return answ;
}
private void recalcData()
private void RecalcData()
{
if (RawData != null)
{
@@ -168,11 +171,22 @@ namespace MP.Stats.Components
.OrderByDescending(x => x.value)
.ToList();
TSData = RawData
.GroupBy(x => x.DataInizio.Date)
.Select(r => new chartJsData.chartJsTSerie() { x = r.First().DataInizio.Date, y = r.Average(l => (double)l.AvgWatt) })
.OrderBy(o => o.x)
.ToList();
if (DynMode)
{
TSData = RawData
.GroupBy(x => x.DataInizio.Date)
.Select(r => new chartJsData.chartJsTSerie() { x = r.First().DataInizio.Date, y = r.Average(l => (double)l.AvgTotEn01) })
.OrderBy(o => o.x)
.ToList();
}
else
{
TSData = RawData
.GroupBy(x => x.DataInizio.Date)
.Select(r => new chartJsData.chartJsTSerie() { x = r.First().DataInizio.Date, y = r.Average(l => (double)l.AvgWatt) })
.OrderBy(o => o.x)
.ToList();
}
}
}
+2 -2
View File
@@ -1,6 +1,6 @@
<div class="d-flex justify-content-between text-light w-100">
<div class="px-1 text-left">
<b>MagMan</b> <span class="small">v.@version</span>
<div class="px-1 text-start">
<b>MAPO</b> Stats module | <span class="small">v.@version</span>
</div>
<div class="px-1 text-end">
<span class="small px-1">@adesso</span>
+1 -1
View File
@@ -13,7 +13,7 @@
<div class="col-6 text-center h4">
<span class="@PageIcon" aria-hidden="true"></span> @PageName
</div>
<div class="col-3 text-right">
<div class="col-3 text-end">
@if (ShowSearch)
{
<SearchMod></SearchMod>
+40 -22
View File
@@ -32,14 +32,14 @@
</div>
</div>
<div class="col">
<div class="form-group mb-0">
<label for="idxMacc" class="small">macchina:</label>
<InputSelect @bind-Value="@IdxMacchina" id="maccSel" class="form-control form-control-sm" title="Macchina">
<label for="idxMacc" class="small">macchina:</label>
<div class="input-group input-group-sm">
<select @bind="@IdxMacchina" class="form-select">
@foreach (var item in ddlMacchine)
{
<option value="@item.ValueField">@item.LabelField</option>
}
</InputSelect>
</select>
</div>
</div>
@if (ActionsEnabled)
@@ -47,12 +47,14 @@
<div class="col">
<div class="form-group mb-0">
<label for="idxMacc" class="small">azione:</label>
<InputSelect @bind-Value="@Azione" id="azioneSel" class="form-control form-control-sm" title="Azione">
@foreach (var item in ddlAzioni)
{
<option value="@item.ValueField">@item.LabelField</option>
}
</InputSelect>
<div class="input-group input-group-sm">
<select @bind="@Azione" class="form-select" disabled="@(!CommessaEnabled)">
@foreach (var item in ddlAzioni)
{
<option value="@item.ValueField">@item.LabelField</option>
}
</select>
</div>
</div>
</div>
}
@@ -64,12 +66,23 @@
</div>
<input class="form-control form-control-sm" @bind="@SearchCom" placeholder="search (> @minChar char)" disabled="@(!CommessaEnabled)" />
</div>
<InputSelect @bind-Value="@KeyRichiesta" id="KeyRich" class="form-control form-control-sm" title="Macchina" disabled="@(!CommessaEnabled)">
@foreach (var item in ddlCommesse)
{
<option value="@item.ValueField">@item.LabelField</option>
}
</InputSelect>
@if (!string.IsNullOrEmpty(SearchCom) && SearchCom.Length >= minChar)
{
<div class="input-group input-group-sm">
<select @bind="@KeyRichiesta" class="form-select" disabled="@(!CommessaEnabled)">
@foreach (var item in ddlCommesse)
{
<option value="@item.ValueField">@item.LabelField</option>
}
</select>
</div>
@* <InputSelect @bind-Value="@KeyRichiesta" id="KeyRich" class="form-control form-control-sm" title="Macchina" disabled="@(!CommessaEnabled)">
@foreach (var item in ddlCommesse)
{
<option value="@item.ValueField">@item.LabelField</option>
}
</InputSelect> *@
}
</div>
</div>
<div class="col">
@@ -80,12 +93,17 @@
</div>
<input class="form-control form-control-sm" @bind="@SearchArt" placeholder="search (> @minChar char)" />
</div>
<InputSelect @bind-Value="@CodArticolo" class="form-control form-control-sm" title="Macchina">
@foreach (var item in ddlArticoli)
{
<option value="@item.ValueField">@item.LabelField</option>
}
</InputSelect>
@if (!string.IsNullOrEmpty(SearchArt) && SearchArt.Length >= minChar)
{
<div class="input-group input-group-sm">
<select @bind="@CodArticolo" class="form-select">
@foreach (var item in ddlArticoli)
{
<option value="@item.ValueField">@item.LabelField</option>
}
</select>
</div>
}
</div>
</div>
</div>
+6
View File
@@ -2,6 +2,7 @@
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using MimeKit.Cryptography;
using MP.Data.Controllers;
using MP.Data.DatabaseModels;
using MP.Data.Services;
@@ -603,6 +604,11 @@ namespace MP.Stats.Data
else
{
result = dbController.StatUserLogGetAll(CurrFilter.DateStart, CurrFilter.DateEnd, CurrFilter.IdxMacchina, CurrFilter.IdxOdl, CurrFilter.KeyRichiesta, CurrFilter.CodArticolo);
// filtro x tipo azione "a mano" prima di salvare...
if (CurrFilter.Azione != "*")
{
result = result.Where(x => x.Azione == CurrFilter.Azione).ToList();
}
// serializzp e salvo...
rawData = JsonConvert.SerializeObject(result);
await redisDb.StringSetAsync(currKey, rawData, FastCache);
+2 -2
View File
@@ -4,8 +4,8 @@
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>MP.Stats</RootNamespace>
<UserSecretsId>826e877c-ba70-4253-84cb-d0b1cafd4440</UserSecretsId>
<Version>6.16.2502.1811</Version>
<Version>6.16.2502.1811</Version>
<Version>6.16.2502.1812</Version>
<Version>6.16.2502.1812</Version>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<NoWarn>$(NoWarn);1591</NoWarn>
<SatelliteResourceLanguages>en</SatelliteResourceLanguages>
+1 -1
View File
@@ -58,7 +58,7 @@
</td>
<td>@record.EsitoOk</td>
<td>@record.Note</td>
<td class="text-right">@record.Cognome @record.Nome (@record.MatrOpr)</td>
<td class="text-end">@record.Cognome @record.Nome (@record.MatrOpr)</td>
</tr>
}
</tbody>
+6 -6
View File
@@ -26,9 +26,9 @@
<th>Data</th>
<th>Commessa/ODL</th>
<th>Articolo</th>
<th class="text-right">Stato</th>
<th class="text-right">Durata</th>
<th class="text-right">Pezzi</th>
<th class="text-end">Stato</th>
<th class="text-end">Durata</th>
<th class="text-end">Pezzi</th>
</tr>
</thead>
<tbody>
@@ -51,12 +51,12 @@
@record.CodArticolo
<div class="small">@record.DescArticolo</div>
</td>
<td class="text-right">@record.Descrizione</td>
<td class="text-right">
<td class="text-end">@record.Descrizione</td>
<td class="text-end">
@MP.Data.Utils.ConvMsecToTime((long)record.DurataPeriodo)
<div class="small">@(((double)record.DurataPeriodo/60000).ToString("N2")) <sub>min</sub></div>
</td>
<td class="text-right">@record.TotPzProd</td>
<td class="text-end">@record.TotPzProd</td>
</tr>
}
</tbody>
+25 -25
View File
@@ -9,7 +9,7 @@
<div class="card-body py-0 px-1">
@if (ShowCharts == true)
{
<ChartEnergy RawData="SearchRecords"></ChartEnergy>
<ChartEnergy RawData="SearchRecords" DynMode="dynMode"></ChartEnergy>
}
@if (ListRecords == null)
{
@@ -33,33 +33,33 @@
<th>Fine</th>
@if (dynMode)
{
<th class="text-right">@Traduci("MP-STATS_TotCount01")</th>
<th class="text-end">@Traduci("MP-STATS_TotCount01")</th>
@if (numCount > 1)
{
<th class="text-right">@Traduci("MP-STATS_TotCount02")</th>
<th class="text-end">@Traduci("MP-STATS_TotCount02")</th>
}
@if (numCount > 2)
{
<th class="text-right">@Traduci("MP-STATS_TotCount03")</th>
<th class="text-end">@Traduci("MP-STATS_TotCount03")</th>
}
<th class="text-right">@Traduci("MP-STATS_TotEn01")</th>
<th class="text-right">@Traduci("MP-STATS_TotEn01")/Unit</th>
<th class="text-end">@Traduci("MP-STATS_TotEn01")</th>
<th class="text-end">@Traduci("MP-STATS_TotEn01")/Unit</th>
@if (numTotEn > 1)
{
<th class="text-right">@Traduci("MP-STATS_TotEn02")</th>
<th class="text-right">@Traduci("MP-STATS_TotEn02")/Unit</th>
<th class="text-end">@Traduci("MP-STATS_TotEn02")</th>
<th class="text-end">@Traduci("MP-STATS_TotEn02")/Unit</th>
}
@if (numTotEn > 2)
{
<th class="text-right">@Traduci("MP-STATS_TotEn03")</th>
<th class="text-right">@Traduci("MP-STATS_TotEn03")/Unit</th>
<th class="text-end">@Traduci("MP-STATS_TotEn03")</th>
<th class="text-end">@Traduci("MP-STATS_TotEn03")/Unit</th>
}
}
else
{
<th class="text-right">Unit</th>
<th class="text-right">Energy</th>
<th class="text-right">Gas</th>
<th class="text-end">Unit</th>
<th class="text-end">Energy</th>
<th class="text-end">Gas</th>
}
</tr>
</thead>
@@ -80,21 +80,21 @@
<td>@record.DataFine</td>
@if (dynMode)
{
<td class="text-right">@($"{record.TotCount01:N0}") @GetUM("TotCount01")</td>
<td class="text-end">@($"{record.TotCount01:N0}") @GetUM("TotCount01")</td>
@if (numCount > 1)
{
<td class="text-right">@($"{record.TotCount02:N0}") @GetUM("TotCount02")</td>
<td class="text-end">@($"{record.TotCount02:N0}") @GetUM("TotCount02")</td>
}
@if (numCount > 2)
{
<td class="text-right">@($"{record.TotCount03:N0}") @GetUM("TotCount03")</td>
<td class="text-end">@($"{record.TotCount03:N0}") @GetUM("TotCount03")</td>
}
<td class="text-right">
<td class="text-end">
<div>
@($"{record.TotEn01:N2}") @GetUM("TotEn01")
</div>
</td>
<td class="text-right">
<td class="text-end">
<div class="small">
@righDiv(record.TotEn01, record.TotCount01).ToString("N3") @GetUM("TotEn01")/@GetUM("TotCount01")
</div>
@@ -113,12 +113,12 @@
</td>
@if (numTotEn > 1)
{
<td class="text-right">
<td class="text-end">
<div>
@($"{record.TotEn02:N2}") @GetUM("TotEn02")
</div>
</td>
<td class="text-right">
<td class="text-end">
<div class="small">
@righDiv(record.TotEn02, record.TotCount01).ToString("N3") @GetUM("TotEn02")/@GetUM("TotCount01")
</div>
@@ -138,12 +138,12 @@
}
@if (numTotEn > 2)
{
<td class="text-right">
<td class="text-end">
<div>
@($"{record.TotEn03:N2}") @GetUM("TotEn03")
</div>
</td>
<td class="text-right">
<td class="text-end">
<div class="small">
@righDiv(record.TotEn03, record.TotCount01).ToString("N3") @GetUM("TotEn02")/@GetUM("TotCount01")
</div>
@@ -164,8 +164,8 @@
}
else
{
<td class="text-right">@(record.TotCount.ToString("N0")) m</td>
<td class="text-right">
<td class="text-end">@(record.TotCount.ToString("N0")) m</td>
<td class="text-end">
<div>
@record.TotWatt.ToString("N2") kWh
</div>
@@ -173,7 +173,7 @@
@righDiv(record.TotWatt, record.TotCount).ToString("N3") kWh/m
</small>
</td>
<td class="text-right">
<td class="text-end">
<div>
@record.TotGas.ToString("N2") m<sup>3</sup>
</div>
+7 -7
View File
@@ -34,9 +34,9 @@
<th>Turno</th>
<th>Macchina</th>
<th>Articolo</th>
<th class="text-right">Durata</th>
<th class="text-right">Pezzi</th>
<th class="text-right">OEE %</th>
<th class="text-end">Durata</th>
<th class="text-end">Pezzi</th>
<th class="text-end">OEE %</th>
</tr>
</thead>
<tbody>
@@ -56,13 +56,13 @@
@record.CodArticolo
<div class="small">@record.DescArticolo</div>
</td>
@*<td class="text-right">@record.TotPeriodo.ToString("N2")</td>*@
<td class="text-right">
@*<td class="text-end">@record.TotPeriodo.ToString("N2")</td>*@
<td class="text-end">
@MP.Data.Utils.ConvMinToTime((double)record.TotPeriodo)
<div class="small">@record.TotPeriodo.ToString("N2") <sub>min</sub></div>
</td>
<td class="text-right">@record.TotPz</td>
<td class="text-right">@record.OEE.ToString("P2")</td>
<td class="text-end">@record.TotPz</td>
<td class="text-end">@record.OEE.ToString("P2")</td>
</tr>
}
</tbody>
+7 -7
View File
@@ -31,9 +31,9 @@
<th>Data</th>
<th>Commessa/ODL</th>
<th>Articolo</th>
<th class="text-right">Descrizione</th>
<th class="text-right">Qta</th>
<th class="text-right">Operatore</th>
<th class="text-end">Descrizione</th>
<th class="text-end">Qta</th>
<th class="text-end">Operatore</th>
</tr>
</thead>
<tbody>
@@ -56,15 +56,15 @@
@record.CodArticolo
<div class="small">@record.DescArticolo</div>
</td>
<td class="text-right">
<td class="text-end">
<div class="row">
<div class="col">[@record.Causale]</div>
<div class="col text-right">@record.Descrizione</div>
<div class="col text-end">@record.Descrizione</div>
</div>
<div class="small">@record.Note</div>
</td>
<td class="text-right">@record.Qta</td>
<td class="text-right">@record.Cognome @record.Nome (@record.MatrOpr)</td>
<td class="text-end">@record.Qta</td>
<td class="text-end">@record.Cognome @record.Nome (@record.MatrOpr)</td>
</tr>
}
</tbody>
+7 -7
View File
@@ -30,9 +30,9 @@
<th>Data</th>
<th>Commessa/ODL</th>
<th>Articolo</th>
<th class="text-right">Descrizione</th>
<th class="text-right">Qta</th>
<th class="text-right">Operatore</th>
<th class="text-end">Descrizione</th>
<th class="text-end">Qta</th>
<th class="text-end">Operatore</th>
</tr>
</thead>
<tbody>
@@ -55,19 +55,19 @@
@record.CodArticolo
<div class="small">@record.DescArticolo</div>
</td>
<td class="text-right">
<td class="text-end">
<div>@record.Valore</div>
<div class="small row text-nowrap">
<div class="col">
<span class="@decodeAction(@record.Azione).Class" aria-hidden="true"></span> [@record.IdxLog]
</div>
<div class="col text-right">
<div class="col text-end">
@decodeAction(@record.Azione).Descrizione
</div>
</div>
</td>
<td class="text-right">@record.Qta.ToString("N0")</td>
<td class="text-right">@record.Cognome @record.Nome (@record.MatrOpr)</td>
<td class="text-end">@record.Qta.ToString("N0")</td>
<td class="text-end">@record.Cognome @record.Nome (@record.MatrOpr)</td>
</tr>
}
</tbody>
+8 -8
View File
@@ -47,7 +47,7 @@ namespace MP.Stats.Pages
if (_currPage != value)
{
_currPage = value;
var pUpd = Task.Run(async () => await reloadData());
var pUpd = Task.Run(async () => await ReloadData());
pUpd.Wait();
}
}
@@ -68,7 +68,7 @@ namespace MP.Stats.Pages
if (_numRecord != value)
{
_numRecord = value;
var pUpd = Task.Run(async () => await reloadData());
var pUpd = Task.Run(async () => await ReloadData());
pUpd.Wait();
}
}
@@ -122,7 +122,7 @@ namespace MP.Stats.Pages
isLoading = false;
}
private async Task reloadData()
private async Task ReloadData()
{
isLoading = true;
ActionsList = await StatService.ActionsGetAll();
@@ -141,7 +141,7 @@ namespace MP.Stats.Pages
SearchRecords = null;
ListRecords = null;
currFilter = newFilter;
await reloadData();
await ReloadData();
}
protected void ForceReload(int newNum)
@@ -162,7 +162,7 @@ namespace MP.Stats.Pages
MessageService.PageName = "User ActionLog";
MessageService.PageIcon = "oi oi-document";
MessageService.EA_SearchUpdated += OnSeachUpdated;
await reloadData();
await ReloadData();
}
protected void ResetData()
@@ -179,7 +179,7 @@ namespace MP.Stats.Pages
SearchRecords = null;
ListRecords = null;
currFilter = SelectData.Init(5, 7);
await reloadData();
await ReloadData();
}
protected async Task ToggleChart(bool doShow)
@@ -187,14 +187,14 @@ namespace MP.Stats.Pages
ShowCharts = !ShowCharts;
if (ShowCharts)
{
await reloadData();
await ReloadData();
}
}
protected async Task UpdateData()
{
currRecord = null;
await reloadData();
await ReloadData();
}
#endregion Protected Methods
+1 -1
View File
@@ -1,6 +1,6 @@
<body>
<i>Modulo statistiche MAPO</i>
<h4>Versione: 6.16.2502.1811</h4>
<h4>Versione: 6.16.2502.1812</h4>
<br />
Note di rilascio:
<ul>
+1 -1
View File
@@ -1 +1 @@
6.16.2502.1811
6.16.2502.1812
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>6.16.2502.1811</version>
<version>6.16.2502.1812</version>
<url>https://nexus.steamware.net/repository/SWS/MP-STATS/stable/LAST/MP.Stats.zip</url>
<changelog>https://nexus.steamware.net/repository/SWS/MP-STATS/stable/LAST/ChangeLog.html</changelog>
<mandatory>false</mandatory>
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2 -2
View File
@@ -44,7 +44,7 @@
<th>#</th>
<th>Inizio</th>
<th>Fine</th>
<th class="text-right">Esito</th>
<th class="text-end">Esito</th>
</tr>
</thead>
<tbody>
@@ -62,7 +62,7 @@
@($"{record.DtEnd:HH:mm:ss.fff}")
<div class="small">@($"{record.DtEnd:yyyy-MM.dd ddd}")</div>
</td>
<td class="text-right">
<td class="text-end">
<div class="d-flex justify-content-between">
<div class="px-0">
@if (@record.IsError)