From 6c3cf425f2da604c2444124b85158157fc07ddc5 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Fri, 18 Oct 2024 18:15:54 +0200 Subject: [PATCH] COmpletata gestione LAND: - gestione backup conf app OK - gestione tab salvate come json OK - gestione IOB OK - gestione zip + pwd OK - gestione upload OK (debug su DEV, poi in prod) --- MP.AppAuth/Controllers/MPController .cs | 112 +++++++++++ MP.AppAuth/Models/AnagraficaEventi.cs | 45 +++++ MP.AppAuth/Models/AnagraficaStati.cs | 39 ++++ .../Models/{ListValue.cs => ListValues.cs} | 4 +- MP.AppAuth/MoonProContext.cs | 36 ++-- MP.Land/Data/AppAuthService.cs | 116 ++++++++++++ MP.Land/MP.Land.csproj | 2 +- MP.Land/Pages/UpdateManager.razor.cs | 177 ++++++++++++------ MP.Land/Resources/ChangeLog.html | 2 +- MP.Land/Resources/VersNum.txt | 2 +- MP.Land/Resources/manifest.xml | 2 +- 11 files changed, 456 insertions(+), 81 deletions(-) create mode 100644 MP.AppAuth/Models/AnagraficaEventi.cs create mode 100644 MP.AppAuth/Models/AnagraficaStati.cs rename MP.AppAuth/Models/{ListValue.cs => ListValues.cs} (78%) diff --git a/MP.AppAuth/Controllers/MPController .cs b/MP.AppAuth/Controllers/MPController .cs index ad8fbaea..62d245ec 100644 --- a/MP.AppAuth/Controllers/MPController .cs +++ b/MP.AppAuth/Controllers/MPController .cs @@ -28,6 +28,118 @@ namespace MP.AppAuth.Controllers #region Public Methods + /// + /// Elenco Record x AnagCauSca + /// + /// + public List AnagCauSca() + { + List dbResult = new List(); + using (MoonProContext localDbCtx = new MoonProContext(_configuration)) + { + dbResult = localDbCtx + .DbSetAnagCauSca + .ToList(); + } + return dbResult; + } + + /// + /// Elenco Record x AnagClassiTempo + /// + /// + public List AnagClassiTempo() + { + List dbResult = new List(); + using (MoonProContext localDbCtx = new MoonProContext(_configuration)) + { + dbResult = localDbCtx + .DbSetAnagClassiTempo + .ToList(); + } + return dbResult; + } + + /// + /// Elenco Record x AnagraficaEventi + /// + /// + public List AnagEventi() + { + List dbResult = new List(); + using (MoonProContext localDbCtx = new MoonProContext(_configuration)) + { + dbResult = localDbCtx + .DbSetAnagEventi + .ToList(); + } + return dbResult; + } + + /// + /// Elenco Record x AnagraficaIngressi + /// + /// + public List AnagIngressi() + { + List dbResult = new List(); + using (MoonProContext localDbCtx = new MoonProContext(_configuration)) + { + dbResult = localDbCtx + .DbSetAnagIngressi + .ToList(); + } + return dbResult; + } + + /// + /// Elenco Record x AnagMicroStati + /// + /// + public List AnagMicroStati() + { + List dbResult = new List(); + using (MoonProContext localDbCtx = new MoonProContext(_configuration)) + { + dbResult = localDbCtx + .DbSetAnagMicroStati + .ToList(); + } + return dbResult; + } + + /// + /// Elenco Record x AnagraficaStati + /// + /// + public List AnagStati() + { + List dbResult = new List(); + using (MoonProContext localDbCtx = new MoonProContext(_configuration)) + { + dbResult = localDbCtx + .DbSetAnagStati + .ToList(); + } + return dbResult; + } + + /// + /// Elenco Record x ListValues + /// + /// + public List ListValues() + { + List dbResult = new List(); + using (MoonProContext localDbCtx = new MoonProContext(_configuration)) + { + dbResult = localDbCtx + .DbSetListValue + .ToList(); + } + return dbResult; + } + /// /// Delete Record AnagKeyValue /// diff --git a/MP.AppAuth/Models/AnagraficaEventi.cs b/MP.AppAuth/Models/AnagraficaEventi.cs new file mode 100644 index 00000000..17b80a88 --- /dev/null +++ b/MP.AppAuth/Models/AnagraficaEventi.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +#nullable disable + +namespace MP.AppAuth.Models +{ + [Table("AnagraficaEventi")] + public partial class AnagraficaEventi + { + #region Public Properties + + [Key] + public int IdxTipo { get; set; } = 0; + + [MaxLength(50)] + public string Nome { get; set; } = ""; + + [MaxLength(50)] + public string TabAzione { get; set; } = ""; + + [MaxLength(50)] + public string Azione { get; set; } = ""; + + [MaxLength(50)] + public string KeyEvento { get; set; } = ""; + + public bool EventoTablet { get; set; } = false; + + [MaxLength(50)] + public string NoteEvento { get; set; } = ""; + + [MaxLength(50)] + public string CssClass { get; set; } = ""; + + [MaxLength(50)] + public string Icon { get; set; } = ""; + + public Int16 OrdEventi { get; set; } = 0; + + #endregion Public Properties + } +} \ No newline at end of file diff --git a/MP.AppAuth/Models/AnagraficaStati.cs b/MP.AppAuth/Models/AnagraficaStati.cs new file mode 100644 index 00000000..cbde727e --- /dev/null +++ b/MP.AppAuth/Models/AnagraficaStati.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +#nullable disable + +namespace MP.AppAuth.Models +{ + [Table("AnagraficaStati")] + public partial class AnagraficaStati + { + #region Public Properties + + [Key] + public int IdxStato { get; set; } = 0; + + [MaxLength(50)] + public string Descrizione { get; set; } = ""; + + [MaxLength(50)] + public string Semaforo { get; set; } = ""; + + public int Priorita { get; set; } = 0; + + [MaxLength(50)] + public string ClasseTempo { get; set; } = ""; + + public bool ShowArticolo { get; set; } = false; + + [MaxLength(50)] + public string KeyStato { get; set; } = ""; + + [MaxLength(50)] + public string NoteStato { get; set; } = ""; + + #endregion Public Properties + } +} \ No newline at end of file diff --git a/MP.AppAuth/Models/ListValue.cs b/MP.AppAuth/Models/ListValues.cs similarity index 78% rename from MP.AppAuth/Models/ListValue.cs rename to MP.AppAuth/Models/ListValues.cs index cb1132fe..f0272f57 100644 --- a/MP.AppAuth/Models/ListValue.cs +++ b/MP.AppAuth/Models/ListValues.cs @@ -1,11 +1,13 @@ using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; #nullable disable namespace MP.AppAuth.Models { - public partial class ListValue + [Table("ListValues")] + public partial class ListValues { #region Public Properties diff --git a/MP.AppAuth/MoonProContext.cs b/MP.AppAuth/MoonProContext.cs index 22280dac..20271e59 100644 --- a/MP.AppAuth/MoonProContext.cs +++ b/MP.AppAuth/MoonProContext.cs @@ -54,23 +54,25 @@ namespace MP.AppAuth #region Public Properties - public virtual DbSet AnagArticolis { get; set; } - public virtual DbSet AnagClassiTempos { get; set; } - public virtual DbSet AnagraficaCausaliScartos { get; set; } - public virtual DbSet AnagraficaFlussis { get; set; } - public virtual DbSet AnagraficaIngressis { get; set; } - public virtual DbSet AnagraficaMicroStatis { get; set; } - public virtual DbSet AnagraficaOperatoris { get; set; } + public virtual DbSet DbSetAnagArticoli { get; set; } + public virtual DbSet DbSetAnagEventi { get; set; } + public virtual DbSet DbSetAnagClassiTempo { get; set; } + public virtual DbSet DbSetAnagCauSca { get; set; } + public virtual DbSet DbSetAnagFlussi { get; set; } + public virtual DbSet DbSetAnagIngressi { get; set; } + public virtual DbSet DbSetAnagMicroStati { get; set; } + public virtual DbSet DbSetAnagStati { get; set; } + public virtual DbSet DbSetAnagOperatori { get; set; } public virtual DbSet DbSetConfig { get; set; } - public virtual DbSet DatiMacchines { get; set; } + public virtual DbSet DbSetDatiMacchine { get; set; } public virtual DbSet DbSetAnagKeyValues { get; set; } - public virtual DbSet FamigliaTipoIngressis { get; set; } - public virtual DbSet FamiglieMacchines { get; set; } - public virtual DbSet KeepAlives { get; set; } - public virtual DbSet LinkMenuJqms { get; set; } - public virtual DbSet ListValues { get; set; } - public virtual DbSet Macchines { get; set; } - public virtual DbSet UpdMan { get; set; } + public virtual DbSet DbSetFamTipoIngressi { get; set; } + public virtual DbSet DbSetFamMacchine { get; set; } + public virtual DbSet DbSetKeepAlive { get; set; } + public virtual DbSet DbSetLinkMenuJqm { get; set; } + public virtual DbSet DbSetListValue { get; set; } + public virtual DbSet DbSetMacchine { get; set; } + public virtual DbSet DbSetUpdMan { get; set; } public virtual DbSet DbSetVocabolario { get; set; } #endregion Public Properties @@ -401,7 +403,7 @@ namespace MP.AppAuth entity.Property(e => e.TipoLink).HasMaxLength(50); }); - modelBuilder.Entity(entity => + modelBuilder.Entity(entity => { entity.HasKey(e => new { e.TableName, e.FieldName, e.Value }); @@ -457,7 +459,7 @@ namespace MP.AppAuth entity.HasKey(e => e.AppName) .HasName("PK_UpdateMan"); - entity.ToTable("UpdMan"); + entity.ToTable("DbSetUpdMan"); entity.Property(e => e.AppName).HasMaxLength(50); diff --git a/MP.Land/Data/AppAuthService.cs b/MP.Land/Data/AppAuthService.cs index f21253da..5537e19b 100644 --- a/MP.Land/Data/AppAuthService.cs +++ b/MP.Land/Data/AppAuthService.cs @@ -66,6 +66,106 @@ namespace MP.Land.Data #region Public Methods + /// + /// Lista Causali Scarto + /// + /// + public async Task> AnagCauSca() + { + List dbResult = new List(); + Stopwatch stopWatch = new Stopwatch(); + stopWatch.Start(); + dbResult = MpDbController.AnagCauSca(); + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + Log.Trace($"Effettuata lettura da DB per AnagCauSca: {ts.TotalMilliseconds} ms"); + return await Task.FromResult(dbResult); + } + + /// + /// Lista AnagClassiTempo + /// + /// + public async Task> AnagClassiTempo() + { + List dbResult = new List(); + Stopwatch stopWatch = new Stopwatch(); + stopWatch.Start(); + dbResult = MpDbController.AnagClassiTempo(); + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + Log.Trace($"Effettuata lettura da DB per AnagClassiTempo: {ts.TotalMilliseconds} ms"); + return await Task.FromResult(dbResult); + } + + /// + /// Lista AnagEventi + /// + /// + public async Task> AnagEventi() + { + List dbResult = new List(); + Stopwatch stopWatch = new Stopwatch(); + stopWatch.Start(); + dbResult = MpDbController.AnagEventi(); + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + Log.Trace($"Effettuata lettura da DB per AnagEventi: {ts.TotalMilliseconds} ms"); + return await Task.FromResult(dbResult); + } + + /// + /// Lista AnagEventi + /// + /// + public async Task> AnagIngressi() + { + List dbResult = new List(); + Stopwatch stopWatch = new Stopwatch(); + stopWatch.Start(); + dbResult = MpDbController.AnagIngressi(); + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + Log.Trace($"Effettuata lettura da DB per AnagIngressi: {ts.TotalMilliseconds} ms"); + return await Task.FromResult(dbResult); + } + + /// + /// Lista AnagEventi + /// + /// + public async Task> AnagMicroStati() + { + List dbResult = new List(); + Stopwatch stopWatch = new Stopwatch(); + stopWatch.Start(); + dbResult = MpDbController.AnagMicroStati(); + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + Log.Trace($"Effettuata lettura da DB per AnagMicroStati: {ts.TotalMilliseconds} ms"); + return await Task.FromResult(dbResult); + } + + /// + /// Lista AnagStati + /// + /// + public async Task> AnagStati() + { + List dbResult = new List(); + Stopwatch stopWatch = new Stopwatch(); + stopWatch.Start(); + dbResult = MpDbController.AnagStati(); + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + Log.Trace($"Effettuata lettura da DB per AnagStati: {ts.TotalMilliseconds} ms"); + return await Task.FromResult(dbResult); + } + + /// + /// Lista Gruppi + /// + /// public async Task> AnagGruppiAll() { List dbResult = new List(); @@ -78,6 +178,22 @@ namespace MP.Land.Data return await Task.FromResult(dbResult); } + /// + /// Elenco ListValues + /// + /// + public async Task> ListValues() + { + List dbResult = new List(); + Stopwatch stopWatch = new Stopwatch(); + stopWatch.Start(); + dbResult = MpDbController.ListValues(); + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + Log.Trace($"Effettuata lettura da DB per ListValues: {ts.TotalMilliseconds} ms"); + return await Task.FromResult(dbResult); + } + public async Task> AnagGruppiFilt(string codTipo) { List dbResult = new List(); diff --git a/MP.Land/MP.Land.csproj b/MP.Land/MP.Land.csproj index bee1583b..58f621ae 100644 --- a/MP.Land/MP.Land.csproj +++ b/MP.Land/MP.Land.csproj @@ -3,7 +3,7 @@ net6.0 MP.Land - 6.16.2410.1815 + 6.16.2410.1818 diff --git a/MP.Land/Pages/UpdateManager.razor.cs b/MP.Land/Pages/UpdateManager.razor.cs index 483ee0c3..5be0865f 100644 --- a/MP.Land/Pages/UpdateManager.razor.cs +++ b/MP.Land/Pages/UpdateManager.razor.cs @@ -1,9 +1,12 @@ using ICSharpCode.SharpZipLib.Zip; using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Identity; using Microsoft.Extensions.Configuration; using MP.AppAuth; using MP.Land.Data; +using Newtonsoft.Json; +using NLog; using System; using System.Collections.Generic; using System.Diagnostics; @@ -55,29 +58,21 @@ namespace MP.Land.Pages #region Protected Fields - protected int numDone = 0; - - protected int numTot = 0; - - protected int totalCount = 0; - - protected long TotalMb = 0; - protected UpdateMan updateManAuth = new UpdateMan("SWDownloader", "viaD@nte16"); #endregion Protected Fields #region Protected Properties + [Inject] + protected AppAuthService AppDService { get; set; } + [Inject] protected MessageService AppMService { get; set; } [Inject] protected IConfiguration Configuration { get; set; } - [Inject] - protected AppAuthService DataService { get; set; } - [Inject] protected LicenseService LicServ { get; set; } = null!; @@ -116,11 +111,11 @@ namespace MP.Land.Pages // init progress... showProgress = true; showUpdate = true; - outMessages = $"Iniziato download per {numTot} packages"; + outMessages = $"Iniziato download per {numSteps} packages"; await InvokeAsync(StateHasChanged); percLoading = 0; TotalMb = 0; - numDone = 0; + numApp = 0; Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); // ciclo su tutti quelli con licenza valida... @@ -136,7 +131,6 @@ namespace MP.Land.Pages authList.Add(item); } } - numTot = authList.Count; foreach (var item in authList) { ScaricaSingolo(item); @@ -144,7 +138,7 @@ namespace MP.Land.Pages } stopWatch.Stop(); TimeSpan ts = stopWatch.Elapsed; - outMessages = $"Effettuato download di {numDone} update | {CalcSize(TotalMb)} in {ts.TotalSeconds:N2} s"; + outMessages = $"Effettuato download di {numApp} update | {CalcSize(TotalMb)} in {ts.TotalSeconds:N2} s"; await InvokeAsync(StateHasChanged); await Task.Delay(1000); showProgress = false; @@ -170,7 +164,7 @@ namespace MP.Land.Pages { // importante altrimenti NON mostra update UI await Task.Delay(1); - ListRecords = await DataService.UpdManList(); + ListRecords = await AppDService.UpdManList(); totalCount = ListRecords.Count(); await Task.Delay(1); } @@ -183,18 +177,18 @@ namespace MP.Land.Pages // init progress... showProgress = true; showUpdate = true; - outMessages = $"Inizio preparazione per upload configurazioni di {numTot} packages"; + outMessages = $"Inizio preparazione per upload configurazioni di {numSteps} packages"; await InvokeAsync(StateHasChanged); percLoading = 0; TotalMb = 0; - numDone = 0; - int numIOB = 0; + numApp = 0; + numIOB = 0; Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); // ciclo su tutti quelli con licenza valida... List rawList = ListRecords .Where(x => !string.IsNullOrEmpty(x.LicenseKey)).ToList(); - List authList = new List(); + authList = new List(); // ciclo SOLO tra quelli davvero autorizzati... foreach (var item in rawList) @@ -204,21 +198,19 @@ namespace MP.Land.Pages authList.Add(item); } } - // numero app + IOB + DB + ZIP - numTot = authList.Count + 3; // recupero conf files foreach (var item in authList) { // cerco i file di conf e li copio RecuperaConf(item); - await Task.Delay(10); + await Task.Delay(1); await InvokeAsync(StateHasChanged); } // recupero i file IOB RecuperaIobConf(); // salvo Tab Db come json - SaveDbConfAsJson(); + await SaveDbConfAsJson(); // ora creo il file zip PrepareZip(); @@ -228,26 +220,66 @@ namespace MP.Land.Pages // concludo! stopWatch.Stop(); TimeSpan ts = stopWatch.Elapsed; - outMessages = $"Effettuato Upload backup configurazioni per {numDone} app + {numIOB} IOB | {CalcSize(TotalMb)} | {ts.TotalSeconds:N2} s"; + outMessages = $"Effettuato Upload backup configurazioni | NumApp: {numApp} | NumTab: {numTab} | NumIob: {numIOB} | {CalcSize(TotalMb)} | {ts.TotalSeconds:N2} s"; await InvokeAsync(StateHasChanged); await Task.Delay(1000); showProgress = false; await InvokeAsync(StateHasChanged); } + protected long WriteTabJson(string filePath, List dataList) + { + long size = 0; + try + { + string rawData = JsonConvert.SerializeObject(dataList, Formatting.Indented); + File.WriteAllText(filePath, rawData); + FileInfo fInfo = new FileInfo(filePath); + size = fInfo.Length; + } + catch (Exception exc) + { + Log.Error($"Eccezione durante WriteTabJson{Environment.NewLine}{exc}"); + } + return size; + } + #endregion Protected Methods #region Private Fields + /// + /// Classe logger + /// + private static Logger Log = LogManager.GetCurrentClassLogger(); + private List ListRecords; + private int numApp = 0; + private int numIOB = 0; + private int numTab = 0; + private int totalCount = 0; + + private long TotalMb = 0; #endregion Private Fields - #region Private Properties -#if DEBUG private DirectoryInfo AppDir => new DirectoryInfo(Path.Combine("\\\\iis01.egalware.com", "c$\\inetpub\\wwwroot\\MP\\LAND")); + + private List authList { get; set; } = new List(); + + /// + /// Numero complessivo files processati + /// + private int numDone => numApp + numTab + numIOB; + + /// + /// Numero Step da eseguire... numapp + (9 * DB) + IOB + /// + private int numSteps => authList.Count + 9 + numIOB; + +#if DEBUG #else private DirectoryInfo AppDir => new DirectoryInfo(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)); #endif @@ -317,10 +349,10 @@ namespace MP.Land.Pages file.CopyTo(fileDestPath, true); size += file.Length; } - numDone++; - percLoading = 100 * numDone / numTot; + numApp++; + percLoading = 100 * numDone / numSteps; TotalMb += size; - outMessages = $"Configurazioni preparate: {numDone}/{numTot} | {CalcSize(TotalMb)}"; + outMessages = $"File preparati: {numDone}/{numSteps} | {CalcSize(TotalMb)}"; } } } @@ -330,8 +362,9 @@ namespace MP.Land.Pages /// private void RecuperaIobConf() { + numIOB = 0; long size = 0; - + // calcolo path vari string dstDir = Path.Combine(AppDir.FullName, "temp", "orig", "IOB"); if (!Directory.Exists(dstDir)) { @@ -350,11 +383,12 @@ namespace MP.Land.Pages string fileDestPath = Path.Combine(dstDir, file.Name); file.CopyTo(fileDestPath, true); size += file.Length; + numIOB++; } - numDone++; - percLoading = 100 * numDone / numTot; + numApp++; + percLoading = 100 * numDone / numSteps; TotalMb += size; - outMessages = $"Configurazioni preparate: {numDone}/{numTot} | {CalcSize(TotalMb)}"; + outMessages = $"File preparati: {numDone}/{numSteps} | {CalcSize(TotalMb)}"; } } @@ -362,7 +396,7 @@ namespace MP.Land.Pages /// Salvataggio tabelle di configurazione specifica come tracciati json /// /// - private void SaveDbConfAsJson() + private async Task SaveDbConfAsJson() { long size = 0; @@ -371,30 +405,55 @@ namespace MP.Land.Pages { Directory.CreateDirectory(dstDir); } - // va fatta 1:1 per ogni tabella -#if false - string srcIobDir = Path.Combine(AppDir.Parent.FullName, "IO", "fileUpload"); - // recupero elenco files tipo appsettings*.json - if (Directory.Exists(srcIobDir)) - { - var dirInfo = new DirectoryInfo(srcIobDir); - // recupero files CORE - List fileList = dirInfo.GetFiles().ToList(); - // procedo! - foreach (var file in fileList) - { - string fileDestPath = Path.Combine(dstDir, file.Name); - file.CopyTo(fileDestPath, true); - size += file.Length; - } - } -#endif + // AnagKeyVal + var anagKeyVal = await AppDService.AnagKeyValList(); + size += WriteTabJson(Path.Combine(dstDir, "AnagKeyVal.json"), anagKeyVal); + numTab++; - numDone++; - percLoading = 100 * numDone / numTot; + // AnagCausaliScarto + var anagCS = await AppDService.AnagCauSca(); + size += WriteTabJson(Path.Combine(dstDir, "AnagCausaliScarto.json"), anagCS); + numTab++; + + // AnagClassiTempo + var anagCT = await AppDService.AnagClassiTempo(); + size += WriteTabJson(Path.Combine(dstDir, "AnagClassiTempo.json"), anagCT); + numTab++; + + // AnagEventi + var anagEvt = await AppDService.AnagEventi(); + size += WriteTabJson(Path.Combine(dstDir, "AnagEventi.json"), anagEvt); + numTab++; + + // AnagIngressi + var anagIn = await AppDService.AnagIngressi(); + size += WriteTabJson(Path.Combine(dstDir, "AnagIngressi.json"), anagIn); + numTab++; + + // AnagMicroStati + var anagMSt = await AppDService.AnagIngressi(); + size += WriteTabJson(Path.Combine(dstDir, "AnagMicroStati.json"), anagMSt); + numTab++; + + // AnagStati + var anagSta = await AppDService.AnagStati(); + size += WriteTabJson(Path.Combine(dstDir, "AnagStati.json"), anagSta); + numTab++; + + // Config + var confData = await AppDService.ConfigList(); + size += WriteTabJson(Path.Combine(dstDir, "Config.json"), confData); + numTab++; + + // ListValues + var listVal = await AppDService.ListValues(); + size += WriteTabJson(Path.Combine(dstDir, "ListValues.json"), listVal); + numTab++; + + percLoading = 100 * numDone / numSteps; TotalMb += size; - outMessages = $"Configurazioni preparate: {numDone}/{numTot} | {CalcSize(TotalMb)}"; + outMessages = $"File preparati: {numDone}/{numSteps} | {CalcSize(TotalMb)}"; } /// @@ -412,10 +471,10 @@ namespace MP.Land.Pages { size = UpdateMan.obj.downloadLatest(item.ManifestUrl, localPath(item.LocalRepo), item.PackName); } - numDone++; - percLoading = 100 * numDone / numTot; + numApp++; + percLoading = 100 * numApp / numSteps; TotalMb += size; - outMessages = $"Scaricati {numDone}/{numTot} packages | {CalcSize(TotalMb)}"; + outMessages = $"Scaricati {numApp}/{numSteps} packages | {CalcSize(TotalMb)}"; } /// diff --git a/MP.Land/Resources/ChangeLog.html b/MP.Land/Resources/ChangeLog.html index 06b7ca50..c2b0143d 100644 --- a/MP.Land/Resources/ChangeLog.html +++ b/MP.Land/Resources/ChangeLog.html @@ -1,6 +1,6 @@ Modulo Tablet MAPO - DotNet6 -

Versione: 6.16.2410.1815

+

Versione: 6.16.2410.1818


Note di rilascio:
    diff --git a/MP.Land/Resources/VersNum.txt b/MP.Land/Resources/VersNum.txt index aa74da27..8b81d916 100644 --- a/MP.Land/Resources/VersNum.txt +++ b/MP.Land/Resources/VersNum.txt @@ -1 +1 @@ -6.16.2410.1815 +6.16.2410.1818 diff --git a/MP.Land/Resources/manifest.xml b/MP.Land/Resources/manifest.xml index 63a924b1..b620d29e 100644 --- a/MP.Land/Resources/manifest.xml +++ b/MP.Land/Resources/manifest.xml @@ -1,6 +1,6 @@ - 6.16.2410.1815 + 6.16.2410.1818 https://nexus.steamware.net/repository/SWS/MP-LAND/stable/LAST/MP.Land.zip https://nexus.steamware.net/repository/SWS/MP-LAND/stable/LAST/ChangeLog.html false