Compare commits

..

13 Commits

Author SHA1 Message Date
Samuele Locatelli a0ffe1bc6c Merge branch 'Release/FixMemoryLeakError' 2022-10-18 17:12:04 +02:00
Samuele Locatelli 6e75f590bb pulizia codice 2022-10-18 17:11:42 +02:00
Samuele Locatelli 12473b5088 Ancora cleanup di GC x recupero RAM inutilizzata 2022-10-18 17:10:29 +02:00
Samuele Locatelli f6406f833f Ancora memory leak
- diminuito problema di refresh automatico
- inizio gestione dispose oggetti
2022-10-18 16:53:00 +02:00
Samuele Locatelli a21cd16362 FIX PODL
- verifica PODL attrezzabili (=senza OIDL correnti)
2022-10-18 16:32:40 +02:00
Samuele Locatelli d659afacc2 Fix PODL
- paginazione
- cambio num rec
- sel fase
2022-10-18 16:15:59 +02:00
zaccaria.majid 56c3ba4064 Fix loop ram 2022-10-18 15:56:14 +02:00
Samuele Locatelli 8d0292d789 Merge branch 'develop' of https://gitlab.steamware.net/steamware/mapo-core into develop 2022-10-18 12:01:06 +02:00
Samuele Locatelli 419863a684 Loop Update:
inizio verifica ODL/PODL
2022-10-18 12:01:04 +02:00
Samuele Locatelli f56a7e5164 Aggiunto btn x forzare syncDb 2022-10-18 11:28:59 +02:00
zaccaria.majid 0cf6ecd38f fix colori 2022-10-18 11:23:27 +02:00
zaccaria.majid 094ce0d181 fix style plot 2022-10-18 11:10:39 +02:00
Samuele Locatelli b4de1c9880 Merge tag 'UpdateGestSelect' into develop
Update grafico
2022-10-18 10:11:26 +02:00
23 changed files with 363 additions and 205 deletions
+6 -6
View File
@@ -742,19 +742,18 @@ namespace MP.Data.Controllers
}
/// <summary>
/// Recupero Odl CORRENTE x macchina (SE c'è)
/// Recupero Odl CORRENTI
/// </summary>
/// <param name="idxMacchina"></param>
/// <returns></returns>
public ODLModel OdlGetCurrentByMacc(string idxMacchina)
public List<ODLModel> OdlGetCurrent()
{
ODLModel dbResult = new ODLModel();
List<ODLModel> dbResult = new List<ODLModel>();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetODL
.FirstOrDefault(x => x.IdxMacchina == idxMacchina && x.DataInizio != null && x.DataFine == null);
.Where(x => x.DataInizio != null && x.DataFine == null)
.ToList();
}
return dbResult;
}
@@ -932,6 +931,7 @@ namespace MP.Data.Controllers
currRec.KeyRichiesta = editRec.KeyRichiesta;
currRec.NumPezzi = editRec.NumPezzi;
currRec.Tcassegnato = editRec.Tcassegnato;
currRec.Attivabile = editRec.Attivabile;
currRec.Note = editRec.Note;
dbCtx.Entry(currRec).State = EntityState.Modified;
}
+3 -2
View File
@@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Components;
using Microsoft.JSInterop;
using MP.Data;
using MP.SPEC.Data;
using static System.Net.Mime.MediaTypeNames;
namespace MP.SPEC.Components.Chart
@@ -28,7 +29,7 @@ namespace MP.SPEC.Components.Chart
public double[] Data { get; set; }
[Parameter]
public string[] BackgroundColor { get; set; }
public List<DoughnutStyling> BackgroundColor { get; set; }
[Parameter]
public string[] Labels { get; set; }
@@ -46,7 +47,7 @@ namespace MP.SPEC.Components.Chart
{
Datasets = new[]
{
new { Data = Data, BackgroundColor = BackgroundColor
new { Data = Data, BackgroundColor = BackgroundColor.Select(x=>x.color), borderColor = BackgroundColor.Select(x=>x.border), borderWidth= 0, offset= 1, borderRadius = 0
}
},
Labels = Labels
+1 -1
View File
@@ -98,7 +98,7 @@ namespace MP.SPEC.Components
protected int _numRecord { get; set; } = 10;
protected int percLoading { get; set; } = 0;
protected int percLoading { get; set; } = 0;
#endregion Protected Properties
+11 -13
View File
@@ -6,7 +6,7 @@ using MP.SPEC.Data;
namespace MP.SPEC.Components
{
public partial class ListDossiers
public partial class ListDossiers: IDisposable
{
#region Public Properties
@@ -40,6 +40,16 @@ namespace MP.SPEC.Components
}
return answ;
}
public void Dispose()
{
MessageService.EA_PageUpdated -= MessageService_EA_PageUpdated;
MessageService.EA_SearchUpdated -= OnSeachUpdated;
currRecord = null;
SearchRecords = null;
ListRecords = null;
GC.Collect();
}
#endregion Public Methods
@@ -81,18 +91,6 @@ namespace MP.SPEC.Components
await RecordSelFlux.InvokeAsync(selRec);
}
protected string findRec(FluxLog record)
{
string answ = "";
#if false
if (ListRecordsMod != null)
{
answ = ListRecordsMod.Where(l => l.IdxMacchina == record.IdxMacchina && l.CodFlux == record.CodFlux).Select(x => x.Valore).SingleOrDefault();
}
#endif
return answ;
}
protected override async Task OnInitializedAsync()
{
MessageService.EA_PageUpdated += MessageService_EA_PageUpdated;
+6 -9
View File
@@ -15,13 +15,14 @@ else
@if (currRecord != null && !showStats && isCurrOdl)
{
<div class="col-6 col-lg-8">
<button @onclick="() => forceSyncDb()" class="btn btn-success btn-sm btn-">Forza sync dati ODL <i class="bi bi-fast-forward-circle"></i></button>
</div>
<div class="col-6 col-lg-4 text-end">
@*<div class="px-2 input-group" title="Selezionare Data-Ora chiusura ODL">
<label class="input-group-text" for="dtMax"><i class="fa-regular fa-calendar-minus"></i></label>
<input class="form-control" @bind="@selDtFine" id="dtMax" type="datetime-local">
<button @onclick="() => chiudiOdl()" class="btn btn-danger btn-sm btn-">Registra chiusura ODL <i class="far fa-stop-circle"></i></button>
</div>*@
<label class="input-group-text" for="dtMax"><i class="fa-regular fa-calendar-minus"></i></label>
<input class="form-control" @bind="@selDtFine" id="dtMax" type="datetime-local">
<button @onclick="() => chiudiOdl()" class="btn btn-danger btn-sm btn-">Registra chiusura ODL <i class="far fa-stop-circle"></i></button>
</div>*@
<button @onclick="() => chiudiOdl()" class="btn btn-danger btn-sm btn-">Registra chiusura ODL <i class="far fa-stop-circle"></i></button>
</div>
}
@@ -178,10 +179,6 @@ else
</div>
</div>
</td>
<td>
<!-- Modal -->
</td>
</tr>
</tbody>
</table>
@@ -224,7 +221,7 @@ else
</div>
<div class="progress">
<div class="progress-bar @colorChanger(@stat.Css)" role="progressbar" aria-valuenow="0" aria-valuemin="0" style="width: @Math.Round(calcolaPerc(stat.TotDurata),0)%; background-color:@stat.Css;" aria-valuemax="100">@($"{calcolaPerc(stat.TotDurata):N1}%")</div>
<div class="progress-bar @colorChanger(@stat.Css)" role="progressbar" aria-valuenow="0" aria-valuemin="0" style="width: @Math.Round(calcolaPerc(stat.TotDurata),0)%; background-color:@pbStyle(@stat.Css);" aria-valuemax="100">@($"{calcolaPerc(stat.TotDurata):N1}%")</div>
</div>
</div>
+110 -61
View File
@@ -1,14 +1,12 @@
using Microsoft.AspNetCore.Components;
using Microsoft.JSInterop;
using MP.Data;
using MP.Data.DatabaseModels;
using MP.SPEC.Data;
using MP.SPEC.Pages;
using System.Xml.Linq;
using MP.SPEC.Services;
namespace MP.SPEC.Components
{
public partial class ListODL
public partial class ListODL : IDisposable
{
#region Public Properties
@@ -40,39 +38,26 @@ namespace MP.SPEC.Components
return answ;
}
public void Dispose()
{
currRecord = null;
SearchRecords = null;
ListRecords = null;
ListStati = null;
ListOdlStats = null;
statRecord = null;
GC.Collect();
}
public string formDurata(double durataMin)
{
return MP.Data.Utils.FormDurata(durataMin);
}
//oggetto contenente le funzioni del code behind che sono jsInvokable
private DotNetObjectReference<ListODL>? objRef;
#if false //FUNZIONA SE IL METODO TriggerDotNetInstanceMethod() E' IN ONCLICK BOTTONE
[JSInvokable]
public void setHelper()
{
objRef = DotNetObjectReference.Create(this);
}
[JSInvokable]
public void svuotaRecord()
{
currRecord = null;
}
public async Task TriggerDotNetInstanceMethod()
{
await JSRuntime.InvokeVoidAsync("recordDeselect", objRef);
}
#endif
#endregion Public Methods
#region Protected Properties
[Inject]
protected IJSRuntime JSRuntime { get; set; } = null!;
@@ -80,7 +65,7 @@ namespace MP.SPEC.Components
protected MpDataService MDService { get; set; } = null!;
[Inject]
protected MessageService MessageService { get; set; } = null!;
protected IOApiService MpIoApiCall { get; set; } = null!;
#endregion Protected Properties
@@ -105,18 +90,6 @@ namespace MP.SPEC.Components
await reloadData();
}
protected override async Task OnInitializedAsync()
{
ListStati = await MDService.AnagStatiComm();
objRef = DotNetObjectReference.Create(this);
//await JSRuntime.InvokeVoidAsync("setHelper", objRef);
}
protected override async Task OnParametersSetAsync()
{
await reloadData();
}
protected string colorChanger(string colorCSS)
{
string answ = "";
@@ -127,13 +100,33 @@ namespace MP.SPEC.Components
return answ;
}
//protected double durataMin(DateTime? DataInizio, DateTime? DataFine)
//{
// DateTime end = DataInizio != null ? (DateTime)DataFine : DateTime.Now;
// var tsDurata = (end).Subtract((DateTime)DataInizio);
/// <summary>
/// Richiesta invio sync all'IOB-WIN
/// </summary>
/// <returns></returns>
protected async Task forceSyncDb()
{
if (!await JSRuntime.InvokeAsync<bool>("confirm", "Sei sicuro di voler reinviare i dati (Articoli, PODL) all'impianto?"))
return;
// return tsDurata.TotalMinutes;
//}
if (currRecord != null)
{
await callSyncDb(currRecord.IdxMacchina);
// ricarica...
await selectRecord(null);
}
await reloadData();
}
protected override async Task OnInitializedAsync()
{
ListStati = await MDService.AnagStatiComm();
}
protected override async Task OnParametersSetAsync()
{
await reloadData();
}
protected async void OnSeachUpdated()
{
@@ -167,6 +160,7 @@ namespace MP.SPEC.Components
ListOdlStats = null;
}
}
protected async Task selectStatRecord(ODLModel? currRec)
{
showStats = true;
@@ -205,8 +199,6 @@ namespace MP.SPEC.Components
private ODLModel? currRecord = null;
private ODLModel? statRecord = null;
private List<StatODLModel>? ListOdlStats;
private List<ODLModel>? ListRecords;
@@ -215,14 +207,18 @@ namespace MP.SPEC.Components
private List<ODLModel>? SearchRecords;
private ODLModel? statRecord = null;
#endregion Private Fields
#region Private Properties
private int _totalCount { get; set; } = 0;
private int currPage
{
get => MessageService.currPage;
set => MessageService.currPage = value;
get => currFilter.CurrPage;
set => currFilter.CurrPage = value;
}
/// <summary>
@@ -237,22 +233,49 @@ namespace MP.SPEC.Components
private int numRecord
{
get => MessageService.numRecord;
set => MessageService.numRecord = value;
get => currFilter.NumRec;
set => currFilter.NumRec = value;
}
private DateTime selDtFine { get; set; } = DateTime.Now;
private bool showStats { get; set; } = false;
#if false
private List<double>? ListOdlStatsData = new List<double>();
private List<string>? ListOdlStatsLabels = new List<string>();
#endif
private int totalCount { get; set; } = 0;
private int totalCount
{
get => _totalCount;
set
{
if (_totalCount != value)
{
_totalCount = value;
updateRecordCount.InvokeAsync(value);
}
}
}
#endregion Private Properties
#region Private Methods
/// <summary>
/// Chiama metodo x chiedere sync DB
/// </summary>
/// <param name="selRec"></param>
/// <returns></returns>
private async Task addTask2Exe(string idxMacc, string taskName, string taskVal)
{
// compongo URL e chiamo
string restUrl = $"IOB/addTask2Exe/{idxMacc}?taskName={taskName}&taskVal={taskVal}";
try
{
var response = await MpIoApiCall.callMpIoUrlGet(restUrl);
}
catch (Exception exc)
{
}
}
private double calcolaPerc(double durata)
{
double answ = 0;
@@ -278,9 +301,36 @@ namespace MP.SPEC.Components
return answ;
}
private async void MessageService_EA_PageUpdated()
/// <summary>
/// Chiama metodo x chiedere sync DB
/// </summary>
/// <param name="IdxMacc"></param>
/// <returns></returns>
private async Task callSyncDb(string IdxMacc)
{
await reloadData();
// chiamo aggiunta task SyncDb...
await addTask2Exe(IdxMacc, "syncDbData", "");
}
private string pbStyle(string css)
{
string answ = "";
if (ListOdlStats != null)
{
if (css == "yellow")
{
answ = "orange";
}
else if (css == "blue")
{
answ = "#2874A6";
}
else
{
answ = css;
}
}
return answ;
}
private async Task reloadData()
@@ -291,7 +341,6 @@ namespace MP.SPEC.Components
ListRecords = SearchRecords.Skip(numRecord * (currPage - 1)).Take(numRecord).ToList();
await Task.Delay(1);
await InvokeAsync(() => StateHasChanged());
await updateRecordCount.InvokeAsync(totalCount);
isLoading = false;
}
+4
View File
@@ -62,6 +62,10 @@ namespace MP.SPEC.Components
MessageService.EA_SearchUpdated -= OnSeachUpdated;
aTimer.Stop();
aTimer.Dispose();
currRecord = null;
SearchRecords = null;
ListRecords = null;
GC.Collect();
}
public void ElapsedTimer(object? source, System.Timers.ElapsedEventArgs e)
+1 -1
View File
@@ -1,7 +1,7 @@
@using MP.SPEC.Components
@using MP.SPEC.Data
@if (ListRecords == null)
@if (ListRecords == null || isLoading)
{
<LoadingData></LoadingData>
}
+46 -41
View File
@@ -6,10 +6,15 @@ using MP.SPEC.Services;
namespace MP.SPEC.Components
{
public partial class ListPODL
public partial class ListPODL : IDisposable
{
#region Public Properties
[Parameter]
public SelectPOdlParams actFilter { get; set; } = new SelectPOdlParams();
private SelectPOdlParams lastFilter { get; set; } = new SelectPOdlParams() { CurrPage = -1 };
[Parameter]
public EventCallback<bool> PagerResetReq { get; set; }
@@ -40,6 +45,15 @@ namespace MP.SPEC.Components
#endregion Public Methods
public void Dispose()
{
currRecord = null;
SearchRecords = null;
ListRecords = null;
ListStati = null;
GC.Collect();
}
#region Protected Properties
[Inject]
@@ -51,9 +65,6 @@ namespace MP.SPEC.Components
[Inject]
protected IOApiService MpIoApiCall { get; set; } = null!;
[Inject]
protected MessageService MsgService { get; set; } = null!;
#endregion Protected Properties
#region Protected Methods
@@ -103,15 +114,17 @@ namespace MP.SPEC.Components
protected override async Task OnInitializedAsync()
{
MsgService.EA_PageUpdated += MessageService_EA_PageUpdated;
MsgService.EA_SearchUpdated += OnSeachUpdated;
MsgService.EA_StatoSearch += MsgService_EA_StatoSearch;
//await FilterChanged.InvokeAsync(actFilter);
ListStati = await MDService.AnagStatiComm();
}
protected override async Task OnParametersSetAsync()
{
await reloadData();
if (!lastFilter.Equals(actFilter))
{
lastFilter = actFilter.clone();
await reloadData();
}
}
protected async void OnSeachUpdated()
@@ -210,32 +223,45 @@ namespace MP.SPEC.Components
#region Private Properties
private int _totalCount { get; set; } = 0;
private int currPage
{
get => MsgService.currPage;
set => MsgService.currPage = value;
get => actFilter.CurrPage;
set => actFilter.CurrPage = value;
}
private bool isLoading { get; set; } = false;
private int numRecord
{
get => MsgService.numRecord;
set => MsgService.numRecord = value;
get => actFilter.NumRec;
set => actFilter.NumRec = value;
}
private string SearchVal
{
get => string.IsNullOrEmpty(MsgService.SearchVal) ? "*" : MsgService.SearchVal;
get => string.IsNullOrEmpty(actFilter.SearchVal) ? "*" : actFilter.SearchVal;
}
private string StatoSel
{
get => MsgService.StateSel;
set => MsgService.StateSel = value;
get => actFilter.CodFase;
set => actFilter.CodFase = value;
}
private int totalCount { get; set; } = 0;
private int totalCount
{
get => _totalCount;
set
{
if (_totalCount != value)
{
_totalCount = value;
updateRecordCount.InvokeAsync(value);
}
}
}
#endregion Private Properties
@@ -254,7 +280,7 @@ namespace MP.SPEC.Components
{
var response = await MpIoApiCall.callMpIoUrlGet(restUrl);
}
catch(Exception exc)
catch (Exception exc)
{
}
}
@@ -290,11 +316,6 @@ namespace MP.SPEC.Components
{
// chiamo aggiunta task SyncDb...
await addTask2Exe(IdxMacc, "syncDbData", "");
#if false
string idxMacc = selRec.IdxMacchina;
string restUrl = $"IOB/addTask2Exe/{idxMacc}?taskName=syncDbData&taskVal=";
var response = await MpIoApiCall.callMpIoUrlGet(restUrl);
#endif
}
/// <summary>
@@ -304,27 +325,11 @@ namespace MP.SPEC.Components
/// <returns></returns>
private bool canStartOdl(string idxMacchina)
{
var currOdl = MDService.OdlGetCurrentByMacc(idxMacchina);
bool answ = currOdl == null;
var listOdlCurr = MDService.OdlGetCurrent();
bool answ = !listOdlCurr.Contains(idxMacchina);
return answ;
}
private async void MessageService_EA_PageUpdated()
{
await reloadData();
}
private async void MsgService_EA_StatoSearch()
{
await InvokeAsync(() =>
{
PagerResetReq.InvokeAsync(true);
//currPage = 1;
Task task = UpdateData();
StateHasChanged();
});
}
/// <summary>
/// processa evento richiesto
/// </summary>
@@ -367,7 +372,7 @@ namespace MP.SPEC.Components
ListRecords = SearchRecords.Skip(numRecord * (currPage - 1)).Take(numRecord).ToList();
await Task.Delay(1);
await InvokeAsync(() => StateHasChanged());
await updateRecordCount.InvokeAsync(totalCount);
//await updateRecordCount.InvokeAsync(totalCount);
isLoading = false;
}
+1 -1
View File
@@ -7,7 +7,7 @@
}
else
{
<MP.SPEC.Components.Chart.Doughnut Type="@Chart.Doughnut.ChartType.Doughnut" Data="@Data.ToArray()" BackgroundColor="@colors.ToArray()"></MP.SPEC.Components.Chart.Doughnut>
<MP.SPEC.Components.Chart.Doughnut Type="@Chart.Doughnut.ChartType.Doughnut" Data="@Data.ToArray()" BackgroundColor="@colors"></MP.SPEC.Components.Chart.Doughnut>
}
</div>
}
+15 -2
View File
@@ -49,7 +49,7 @@ namespace MP.SPEC.Components
public List<double> Data = new List<double>();
public List<string> Labels = new List<string>();
public List<string> colors = new List<string>();
public List<DoughnutStyling> colors = new List<DoughnutStyling>();
protected async Task ReloadData()
{
@@ -61,7 +61,20 @@ namespace MP.SPEC.Components
{
Data.Add(record.TotDurata);
Labels.Add($"{record.Descrizione} - {record.TotDurata:N1}min");
colors.Add($"{record.Css}");
if (record.Css == "yellow")
{
colors.Add(new DoughnutStyling("orange", "ccc"));
}
else if (record.Css == "blue")
{
colors.Add(new DoughnutStyling("#2874A6", "ccc"));
}
else
{
colors.Add(new DoughnutStyling(record.Css, "ccc"));
}
}
await Task.Delay(1);
isLoading = false;
+16
View File
@@ -0,0 +1,16 @@
using System.Drawing;
namespace MP.SPEC.Data
{
public class DoughnutStyling
{
public string color { get; set; }
public string border { get; set; }
public DoughnutStyling(string color, string border)
{
this.color = color;
this.border = border;
}
}
}
+13 -9
View File
@@ -665,38 +665,42 @@ namespace MP.SPEC.Data
}
/// <summary>
/// ODL corrente x macchina
/// ODL correnti (tutti)
/// </summary>
/// <param name="idxMacchina"></param>
/// <returns></returns>
public ODLModel OdlGetCurrentByMacc(string idxMacchina)
public List<string> OdlGetCurrent()
{
ODLModel dbResult = new ODLModel();
List<string> dbResult = new List<string>();
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
string readType = "DB";
string currKey = $"{redisOdlCurrByMac}:{idxMacchina}";
string currKey = $"{redisOdlCurrByMac}";
// cerco in redis dato valore sel macchina...
RedisValue rawData = redisDb.StringGet(currKey);
if (rawData.HasValue)
{
dbResult = JsonConvert.DeserializeObject<ODLModel>($"{rawData}");
try
{
dbResult = JsonConvert.DeserializeObject<List<string>>($"{rawData}");
}
catch
{ }
readType = "REDIS";
}
else
{
dbResult = dbController.OdlGetCurrentByMacc(idxMacchina);
// serializzp e salvo...
dbResult = dbController.OdlGetCurrent().Select(x => x.IdxMacchina).Distinct().ToList();
rawData = JsonConvert.SerializeObject(dbResult);
redisDb.StringSet(currKey, rawData, TimeSpan.FromSeconds(3));
}
if (dbResult == null)
{
dbResult = new ODLModel();
dbResult = new List<string>();
}
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Debug($"OdlGetCurrentByMacc | Read from {readType}: {ts.TotalMilliseconds}ms");
Log.Debug($"OdlGetCurrent | Read from {readType}: {ts.TotalMilliseconds}ms");
return dbResult;
+1
View File
@@ -17,6 +17,7 @@ namespace MP.SPEC.Data
public string IdxMacchina { get; set; } = "*";
public int CurrPage { get; set; } = 1;
public int NumRec { get; set; } = 10;
public int TotCount { get; set; } = 0;
public DateTime DtEnd { get; set; } = Utils.InitDatetime(DateTime.Now, 5);
public DateTime DtStart { get; set; } = Utils.InitDatetime(DateTime.Now, 5).AddDays(-7);
public int MaxRecord { get; set; } = 100;
+83
View File
@@ -0,0 +1,83 @@
namespace MP.SPEC.Data
{
public class SelectPOdlParams
{
#region Public Constructors
public SelectPOdlParams()
{ }
#endregion Public Constructors
#region Public Properties
public string CodFase { get; set; } = "*";
public int CurrPage { get; set; } = 1;
public string IdxMacchina { get; set; } = "*";
public int MaxRecord { get; set; } = 100;
public int NumRec { get; set; } = 10;
public string SearchVal { get; set; } = "*";
public int TotCount { get; set; } = 0;
#endregion Public Properties
#region Public Methods
public SelectPOdlParams clone()
{
SelectPOdlParams clonedData = new SelectPOdlParams()
{
CodFase = this.CodFase,
CurrPage = this.CurrPage,
IdxMacchina = this.IdxMacchina,
MaxRecord = this.MaxRecord,
NumRec = this.NumRec,
SearchVal = this.SearchVal,
TotCount = this.TotCount
};
return clonedData;
}
public override bool Equals(object obj)
{
if (!(obj is SelectPOdlParams item))
return false;
if (CodFase != item.CodFase)
return false;
if (MaxRecord != item.MaxRecord)
return false;
if (NumRec != item.NumRec)
return false;
if (TotCount != item.TotCount)
return false;
if (CurrPage != item.CurrPage)
return false;
if (IdxMacchina != item.IdxMacchina)
return false;
if (SearchVal != item.SearchVal)
return false;
return true;
}
public override int GetHashCode()
{
return base.GetHashCode();
}
#endregion Public Methods
}
}
+1 -1
View File
@@ -5,7 +5,7 @@
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<RootNamespace>MP.SPEC</RootNamespace>
<Version>6.16.2210.1810</Version>
<Version>6.16.2210.1817</Version>
</PropertyGroup>
<ItemGroup>
+6
View File
@@ -27,6 +27,12 @@ namespace MP.SPEC.Pages
public void Dispose()
{
MessageService.EA_SearchUpdated -= OnSeachUpdated;
currRecord = null;
ListTipoArt = null;
ListAziende = null;
SearchRecords = null;
ListRecords = null;
GC.Collect();
}
public async void OnSeachUpdated()
+7 -18
View File
@@ -26,7 +26,7 @@ namespace MP.SPEC.Pages
#region Protected Fields
protected DataPager pagerODL;
protected DataPager pagerODL = null!;
#endregion Protected Fields
@@ -44,9 +44,6 @@ namespace MP.SPEC.Pages
[Inject]
protected MpDataService MDService { get; set; } = null!;
[Inject]
protected MessageService MsgService { get; set; } = null!;
protected DateTime selDtEnd
{
get => currFilter.DtEnd;
@@ -87,16 +84,8 @@ namespace MP.SPEC.Pages
protected override async Task OnInitializedAsync()
{
// abilito ricerca...
MsgService.ShowSearch = true;
// resetto search
MsgService.SearchVal = "";
ListStati = await MDService.AnagStatiComm();
ListMacchine = await MDService.MacchineWithFlux();
#if false
// carico dati
await reloadData();
#endif
}
protected async Task pgResetReq(bool doReset)
@@ -134,8 +123,8 @@ namespace MP.SPEC.Pages
private int currPage
{
get => MsgService.currPage;
set => MsgService.currPage = value;
get => currFilter.CurrPage;
set => currFilter.CurrPage = value;
}
private bool isLoading { get; set; } = false;
@@ -147,8 +136,8 @@ namespace MP.SPEC.Pages
private int numRecord
{
get => MsgService.numRecord;
set => MsgService.numRecord = value;
get => currFilter.NumRec;
set => currFilter.NumRec = value;
}
private string rightStringCSS
@@ -169,8 +158,8 @@ namespace MP.SPEC.Pages
private int totalCount
{
get => MsgService.totalCount;
set => MsgService.totalCount = value;
get => currFilter.TotCount;
set => currFilter.TotCount = value;
}
#endregion Private Properties
+8 -11
View File
@@ -4,7 +4,7 @@
<div class="card mb-5">
<div class="card-header table-primary">
<div class="d-flex justify-content-between">
<div class="col-6">
<div class="col-6 col-lg-8">
<div class="d-flex">
<div class="px-2">
<h3><b>P</b>romesse <b>ODL</b></h3>
@@ -17,9 +17,9 @@
</div>
</div>
</div>
<div class="col-6">
<div class="col-6 col-lg-4">
<div class="input-group input-group-sm">
<label class="input-group-text" for="maxRecord" title="Selezionare l'azienda da visualizzare"><i class="fa-solid fa-industry"></i></label>
@*<label class="input-group-text" for="maxRecord" title="Selezionare l'azienda da visualizzare"><i class="fa-solid fa-industry"></i></label>
<select @bind="@currAzienda" class="form-select" title="Selezionare l'azienda da visualizzare">
@if (ListAziende != null)
{
@@ -28,9 +28,9 @@
<option value="@item.CodGruppo">@item.DescrGruppo</option>
}
}
</select>
</select>*@
<label class="input-group-text" for="maxRecord" title="Selezionare la fase da visualizzare"><i class="fa-solid fa-screwdriver-wrench"></i></label>
<select @bind="@selStato" class="form-select" title="Selezionare la fase da visualizzare">
<select @bind="@currFase" class="form-select" title="Selezionare la fase da visualizzare">
<option value="*">--- Tutti ---</option>
@if (ListStati != null)
{
@@ -222,13 +222,10 @@
}
else
{
<ListPODL PagerResetReq="pgResetReq" RecordSel="@selRecord" updateRecordCount="UpdateTotCount"></ListPODL>
<ListPODL PagerResetReq="pgResetReq" RecordSel="@selRecord" updateRecordCount="UpdateTotCount" actFilter="@currFilter"></ListPODL>
}
</div>
<div class="card-footer py-1">
<DataPager @ref="pagerODL" PageSize="numRecord" currPage="currPage" numRecordChanged="ForceReload" numPageChanged="ForceReloadPage" totalCount="totalCount" showLoading="isLoading" />
<DataPager @ref="pagerODL" PageSize="numRecord" currPage="currPage" numRecordChanged="ForceReload" numPageChanged="ForceReloadPage" totalCount="totalCount" showLoading="@isLoading" />
</div>
</div>
</div>
+21 -26
View File
@@ -11,7 +11,7 @@ namespace MP.SPEC.Pages
{
#region Protected Fields
protected DataPager pagerODL;
protected DataPager pagerODL = null!;
protected bool reqNew = false;
@@ -28,9 +28,6 @@ namespace MP.SPEC.Pages
[Inject]
protected IOApiService MpIoApiCall { get; set; } = null!;
[Inject]
protected MessageService MsgService { get; set; } = null!;
[Inject]
protected NavigationManager NavManager { get; set; } = null!;
@@ -70,10 +67,6 @@ namespace MP.SPEC.Pages
protected override async Task OnInitializedAsync()
{
// abilito ricerca...
MsgService.ShowSearch = true;
// resetto search
MsgService.SearchVal = "";
ListAziende = await MDService.ElencoAziende();
ListGruppiFase = await MDService.ElencoGruppiFase();
ListMacchine = await MDService.MacchineGetAll();
@@ -110,7 +103,7 @@ namespace MP.SPEC.Pages
var firstArt = ListArticoli.FirstOrDefault();
currArticolo = firstArt != null ? firstArt.CodArticolo : "";
}
string codExt = $"{selStato}";
string codExt = $"{currFase}";
string codGruppo = "";
if (ListGruppiFase != null && ListGruppiFase.Count > 0)
{
@@ -170,15 +163,10 @@ namespace MP.SPEC.Pages
#region Private Fields
private PODLModel? _currRecord = null;
private List<AnagArticoli>? ListArticoli;
private List<AnagGruppi>? ListAziende;
private List<AnagGruppi>? ListGruppiFase;
private List<Macchine>? ListMacchine;
private List<ListValues>? ListStati;
#endregion Private Fields
@@ -186,12 +174,11 @@ namespace MP.SPEC.Pages
#region Private Properties
private string _artSearch { get; set; } = "";
private string _currAzienda { get; set; } = "*";
private bool addEnabled
{
get => selStato != "*";
get => currFase != "*";
}
private string artSearch
@@ -217,7 +204,6 @@ namespace MP.SPEC.Pages
}
private List<ConfigModel>? configData { get; set; } = null;
private string currArticolo { get; set; } = "";
private string currAzienda
@@ -237,10 +223,12 @@ namespace MP.SPEC.Pages
}
}
private SelectPOdlParams currFilter { get; set; } = new SelectPOdlParams();
private int currPage
{
get => MsgService.currPage;
set => MsgService.currPage = value;
get => currFilter.CurrPage;
set => currFilter.CurrPage = value;
}
private PODLModel? currRecord
@@ -257,20 +245,27 @@ namespace MP.SPEC.Pages
private int numRecord
{
get => MsgService.numRecord;
set => MsgService.numRecord = value;
get => currFilter.NumRec;
set => currFilter.NumRec = value;
}
private string selStato
private string currFase
{
get => MsgService.StateSel;
set => MsgService.StateSel = value;
get => currFilter.CodFase;
set
{
if (!currFilter.CodFase.Equals(value))
{
currFilter.CodFase = value;
currPage = 1;
}
}
}
private int totalCount
{
get => MsgService.totalCount;
set => MsgService.totalCount = value;
get => currFilter.TotCount;
set => currFilter.TotCount = value;
}
#endregion Private Properties
+1 -1
View File
@@ -1,6 +1,6 @@
<body>
<i>Modulo MAPOSPEC </i>
<h4>Versione: 6.16.2210.1810</h4>
<h4>Versione: 6.16.2210.1817</h4>
<br /> Note di rilascio:
<ul>
<li>
+1 -1
View File
@@ -1 +1 @@
6.16.2210.1810
6.16.2210.1817
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>6.16.2210.1810</version>
<version>6.16.2210.1817</version>
<url>https://nexus.steamware.net/repository/SWS/MP-SPEC/stable/LAST/MP.SPEC.zip</url>
<changelog>https://nexus.steamware.net/repository/SWS/MP-SPEC/stable/LAST/ChangeLog.html</changelog>
<mandatory>false</mandatory>