diff --git a/LiMan.Api/Resources/ChangeLog.html b/LiMan.Api/Resources/ChangeLog.html
index 5bae216..3a120eb 100644
--- a/LiMan.Api/Resources/ChangeLog.html
+++ b/LiMan.Api/Resources/ChangeLog.html
@@ -1,6 +1,6 @@
License Manager
- Versione: 2.1.2512.0319
+ Versione: 2.1.2512.0409
Note di rilascio:
-
diff --git a/LiMan.Api/Resources/VersNum.txt b/LiMan.Api/Resources/VersNum.txt
index 51f8dad..ecc9a2a 100644
--- a/LiMan.Api/Resources/VersNum.txt
+++ b/LiMan.Api/Resources/VersNum.txt
@@ -1 +1 @@
-2.1.2512.0319
+2.1.2512.0409
diff --git a/LiMan.Api/Resources/manifest.xml b/LiMan.Api/Resources/manifest.xml
index ffeceb1..aadcecd 100644
--- a/LiMan.Api/Resources/manifest.xml
+++ b/LiMan.Api/Resources/manifest.xml
@@ -1,6 +1,6 @@
-
- 2.1.2512.0319
+ 2.1.2512.0409
https://nexus.steamware.net/repository/SWS/LiMan/stable/LAST/LiMan.UI.zip
https://nexus.steamware.net/repository/SWS/LiMan/stable/LAST/ChangeLog.html
false
diff --git a/LiMan.Transfer/Resources/ChangeLog.html b/LiMan.Transfer/Resources/ChangeLog.html
index 783c866..d9b72b4 100644
--- a/LiMan.Transfer/Resources/ChangeLog.html
+++ b/LiMan.Transfer/Resources/ChangeLog.html
@@ -1,6 +1,6 @@
License Manager
-
Versione: 2.1.2512.0318
+ Versione: 2.1.2512.0409
Note di rilascio:
diff --git a/LiMan.Transfer/Resources/VersNum.txt b/LiMan.Transfer/Resources/VersNum.txt
index 39301c2..ecc9a2a 100644
--- a/LiMan.Transfer/Resources/VersNum.txt
+++ b/LiMan.Transfer/Resources/VersNum.txt
@@ -1 +1 @@
-2.1.2512.0318
+2.1.2512.0409
diff --git a/LiMan.Transfer/Resources/manifest.xml b/LiMan.Transfer/Resources/manifest.xml
index 3ec5f15..a3ba9e0 100644
--- a/LiMan.Transfer/Resources/manifest.xml
+++ b/LiMan.Transfer/Resources/manifest.xml
@@ -1,6 +1,6 @@
-
- 2.1.2512.0318
+ 2.1.2512.0409
https://nexus.steamware.net/repository/SWS/LiMan/stable/LAST/LiMan.Transfer.zip
https://nexus.steamware.net/repository/SWS/LiMan/stable/LAST/ChangeLog.html
false
diff --git a/LiMan.UI/Components/AggregateStats.razor.cs b/LiMan.UI/Components/AggregateStats.razor.cs
index 4b25aa6..b0c53c9 100644
--- a/LiMan.UI/Components/AggregateStats.razor.cs
+++ b/LiMan.UI/Components/AggregateStats.razor.cs
@@ -18,7 +18,7 @@ namespace LiMan.UI.Components
public void Dispose()
{
LMDService.EnrollMessPipe.EA_NewMessage -= async (sender, e) => await EnrollMessPipe_EA_NewMessage(sender, e);
- LMDService.UpdActMessPipe.EA_NewMessage -= async (sender, e) => await TaskMessPipe_EA_NewMessage(sender, e);
+ LMDService.UpdActMessPipe.EA_NewMessage -= async (sender, e) => await UpdActMessPipe_EA_NewMessage(sender, e);
MServ.EA_SelCodImp -= async () => await MServ_EA_SelCodImp();
MServ.EA_SelCodInst -= async () => await MServ_EA_SelCodInst();
}
@@ -89,7 +89,7 @@ namespace LiMan.UI.Components
protected override async Task OnInitializedAsync()
{
LMDService.EnrollMessPipe.EA_NewMessage += async (sender, e) => await EnrollMessPipe_EA_NewMessage(sender, e);
- LMDService.UpdActMessPipe.EA_NewMessage += async (sender, e) => await TaskMessPipe_EA_NewMessage(sender, e);
+ LMDService.UpdActMessPipe.EA_NewMessage += async (sender, e) => await UpdActMessPipe_EA_NewMessage(sender, e);
MServ.EA_SelCodImp += async () => await MServ_EA_SelCodImp();
MServ.EA_SelCodInst += async () => await MServ_EA_SelCodInst();
await ReloadLicData();
@@ -127,6 +127,11 @@ namespace LiMan.UI.Components
///
private Dictionary TaskRun = new Dictionary();
+ ///
+ /// Status degli udpater da mostrare
+ ///
+ private Core.Enum.UpdStatus UpdStatusReq = Core.Enum.UpdStatus.None;
+
#endregion Private Fields
#region Private Properties
@@ -151,9 +156,8 @@ namespace LiMan.UI.Components
[Inject]
private IJSRuntime JSRuntime { get; set; }
- private Dictionary ListDevices { get; set; } = new Dictionary();
private List ListDev2Show { get; set; } = new List();
-
+ private Dictionary ListDevices { get; set; } = new Dictionary();
#endregion Private Properties
@@ -164,6 +168,21 @@ namespace LiMan.UI.Components
return numRec > 0 ? cssAct : "text-secondary";
}
+ ///
+ /// lancio richiesta udpate app info x ogni IMP gestito...
+ ///
+ private async Task DoMassiveRequest(Core.Enum.EgwAccTask reqType)
+ {
+ if (!await JSRuntime.InvokeAsync("confirm", $"Sicuro di voler inviare un comando di {reqType} a tutti i devices?"))
+ return;
+
+ if (!await JSRuntime.InvokeAsync("confirm", $"Sicuro di voler proseguire? Verranno interesati {InfoStats.TotalUpdaterAct} devices."))
+ return;
+
+ var listCodImp = InfoStats.InstDevices.Select(x => x.Value.CodImp).ToList();
+ LMDService.TaskReqAdd(listCodImp, reqType, $"{DateTime.Now:yyyy-MM-dd HH:mm:ss}");
+ }
+
///
/// Evento refresh legato a ricezione evento da MessagePipe
///
@@ -184,55 +203,6 @@ namespace LiMan.UI.Components
}
}
- ///
- /// Status degli udpater da mostrare
- ///
- private Core.Enum.UpdStatus UpdStatusReq = Core.Enum.UpdStatus.None;
-
- ///
- /// Imposta status visualizzazione dettaglio
- ///
- ///
- private async void ShowDetail(Core.Enum.UpdStatus newStatus)
- {
- UpdStatusReq = newStatus;
- ListDev2Show = new List();
- Dictionary dictCurr = new Dictionary();
- switch (UpdStatusReq)
- {
- case Core.Enum.UpdStatus.Pending:
- dictCurr = TaskReq;
- break;
- case Core.Enum.UpdStatus.Running:
- dictCurr = TaskRun;
- break;
- case Core.Enum.UpdStatus.Done:
- dictCurr = TaskDone;
- break;
- case Core.Enum.UpdStatus.None:
- default:
- break;
- }
- // filtro x stato richiesto...
- List list2show = new List();
- foreach (var item in ListDevices)
- {
- if (dictCurr.ContainsKey(item.Key))
- {
- // sistemo dataora in obj...
- string rawDate = dictCurr[item.Key];
- if (DateTime.TryParse(rawDate, out var date))
- {
- item.Value.LastUpdate = date;
- }
- list2show.Add(item.Value);
- }
- }
- ListDev2Show = list2show;
- await InvokeAsync(StateHasChanged);
- }
-
-
///
/// Selezionato CodImp (PC)
///
@@ -318,18 +288,49 @@ namespace LiMan.UI.Components
}
///
- /// lancio richiesta udpate app info x ogni IMP gestito...
+ /// Imposta status visualizzazione dettaglio
///
- private async Task DoMassiveRequest(Core.Enum.EgwAccTask reqType)
+ ///
+ private async void ShowDetail(Core.Enum.UpdStatus newStatus)
{
- if (!await JSRuntime.InvokeAsync("confirm", $"Sicuro di voler inviare un comando di {reqType} a tutti i devices?"))
- return;
+ UpdStatusReq = newStatus;
+ ListDev2Show = new List();
+ Dictionary dictCurr = new Dictionary();
+ switch (UpdStatusReq)
+ {
+ case Core.Enum.UpdStatus.Pending:
+ dictCurr = TaskReq;
+ break;
- if (!await JSRuntime.InvokeAsync("confirm", $"Sicuro di voler proseguire? Verranno interesati {InfoStats.TotalUpdaterAct} devices."))
- return;
+ case Core.Enum.UpdStatus.Running:
+ dictCurr = TaskRun;
+ break;
- var listCodImp = InfoStats.InstDevices.Select(x => x.Value.CodImp).ToList();
- LMDService.TaskReqAdd(listCodImp, reqType, $"{DateTime.Now:yyyy-MM-dd HH:mm:ss}");
+ case Core.Enum.UpdStatus.Done:
+ dictCurr = TaskDone;
+ break;
+
+ case Core.Enum.UpdStatus.None:
+ default:
+ break;
+ }
+ // filtro x stato richiesto...
+ List list2show = new List();
+ foreach (var item in ListDevices)
+ {
+ if (dictCurr.ContainsKey(item.Key))
+ {
+ // sistemo dataora in obj...
+ string rawDate = dictCurr[item.Key];
+ if (DateTime.TryParse(rawDate, out var date))
+ {
+ item.Value.LastUpdate = date;
+ }
+ list2show.Add(item.Value);
+ }
+ }
+ ListDev2Show = list2show;
+ await InvokeAsync(StateHasChanged);
}
///
@@ -337,7 +338,7 @@ namespace LiMan.UI.Components
///
///
///
- private async Task TaskMessPipe_EA_NewMessage(object sender, EventArgs e)
+ private async Task UpdActMessPipe_EA_NewMessage(object sender, EventArgs e)
{
PubSubEventArgs currArgs = (PubSubEventArgs)e;
// qualsiasi messaggio fa scattare reload data
diff --git a/LiMan.UI/Components/InstAppPareto.razor.cs b/LiMan.UI/Components/InstAppPareto.razor.cs
index 63e43ed..d0e3581 100644
--- a/LiMan.UI/Components/InstAppPareto.razor.cs
+++ b/LiMan.UI/Components/InstAppPareto.razor.cs
@@ -32,13 +32,16 @@ namespace LiMan.UI.Components
public void Dispose()
{
- LMDService.UpdActMessPipe.EA_NewMessage -= async (sender, e) => await TaskMessPipe_EA_NewMessage(sender, e);
+ LMDService.TaskMessPipe.EA_NewMessage -= async (sender, e) => await TaskMessPipe_EA_NewMessage(sender, e);
}
#endregion Public Methods
#region Protected Properties
+ [Inject]
+ protected IJSRuntime JSRuntime { get; set; } = null!;
+
protected List ListRecord { get; set; } = new List();
[Inject]
@@ -51,34 +54,11 @@ namespace LiMan.UI.Components
#endregion Protected Properties
- ///
- /// Registrazione richiesta update app remota
- ///
- ///
- ///
- private async Task ProcReqUpdate(AppRelStatusDTO selRec)
- {
-
- if (!await JSRuntime.InvokeAsync("confirm", $"Sicuro di voler forzare update applicativo {selRec.CodApp} sul Device? Eventuali configurazioni presenti saranno ripristinate, altrimenti andrà verificato manualmente l'esito dell'operazione."))
- return;
-
- // invio task update applicazione
- LMDService.TaskReqAdd(CodImpSel, EgwAccTask.TargetAppUpdate, selRec.CodApp);
- ReloadTaskStatus();
- ReloadTaskResults();
- // invio notifica update...
- LMDService.UpdActMessPipe.sendMessage(selRec.CodApp);
- }
-
- [Inject]
- protected IJSRuntime JSRuntime { get; set; } = null!;
-
-
#region Protected Methods
protected override void OnInitialized()
{
- LMDService.UpdActMessPipe.EA_NewMessage += async (sender, e) => await TaskMessPipe_EA_NewMessage(sender, e);
+ LMDService.TaskMessPipe.EA_NewMessage += async (sender, e) => await TaskMessPipe_EA_NewMessage(sender, e);
}
protected override void OnParametersSet()
@@ -378,6 +358,24 @@ namespace LiMan.UI.Components
ReloadTaskResults();
}
+ ///
+ /// Registrazione richiesta update app remota
+ ///
+ ///
+ ///
+ private async Task ProcReqUpdate(AppRelStatusDTO selRec)
+ {
+ if (!await JSRuntime.InvokeAsync("confirm", $"Sicuro di voler forzare update applicativo {selRec.CodApp} sul Device? Eventuali configurazioni presenti saranno ripristinate, altrimenti andrà verificato manualmente l'esito dell'operazione."))
+ return;
+
+ // invio task update applicazione
+ LMDService.TaskReqAdd(CodImpSel, EgwAccTask.TargetAppUpdate, selRec.CodApp);
+ ReloadTaskStatus();
+ ReloadTaskResults();
+ // invio notifica update...
+ LMDService.UpdActMessPipe.sendMessage(selRec.CodApp);
+ }
+
private void ReloadCharts()
{
// sistemo info x grafico... se ho impieghi uso quello, altrimenti istanze...
@@ -488,7 +486,7 @@ namespace LiMan.UI.Components
default:
SearchRecord = SearchRecord
.OrderByDescending(x => x.VersNumInstall)
- .ThenBy(x=>x.CodInst)
+ .ThenBy(x => x.CodInst)
.ThenBy(x => x.PcInst)
.ToList();
break;
diff --git a/LiMan.UI/Components/InstallInfoStats.razor.cs b/LiMan.UI/Components/InstallInfoStats.razor.cs
index dd90d31..ae29770 100644
--- a/LiMan.UI/Components/InstallInfoStats.razor.cs
+++ b/LiMan.UI/Components/InstallInfoStats.razor.cs
@@ -1,16 +1,13 @@
-using Core.Models;
using LiMan.DB;
using LiMan.DB.DBModels;
using LiMan.DB.DTO;
using LiMan.UI.Data;
using Microsoft.AspNetCore.Components;
using Microsoft.JSInterop;
-using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
-using ZXing.OneD;
using static Core.Enum;
namespace LiMan.UI.Components
@@ -22,7 +19,8 @@ namespace LiMan.UI.Components
public void Dispose()
{
LMDService.EnrollMessPipe.EA_NewMessage -= async (sender, e) => await EnrollMessPipe_EA_NewMessage(sender, e);
- LMDService.UpdActMessPipe.EA_NewMessage -= async (sender, e) => await TaskMessPipe_EA_NewMessage(sender, e);
+ LMDService.TaskMessPipe.EA_NewMessage -= async (sender, e) => await TaskMessPipe_EA_NewMessage(sender, e);
+ LMDService.UpdActMessPipe.EA_NewMessage -= async (sender, e) => await UpdActMessPipe_EA_NewMessage(sender, e);
MServ.EA_SelCodApp -= async () => await MServ_EA_SelCodApp();
MServ.EA_SelCodImp -= async () => await MServ_EA_SelCodImp();
MServ.EA_SelCodInst -= async () => await MServ_EA_SelCodInst();
@@ -97,7 +95,8 @@ namespace LiMan.UI.Components
protected override async Task OnInitializedAsync()
{
LMDService.EnrollMessPipe.EA_NewMessage += async (sender, e) => await EnrollMessPipe_EA_NewMessage(sender, e);
- LMDService.UpdActMessPipe.EA_NewMessage += async (sender, e) => await TaskMessPipe_EA_NewMessage(sender, e);
+ LMDService.TaskMessPipe.EA_NewMessage += async (sender, e) => await TaskMessPipe_EA_NewMessage(sender, e);
+ LMDService.UpdActMessPipe.EA_NewMessage += async (sender, e) => await UpdActMessPipe_EA_NewMessage(sender, e);
MServ.EA_SelCodApp += async () => await MServ_EA_SelCodApp();
MServ.EA_SelCodImp += async () => await MServ_EA_SelCodImp();
MServ.EA_SelCodInst += async () => await MServ_EA_SelCodInst();
@@ -111,6 +110,12 @@ namespace LiMan.UI.Components
private string CodDeviceSel = "";
private string codInstSel = "";
+
+ ///
+ /// Secondi di debounce x evitare reload continui
+ ///
+ private int debounceSec = 5;
+
private Dictionary DetailFilt = new Dictionary();
///
@@ -120,6 +125,12 @@ namespace LiMan.UI.Components
private bool HasFiltClienti = false;
private bool HasFiltImpiego = false;
+
+ ///
+ /// DataOra ultimo reload
+ ///
+ private DateTime lastReload = DateTime.Now;
+
private List ListInstall;
///
@@ -205,7 +216,7 @@ namespace LiMan.UI.Components
}
///
- /// Evento refresh legato a ricezione evento da MessagePipe
+ /// Evento refresh legato a ricezione evento da MessagePipe di Enroll
///
///
///
@@ -224,8 +235,6 @@ namespace LiMan.UI.Components
}
}
-
-
///
/// Selezionato CodApp (Singola app, molti PC)
///
@@ -397,7 +406,6 @@ namespace LiMan.UI.Components
/// Parametri opzionali x svolgiimento
private async Task SendTask(EgwAccTask reqTask, string optPar = "")
{
-
// se parametro vuoto metto dataora...
optPar = string.IsNullOrEmpty(optPar) ? $"{DateTime.Now:yyyy-MM-dd HH:mm:ss}" : optPar;
if (!string.IsNullOrEmpty(CodImpSel))
@@ -429,24 +437,17 @@ namespace LiMan.UI.Components
}
///
- /// Evento refresh legato a ricezione evento da MessagePipe
+ /// Evento refresh legato a ricezione evento da MessagePipe TASK
///
///
///
private async Task TaskMessPipe_EA_NewMessage(object sender, EventArgs e)
{
PubSubEventArgs currArgs = (PubSubEventArgs)e;
- // qualsiasi messaggio fa scattare reload data
+ // qualsiasi messaggio TASK fa scattare...
if (!string.IsNullOrEmpty(currArgs.newMessage))
{
isLoading = true;
- InfoStats = null;
-#if false
- // svuoto cache preliminarmente
- await LMDService.ResetInstallStatus();
-#endif
- await ReloadLicData();
- await ReloadData();
ReloadTaskStatus();
isLoading = false;
await InvokeAsync(StateHasChanged);
@@ -473,6 +474,30 @@ namespace LiMan.UI.Components
}
}
+ ///
+ /// Evento refresh legato a ricezione evento da MessagePipe Update
+ ///
+ ///
+ ///
+ private async Task UpdActMessPipe_EA_NewMessage(object sender, EventArgs e)
+ {
+ PubSubEventArgs currArgs = (PubSubEventArgs)e;
+ DateTime adesso = DateTime.Now;
+ // qualsiasi messaggio (dopo debounceSec sec dal precedente) fa scattare reload data
+ if (!string.IsNullOrEmpty(currArgs.newMessage) && adesso.Subtract(lastReload).TotalSeconds > debounceSec)
+ {
+ lastReload = adesso;
+ isLoading = true;
+#if false
+ InfoStats = null;
+#endif
+ await ReloadLicData();
+ await ReloadData();
+ isLoading = false;
+ await InvokeAsync(StateHasChanged);
+ }
+ }
+
#endregion Private Methods
}
}
\ No newline at end of file
diff --git a/LiMan.UI/LiMan.UI.csproj b/LiMan.UI/LiMan.UI.csproj
index 81e05bf..dcb143c 100644
--- a/LiMan.UI/LiMan.UI.csproj
+++ b/LiMan.UI/LiMan.UI.csproj
@@ -2,7 +2,7 @@
net6.0
- 2.1.2512.0318
+ 2.1.2512.0409
LiMan.UI
LiMan.UI
diff --git a/LiMan.UI/Resources/ChangeLog.html b/LiMan.UI/Resources/ChangeLog.html
index 38eddc2..3a120eb 100644
--- a/LiMan.UI/Resources/ChangeLog.html
+++ b/LiMan.UI/Resources/ChangeLog.html
@@ -1,6 +1,6 @@
License Manager
-
Versione: 2.1.2512.0318
+ Versione: 2.1.2512.0409
Note di rilascio:
-
diff --git a/LiMan.UI/Resources/VersNum.txt b/LiMan.UI/Resources/VersNum.txt
index 39301c2..ecc9a2a 100644
--- a/LiMan.UI/Resources/VersNum.txt
+++ b/LiMan.UI/Resources/VersNum.txt
@@ -1 +1 @@
-2.1.2512.0318
+2.1.2512.0409
diff --git a/LiMan.UI/Resources/manifest.xml b/LiMan.UI/Resources/manifest.xml
index 03389bf..aadcecd 100644
--- a/LiMan.UI/Resources/manifest.xml
+++ b/LiMan.UI/Resources/manifest.xml
@@ -1,6 +1,6 @@
-
- 2.1.2512.0318
+ 2.1.2512.0409
https://nexus.steamware.net/repository/SWS/LiMan/stable/LAST/LiMan.UI.zip
https://nexus.steamware.net/repository/SWS/LiMan/stable/LAST/ChangeLog.html
false