From e416f5c3d47b6f6fbe2cb6668577a64bea80d0ea Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Fri, 24 Apr 2026 15:57:49 +0200 Subject: [PATCH] Update x gestione configurazione aprametri di traduzione nome da tipo file report --- EgwCoreLib.Lux.Core/Dto/ParamConfigDto.cs | 27 +++++++ .../DbModel/Report/ReportModel.cs | 70 ++++++++++++++++++ EgwCoreLib.Lux.Data/GlobalUsings.cs | 3 +- Lux.API/Lux.API.csproj | 2 +- Lux.Report.Data/DbModel/ReportModel.cs | 10 +-- ...260424130010_AddReportFileConf.Designer.cs | 66 +++++++++++++++++ .../20260424130010_AddReportFileConf.cs | 29 ++++++++ .../Migrations/ReportContextModelSnapshot.cs | 4 + Lux.Report.Manager/Components/App.razor | 1 + .../Components/Compo/RepoFileList.razor | 29 ++++++-- .../Components/Compo/RepoFileList.razor.cs | 48 ++++++++++++ .../Components/Pages/Home.razor | 8 -- .../Components/Pages/ReportMan.razor | 1 + .../Components/Pages/ReportMan.razor.cs | 15 ++++ Lux.Report.Manager/Lux.Report.Manager.csproj | 2 +- Lux.Report.Manager/wwwroot/favicon.ico | Bin 0 -> 746 bytes Lux.Report.Manager/wwwroot/favicon.png | Bin 1148 -> 13333 bytes Lux.Report.Server/Components/App.razor | 1 + Lux.Report.Server/Lux.Report.Server.csproj | 2 +- Lux.Report.Server/wwwroot/favicon.ico | Bin 0 -> 750 bytes Lux.Report.Server/wwwroot/favicon.png | Bin 1148 -> 4553 bytes Lux.UI/Lux.UI.csproj | 2 +- Resources/ChangeLog.html | 2 +- Resources/VersNum.txt | 2 +- Resources/manifest.xml | 2 +- 25 files changed, 298 insertions(+), 28 deletions(-) create mode 100644 EgwCoreLib.Lux.Core/Dto/ParamConfigDto.cs create mode 100644 EgwCoreLib.Lux.Data/DbModel/Report/ReportModel.cs create mode 100644 Lux.Report.Data/Migrations/20260424130010_AddReportFileConf.Designer.cs create mode 100644 Lux.Report.Data/Migrations/20260424130010_AddReportFileConf.cs delete mode 100644 Lux.Report.Manager/Components/Pages/Home.razor create mode 100644 Lux.Report.Manager/wwwroot/favicon.ico create mode 100644 Lux.Report.Server/wwwroot/favicon.ico diff --git a/EgwCoreLib.Lux.Core/Dto/ParamConfigDto.cs b/EgwCoreLib.Lux.Core/Dto/ParamConfigDto.cs new file mode 100644 index 00000000..a8b4cc2a --- /dev/null +++ b/EgwCoreLib.Lux.Core/Dto/ParamConfigDto.cs @@ -0,0 +1,27 @@ +namespace EgwCoreLib.Lux.Core.Dto +{ + public class ParamConfigDto + { + /// + /// Nome parametro + /// + public string Name { get; set; } = "fix"; + + /// + /// Tipo parametro: + /// - fix (fisso) + /// - url (prende da URL QueryString) + /// + public string Type { get; set; } = "fix"; + + /// + /// Per recuperare da ingresso (es URL) + /// + public string vIN { get; set; } = ""; + + /// + /// Valore out (da passare come apram x report) + /// + public string vOUT { get; set; } = ""; + } +} diff --git a/EgwCoreLib.Lux.Data/DbModel/Report/ReportModel.cs b/EgwCoreLib.Lux.Data/DbModel/Report/ReportModel.cs new file mode 100644 index 00000000..eb0b350f --- /dev/null +++ b/EgwCoreLib.Lux.Data/DbModel/Report/ReportModel.cs @@ -0,0 +1,70 @@ +// +// This is here so CodeMaid doesn't reorganize this document +// +namespace EgwCoreLib.Lux.Data.DbModel.Report +{ + /// + /// Classe dei report gestiti + /// + [Table("report_list")] + public class ReportModel + { + /// + /// ID del record + /// + [Key] + public int ReportID { get; set; } + + /// + /// Denominazione + /// + public string Name { get; set; } = ""; + + /// + /// Descrizione + /// + public string Description { get; set; } = ""; + + /// + /// Valore completo Json per recupero dati, con segnaposto con [[param_01]] + /// + public string JsonDSN { get; set; } = ""; + + /// + /// Nome del report Active tra quelli nella folder + /// + public string ActRepFileName { get; set; } = ""; + + /// + /// Conf dei parametri per il report + /// + public string ParamConfigRaw { get; set; } = ""; + + /// + /// Conf relative ai file report + /// + public string FileConfDataRaw { get; set; } = ""; + + /// + /// Elenco dei parametri da gestire x il ReportTemplate + /// + [NotMapped] + public List ParamConfig + { + get + { + List answ = new(); + if (!string.IsNullOrEmpty(ParamConfigRaw) && ParamConfigRaw.Length > 2) + { + answ = JsonConvert.DeserializeObject>(ParamConfigRaw) ?? new(); + } + return answ; + } + set + { + string rawVal = JsonConvert.SerializeObject(value); + ParamConfigRaw = rawVal; + } + } + } +} diff --git a/EgwCoreLib.Lux.Data/GlobalUsings.cs b/EgwCoreLib.Lux.Data/GlobalUsings.cs index 4170412c..d5961095 100644 --- a/EgwCoreLib.Lux.Data/GlobalUsings.cs +++ b/EgwCoreLib.Lux.Data/GlobalUsings.cs @@ -1,4 +1,5 @@ -global using EgwCoreLib.Lux.Core.RestPayload; +global using EgwCoreLib.Lux.Core.Dto; +global using EgwCoreLib.Lux.Core.RestPayload; global using EgwCoreLib.Lux.Data.Data.DbModel.Admin; global using EgwCoreLib.Lux.Data.DbModel.Catalog; global using EgwCoreLib.Lux.Data.DbModel.Config; diff --git a/Lux.API/Lux.API.csproj b/Lux.API/Lux.API.csproj index de29e7e9..393b04c7 100644 --- a/Lux.API/Lux.API.csproj +++ b/Lux.API/Lux.API.csproj @@ -4,7 +4,7 @@ net8.0 enable enable - 1.1.2604.2413 + 1.1.2604.2414 diff --git a/Lux.Report.Data/DbModel/ReportModel.cs b/Lux.Report.Data/DbModel/ReportModel.cs index a84f062a..957d411b 100644 --- a/Lux.Report.Data/DbModel/ReportModel.cs +++ b/Lux.Report.Data/DbModel/ReportModel.cs @@ -1,11 +1,6 @@ using Lux.Report.Data.DTO; -using System; -using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Lux.Report.Data.DbModel { @@ -46,6 +41,11 @@ namespace Lux.Report.Data.DbModel /// public string ParamConfigRaw { get; set; } = ""; + /// + /// Conf relative ai file report + /// + public string FileConfDataRaw { get; set; } = ""; + /// /// Elenco dei parametri da gestire x il ReportTemplate /// diff --git a/Lux.Report.Data/Migrations/20260424130010_AddReportFileConf.Designer.cs b/Lux.Report.Data/Migrations/20260424130010_AddReportFileConf.Designer.cs new file mode 100644 index 00000000..864ba3b2 --- /dev/null +++ b/Lux.Report.Data/Migrations/20260424130010_AddReportFileConf.Designer.cs @@ -0,0 +1,66 @@ +// +using Lux.Report.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Lux.Report.Data.Migrations +{ + [DbContext(typeof(ReportContext))] + [Migration("20260424130010_AddReportFileConf")] + partial class AddReportFileConf + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.23") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + + modelBuilder.Entity("Lux.Report.Data.DbModel.ReportModel", b => + { + b.Property("ReportID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("ReportID")); + + b.Property("ActRepFileName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Description") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("FileConfDataRaw") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("JsonDSN") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Name") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("ParamConfigRaw") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("ReportID"); + + b.ToTable("report_list"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Lux.Report.Data/Migrations/20260424130010_AddReportFileConf.cs b/Lux.Report.Data/Migrations/20260424130010_AddReportFileConf.cs new file mode 100644 index 00000000..3f7c036a --- /dev/null +++ b/Lux.Report.Data/Migrations/20260424130010_AddReportFileConf.cs @@ -0,0 +1,29 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Lux.Report.Data.Migrations +{ + /// + public partial class AddReportFileConf : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "FileConfDataRaw", + table: "report_list", + type: "longtext", + nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "FileConfDataRaw", + table: "report_list"); + } + } +} diff --git a/Lux.Report.Data/Migrations/ReportContextModelSnapshot.cs b/Lux.Report.Data/Migrations/ReportContextModelSnapshot.cs index c84b5e78..708d6d15 100644 --- a/Lux.Report.Data/Migrations/ReportContextModelSnapshot.cs +++ b/Lux.Report.Data/Migrations/ReportContextModelSnapshot.cs @@ -37,6 +37,10 @@ namespace Lux.Report.Data.Migrations .IsRequired() .HasColumnType("longtext"); + b.Property("FileConfDataRaw") + .IsRequired() + .HasColumnType("longtext"); + b.Property("JsonDSN") .IsRequired() .HasColumnType("longtext"); diff --git a/Lux.Report.Manager/Components/App.razor b/Lux.Report.Manager/Components/App.razor index ab318dd0..1f12f71d 100644 --- a/Lux.Report.Manager/Components/App.razor +++ b/Lux.Report.Manager/Components/App.razor @@ -11,6 +11,7 @@ + @* *@ diff --git a/Lux.Report.Manager/Components/Compo/RepoFileList.razor b/Lux.Report.Manager/Components/Compo/RepoFileList.razor index c0daff22..b34ac374 100644 --- a/Lux.Report.Manager/Components/Compo/RepoFileList.razor +++ b/Lux.Report.Manager/Components/Compo/RepoFileList.razor @@ -8,12 +8,12 @@
@if (AddEnabled) { - + } - else + else { - + }
@@ -23,18 +23,33 @@ @foreach (var item in ListReports) { - - + + - +
@FileName(item)
+ @if (!string.IsNullOrEmpty(aliasKey) && FileName(item) == aliasKey) + { +
+ + + +
+ } + else + { +
+ +
@GetAlias(FileName(item))
+
+ } - + diff --git a/Lux.Report.Manager/Components/Compo/RepoFileList.razor.cs b/Lux.Report.Manager/Components/Compo/RepoFileList.razor.cs index 4a0cc1a4..8d32a0e1 100644 --- a/Lux.Report.Manager/Components/Compo/RepoFileList.razor.cs +++ b/Lux.Report.Manager/Components/Compo/RepoFileList.razor.cs @@ -2,6 +2,7 @@ using Lux.Report.Data.DbModel; using Lux.Report.Data.Services; using Microsoft.AspNetCore.Components; using Microsoft.JSInterop; +using Newtonsoft.Json; namespace Lux.Report.Manager.Components.Compo { @@ -17,6 +18,8 @@ namespace Lux.Report.Manager.Components.Compo [Parameter] public EventCallback EC_ReqUpdate { get; set; } + [Parameter] + public EventCallback> EC_SaveDict { get; set; } #endregion Public Properties @@ -31,6 +34,7 @@ namespace Lux.Report.Manager.Components.Compo #region Private Fields + private Dictionary DictAlias = new(); private List ListReports = new List(); #endregion Private Fields @@ -96,12 +100,56 @@ namespace Lux.Report.Manager.Components.Compo return Path.GetFileName(fullName); } + private void SetEditAlias(string fullName) + { + aliasKey = Path.GetFileName(fullName); + aliasVal = GetAlias(aliasKey); + } + private void CancelEditAlias(string fullName) + { + aliasKey = ""; + } + + private string aliasKey = ""; + private string aliasVal = ""; + + private async Task SaveEditAlias() + { + if (!string.IsNullOrEmpty(aliasKey)) + { + if (DictAlias.ContainsKey(aliasKey)) + { + DictAlias[aliasKey] = aliasVal; + } + else + { + DictAlias.Add(aliasKey, aliasVal); + } + await EC_SaveDict.InvokeAsync(DictAlias); + } + } + + private string GetAlias(string alias) + { + // cerco nel dizionario... + if (DictAlias.ContainsKey(alias)) + { + alias = DictAlias[alias]; + } + return alias; + } + private void ReloadData() { //base.OnParametersSet(); string repPath = Path.Combine("reports", CurrReport.Name); // elenco file esclusi quelli nascosti (template) ListReports = FService.ListFile(repPath, "*.repx", true); + // fix alias disponibili + if (!string.IsNullOrEmpty(CurrReport.FileConfDataRaw)) + { + DictAlias = JsonConvert.DeserializeObject>(CurrReport.FileConfDataRaw) ?? new(); + } } private async Task ReqEdit(string fullPath) diff --git a/Lux.Report.Manager/Components/Pages/Home.razor b/Lux.Report.Manager/Components/Pages/Home.razor deleted file mode 100644 index bb468e88..00000000 --- a/Lux.Report.Manager/Components/Pages/Home.razor +++ /dev/null @@ -1,8 +0,0 @@ - -@page "/Home" - -ReportManager - -

Lux Report Manager

- -Lux Report Manager Landing Page diff --git a/Lux.Report.Manager/Components/Pages/ReportMan.razor b/Lux.Report.Manager/Components/Pages/ReportMan.razor index 06d1c7ed..3d8b5d7a 100644 --- a/Lux.Report.Manager/Components/Pages/ReportMan.razor +++ b/Lux.Report.Manager/Components/Pages/ReportMan.razor @@ -1,4 +1,5 @@ @page "/" +@page "/Home" @page "/report-man" diff --git a/Lux.Report.Manager/Components/Pages/ReportMan.razor.cs b/Lux.Report.Manager/Components/Pages/ReportMan.razor.cs index c049e025..cdafbadb 100644 --- a/Lux.Report.Manager/Components/Pages/ReportMan.razor.cs +++ b/Lux.Report.Manager/Components/Pages/ReportMan.razor.cs @@ -1,6 +1,7 @@ using Lux.Report.Data.DbModel; using Lux.Report.Data.Services; using Microsoft.AspNetCore.Components; +using Newtonsoft.Json; namespace Lux.Report.Manager.Components.Pages { @@ -158,5 +159,19 @@ namespace Lux.Report.Manager.Components.Pages } #endregion Private Methods + private async Task DoSaveDict(Dictionary currDict) + { + if (SelRecord != null) + { + // serializzo nel record corrente + string rawDict = JsonConvert.SerializeObject(currDict); + SelRecord.FileConfDataRaw = rawDict; + // salvo! + await RepService.UpsertAsync(SelRecord); + } + await ReloadDataAsync(); + UpdateTable(); + + } } } \ No newline at end of file diff --git a/Lux.Report.Manager/Lux.Report.Manager.csproj b/Lux.Report.Manager/Lux.Report.Manager.csproj index 66c07339..2e10d0e8 100644 --- a/Lux.Report.Manager/Lux.Report.Manager.csproj +++ b/Lux.Report.Manager/Lux.Report.Manager.csproj @@ -4,7 +4,7 @@ net8.0 enable enable - 1.1.2604.2316 + 1.1.2604.2415 diff --git a/Lux.Report.Manager/wwwroot/favicon.ico b/Lux.Report.Manager/wwwroot/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..77a09bc5125f866cff4ad4a7bd2e965f478a902c GIT binary patch literal 746 zcmV z5op584-6;|9toI-AJ|}H8(Xps7~7clK}X|dcCV8rRixaJMt643&hFefvl9sT;)^f7 z{7Z6w4;b}g6dV83zQ4r+*VjO$3S_fDwFcbW=q3g<8bH1Pq*6e#qv;G#JO&y~IkedX z3I$+44V25k<)xm{ZUd!~VBEvKP9mqLz>}w{^}2#g<}mBxwr<5FY44t5QO@8+xg!_j z`u5gJpj1}y?FXP%Q;^m9wW;{XI50Hq9=I0=R@Yn~V;I|P0pGs6*!GSmf#Z^bbMpWz zVz8?#VB@Fa>l*+Q4u;gXwhk;Ui{0BN-%tcNI}@7h%c(ow1XwNu2E#4|On?^{d~-|q z|1#_P7NcUnexv?O28hMF6WHAY?(VDv@_7X#QE57Zv6+6Xb{}Gt)yd_6a75Pc#uW=M z0yCXN$KIkJzKurIS-?Cz765 zkU4M@UNo4R95Vhj?j2{!A!S`*ziI2iL zJ2jDzw>vv$1t)>8Rz-N2O(7| cU;b-(0L0^d^XHg@6#xJL07*qoM6N<$f&{HfOaK4? literal 0 HcmV?d00001 diff --git a/Lux.Report.Manager/wwwroot/favicon.png b/Lux.Report.Manager/wwwroot/favicon.png index 8422b59695935d180d11d5dbe99653e711097819..d145b9c0fe68753c3ba998eb5c296983c5e81b93 100644 GIT binary patch literal 13333 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 Aa{vGU literal 1148 zcmV-?1cUpDP)9h26h2-Cs%i*@Moc3?#6qJID|D#|3|2Hn7gTIYEkr|%Xjp);YgvFmB&0#2E2b=| zkVr)lMv9=KqwN&%obTp-$<51T%rx*NCwceh-E+=&e(oLO`@Z~7gybJ#U|^tB2Pai} zRN@5%1qsZ1e@R(XC8n~)nU1S0QdzEYlWPdUpH{wJ2Pd4V8kI3BM=)sG^IkUXF2-j{ zrPTYA6sxpQ`Q1c6mtar~gG~#;lt=s^6_OccmRd>o{*=>)KS=lM zZ!)iG|8G0-9s3VLm`bsa6e ze*TlRxAjXtm^F8V`M1%s5d@tYS>&+_ga#xKGb|!oUBx3uc@mj1%=MaH4GR0tPBG_& z9OZE;->dO@`Q)nr<%dHAsEZRKl zedN6+3+uGHejJp;Q==pskSAcRcyh@6mjm2z-uG;s%dM-u0*u##7OxI7wwyCGpS?4U zBFAr(%GBv5j$jS@@t@iI8?ZqE36I^4t+P^J9D^ELbS5KMtZ z{Qn#JnSd$15nJ$ggkF%I4yUQC+BjDF^}AtB7w348EL>7#sAsLWs}ndp8^DsAcOIL9 zTOO!!0!k2`9BLk25)NeZp7ev>I1Mn={cWI3Yhx2Q#DnAo4IphoV~R^c0x&nw*MoIV zPthX?{6{u}sMS(MxD*dmd5rU(YazQE59b|TsB5Tm)I4a!VaN@HYOR)DwH1U5y(E)z zQqQU*B%MwtRQ$%x&;1p%ANmc|PkoFJZ%<-uq%PX&C!c-7ypis=eP+FCeuv+B@h#{4 zGx1m0PjS~FJt}3mdt4c!lel`1;4W|03kcZRG+DzkTy|7-F~eDsV2Tx!73dM0H0CTh zl)F-YUkE1zEzEW(;JXc|KR5{ox%YTh{$%F$a36JP6Nb<0%#NbSh$dMYF-{ z1_x(Vx)}fs?5_|!5xBTWiiIQHG<%)*e=45Fhjw_tlnmlixq;mUdC$R8v#j( zhQ$9YR-o%i5Uc`S?6EC51!bTRK=Xkyb<18FkCKnS2;o*qlij1YA@-nRpq#OMTX&RbL<^2q@0qja!uIvI;j$6>~k@IMwD42=8$$!+R^@5o6HX(*n~ + @* *@ diff --git a/Lux.Report.Server/Lux.Report.Server.csproj b/Lux.Report.Server/Lux.Report.Server.csproj index 9c538b7b..c6f004db 100644 --- a/Lux.Report.Server/Lux.Report.Server.csproj +++ b/Lux.Report.Server/Lux.Report.Server.csproj @@ -4,7 +4,7 @@ net8.0 enable enable - 1.1.2604.2409 + 1.1.2604.2415 diff --git a/Lux.Report.Server/wwwroot/favicon.ico b/Lux.Report.Server/wwwroot/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..60a2bb1cdc3a49f57c0a71708ea6290b5c576fc0 GIT binary patch literal 750 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 CS;S}n literal 1148 zcmV-?1cUpDP)9h26h2-Cs%i*@Moc3?#6qJID|D#|3|2Hn7gTIYEkr|%Xjp);YgvFmB&0#2E2b=| zkVr)lMv9=KqwN&%obTp-$<51T%rx*NCwceh-E+=&e(oLO`@Z~7gybJ#U|^tB2Pai} zRN@5%1qsZ1e@R(XC8n~)nU1S0QdzEYlWPdUpH{wJ2Pd4V8kI3BM=)sG^IkUXF2-j{ zrPTYA6sxpQ`Q1c6mtar~gG~#;lt=s^6_OccmRd>o{*=>)KS=lM zZ!)iG|8G0-9s3VLm`bsa6e ze*TlRxAjXtm^F8V`M1%s5d@tYS>&+_ga#xKGb|!oUBx3uc@mj1%=MaH4GR0tPBG_& z9OZE;->dO@`Q)nr<%dHAsEZRKl zedN6+3+uGHejJp;Q==pskSAcRcyh@6mjm2z-uG;s%dM-u0*u##7OxI7wwyCGpS?4U zBFAr(%GBv5j$jS@@t@iI8?ZqE36I^4t+P^J9D^ELbS5KMtZ z{Qn#JnSd$15nJ$ggkF%I4yUQC+BjDF^}AtB7w348EL>7#sAsLWs}ndp8^DsAcOIL9 zTOO!!0!k2`9BLk25)NeZp7ev>I1Mn={cWI3Yhx2Q#DnAo4IphoV~R^c0x&nw*MoIV zPthX?{6{u}sMS(MxD*dmd5rU(YazQE59b|TsB5Tm)I4a!VaN@HYOR)DwH1U5y(E)z zQqQU*B%MwtRQ$%x&;1p%ANmc|PkoFJZ%<-uq%PX&C!c-7ypis=eP+FCeuv+B@h#{4 zGx1m0PjS~FJt}3mdt4c!lel`1;4W|03kcZRG+DzkTy|7-F~eDsV2Tx!73dM0H0CTh zl)F-YUkE1zEzEW(;JXc|KR5{ox%YTh{$%F$a36JP6Nb<0%#NbSh$dMYF-{ z1_x(Vx)}fs?5_|!5xBTWiiIQHG<%)*e=45Fhjw_tlnmlixq;mUdC$R8v#j( zhQ$9YR-o%i5Uc`S?6EC51!bTRK=Xkyb<18FkCKnS2;o*qlij1YA@-nRpq#OMTX&RbL<^2q@0qja!uIvI;j$6>~k@IMwD42=8$$!+R^@5o6HX(*n~enable enable aspnet-Lux.UI-a758c101-a2f4-4e38-977d-1c4887dbbd50 - 1.1.2604.2413 + 1.1.2604.2414 diff --git a/Resources/ChangeLog.html b/Resources/ChangeLog.html index fe9ed420..ba91840d 100644 --- a/Resources/ChangeLog.html +++ b/Resources/ChangeLog.html @@ -1,6 +1,6 @@ LUX - Web Windows MES -

Versione: 1.1.2604.2413

+

Versione: 1.1.2604.2415


Note di rilascio:
  • diff --git a/Resources/VersNum.txt b/Resources/VersNum.txt index fe1f54b7..105ac1ea 100644 --- a/Resources/VersNum.txt +++ b/Resources/VersNum.txt @@ -1 +1 @@ -1.1.2604.2413 +1.1.2604.2415 diff --git a/Resources/manifest.xml b/Resources/manifest.xml index febc4a15..f7c70193 100644 --- a/Resources/manifest.xml +++ b/Resources/manifest.xml @@ -1,6 +1,6 @@ - 1.1.2604.2413 + 1.1.2604.2415 http://nexus.steamware.net/repository/SWS/GPW/stable/GPW.UI.zip http://nexus.steamware.net/repository/SWS/GPW/stable/ChangeLog.html false