From 1f1bd8ebaa25a1de4d11b8e3417401577df21ebf Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 17 May 2023 16:17:52 +0200 Subject: [PATCH 01/14] Fix ombreggiatura orderDetails --- Docs/ActualToDo.md | 44 +++++++++--------- Docs/ActualToDo.pdf | Bin 51619 -> 77579 bytes .../Pages/OrderDetails.razor.css | 13 ++++-- .../Pages/OrderDetails.razor.less | 12 ++++- .../Pages/OrderDetails.razor.min.css | 2 +- WebDoorCreator.UI/Pages/OrdersHomePage.razor | 2 +- .../Pages/OrdersHomePage.razor.css | 9 ++++ .../Pages/OrdersHomePage.razor.less | 9 ++++ .../Pages/OrdersHomePage.razor.min.css | 1 + WebDoorCreator.UI/compilerconfig.json | 4 ++ 10 files changed, 68 insertions(+), 28 deletions(-) create mode 100644 WebDoorCreator.UI/Pages/OrdersHomePage.razor.css create mode 100644 WebDoorCreator.UI/Pages/OrdersHomePage.razor.less create mode 100644 WebDoorCreator.UI/Pages/OrdersHomePage.razor.min.css diff --git a/Docs/ActualToDo.md b/Docs/ActualToDo.md index 0986f66..e4fc7f9 100644 --- a/Docs/ActualToDo.md +++ b/Docs/ActualToDo.md @@ -17,45 +17,47 @@ Traduzione OVUNQUE x ogni termine/etichetta/button ### Orders Home page Per completare -- aggiunta paginatore -- aggiunta stato ordine -- aggiunta filtri ricerca +- [x] aggiunta paginatore +- [x] aggiunta stato ordine +- [x] aggiunta filtri ricerca - periodo da-a - search generico - stato ordine -- ordinamento +- [x] ordinamento -### DCA Order Man +### DCA Order Mans FORSE la Orders home Page NON VA bene x gli utenti backoffice, oppure va estesa, perché x confermare quotazione, indicare avanzamento ordini gli operatori ABH/DCA devono avere una pagina operativa... ### OrderDetails Per completare: -- aggiunta button x il cambio stato da end-user -- sistemare con paginatore max 3 righe x 4 porte -- fix button verde add-new + +- [x] aggiunta button x il cambio stato da end-user +- [x] sistemare con paginatore max 3 righe x 4 porte +- [x] fix button verde add-new +- [x] ombreggiatura blocco ### DoorDefinition BaseParams -- conteggio num modifiche da salvare -- armonizzare il cancel/save nella pagina -- revisione testata fino al btn del salva generale -- sostituire il salva generale con 2 buttons: +- [x] conteggio num modifiche da salvare +- [x] armonizzare il cancel/save nella pagina +- [x] revisione testata fino al btn del salva generale +- [x] sostituire il salva generale con 2 buttons: - salva, o meglio RECALC PNG = update PNG, potrebbe andare in automatico DOPO i vari SALVA nella pagina (opzione x auto-recalc?!?) - get 3D obj (in new window/tab) ### DoorDefinition Hardware Sistemare: -- da implementare davvero lettura pdf (da cartella pdf di esempi) -- fix cancel/save: globale x Hardware oppure x ognuno con icona? -- verificare perché NON si aggiorna al salvataggio pagina dei 18 hw -- mancano il totale componenti x ogni hw attivato +- [x] da implementare davvero lettura pdf (da cartella pdf di esempi) +- [x] fix cancel/save: globale x Hardware oppure x ognuno con icona? +- [ ] verificare perché NON si aggiorna al salvataggio pagina dei 18 hw +- [x] mancano il totale componenti x ogni hw attivato #### Report -Va inserita una lista dei componenti + elenco quote. -Va pensato esportabile in pdf, comprensivo di "check pdf fatto da tizio alle ..." + - [x] Va inserita una lista dei componenti + elenco quote. +- [ ] Va pensato esportabile in pdf, comprensivo di "check pdf fatto da tizio alle ..." ## Componenti @@ -63,6 +65,6 @@ Va pensato esportabile in pdf, comprensivo di "check pdf fatto da tizio alle ... ### Top Da sistemare -- btn effettivi -- dinamico da user-role? -- fix responsive \ No newline at end of file +- [x] btn effettivi +- [x] dinamico da user-role? +- [x] fix responsive \ No newline at end of file diff --git a/Docs/ActualToDo.pdf b/Docs/ActualToDo.pdf index 8eeedec348507995050525e853b619b6898cc57b..38bdb10d4a953886955ab3a641deed46ace1e3d3 100644 GIT binary patch delta 51147 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 delta 25149 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 R6UPmDW`RaaE3NYO{{V8K8?pcZ diff --git a/WebDoorCreator.UI/Pages/OrderDetails.razor.css b/WebDoorCreator.UI/Pages/OrderDetails.razor.css index 0860454..df99745 100644 --- a/WebDoorCreator.UI/Pages/OrderDetails.razor.css +++ b/WebDoorCreator.UI/Pages/OrderDetails.razor.css @@ -5,12 +5,19 @@ padding: 1rem 4rem 4.5rem 4rem; } .cardDoors { + /*width: 100%; + //transform: translate(0, -53px); + border-radius: 60px 60px 0 0; + transform: translate(0, -120px); + background-color: #FFF; + padding: 0; + box-shadow: rgba(0, 0, 0, 0.45) 0px -24px 27px -20px;*/ width: 100%; - border-radius: 60px 60px 0 0; + border-radius: 60px; transform: translate(0, -120px); - background-color: #FFF; padding: 0; - box-shadow: rgba(0, 0, 0, 0.45) 0px -24px 27px -20px; + background-color: #FFF; + box-shadow: rgba(0, 0, 0, 0.45) 0px 20px 22px -2px; } .testataOrder { border: 3px solid var(--bgStepColor); diff --git a/WebDoorCreator.UI/Pages/OrderDetails.razor.less b/WebDoorCreator.UI/Pages/OrderDetails.razor.less index 5285602..c797eb9 100644 --- a/WebDoorCreator.UI/Pages/OrderDetails.razor.less +++ b/WebDoorCreator.UI/Pages/OrderDetails.razor.less @@ -6,13 +6,21 @@ } .cardDoors { - width: 100%; + /*width: 100%; //transform: translate(0, -53px); border-radius: 60px 60px 0 0; transform: translate(0, -120px); background-color: #FFF; padding: 0; - box-shadow: rgba(0, 0, 0, 0.45) 0px -24px 27px -20px; + box-shadow: rgba(0, 0, 0, 0.45) 0px -24px 27px -20px;*/ + + + width: 100%; + border-radius: 60px; + transform: translate(0, -120px); + padding: 0; + background-color: #FFF; + box-shadow: rgba(0, 0, 0, 0.45) 0px 20px 22px -2px; } .testataOrder { diff --git a/WebDoorCreator.UI/Pages/OrderDetails.razor.min.css b/WebDoorCreator.UI/Pages/OrderDetails.razor.min.css index e27cb9d..cdbd292 100644 --- a/WebDoorCreator.UI/Pages/OrderDetails.razor.min.css +++ b/WebDoorCreator.UI/Pages/OrderDetails.razor.min.css @@ -1 +1 @@ -.cardStatus{border-radius:60px;background-color:var(--bgStepColor);transform:translate(0,-65px);padding:1rem 4rem 4.5rem 4rem;}.cardDoors{width:100%;border-radius:60px 60px 0 0;transform:translate(0,-120px);background-color:#fff;padding:0;box-shadow:rgba(0,0,0,.45) 0 -24px 27px -20px;}.testataOrder{border:3px solid var(--bgStepColor);padding:1rem 1rem 4.5rem 1rem;border-radius:60px 60px 20px 20px;transform:translate(63px,0);width:93%;z-index:-99999;position:relative;font-size:17px;background-color:#031926;} \ No newline at end of file +.cardStatus{border-radius:60px;background-color:var(--bgStepColor);transform:translate(0,-65px);padding:1rem 4rem 4.5rem 4rem;}.cardDoors{width:100%;border-radius:60px;transform:translate(0,-120px);padding:0;background-color:#fff;box-shadow:rgba(0,0,0,.45) 0 20px 22px -2px;}.testataOrder{border:3px solid var(--bgStepColor);padding:1rem 1rem 4.5rem 1rem;border-radius:60px 60px 20px 20px;transform:translate(63px,0);width:93%;z-index:-99999;position:relative;font-size:17px;background-color:#031926;} \ No newline at end of file diff --git a/WebDoorCreator.UI/Pages/OrdersHomePage.razor b/WebDoorCreator.UI/Pages/OrdersHomePage.razor index c5b3b93..be6aaea 100644 --- a/WebDoorCreator.UI/Pages/OrdersHomePage.razor +++ b/WebDoorCreator.UI/Pages/OrdersHomePage.razor @@ -3,7 +3,7 @@ -
+
WEB DOOR CREATOR diff --git a/WebDoorCreator.UI/Pages/OrdersHomePage.razor.css b/WebDoorCreator.UI/Pages/OrdersHomePage.razor.css new file mode 100644 index 0000000..06db017 --- /dev/null +++ b/WebDoorCreator.UI/Pages/OrdersHomePage.razor.css @@ -0,0 +1,9 @@ +.cardOrders { + width: 100%; + border-radius: 18px; + padding: 1rem 4rem 0.5rem 4rem; + box-shadow: rgba(0, 0, 0, 0.45) 0px 20px 22px 3px; + /*box-shadow: rgba(0, 0, 0, 0.45) 0px 20px 22px -9px;*/ + margin-top: 0.5rem; + margin-bottom: 1rem; +} \ No newline at end of file diff --git a/WebDoorCreator.UI/Pages/OrdersHomePage.razor.less b/WebDoorCreator.UI/Pages/OrdersHomePage.razor.less new file mode 100644 index 0000000..e2da35d --- /dev/null +++ b/WebDoorCreator.UI/Pages/OrdersHomePage.razor.less @@ -0,0 +1,9 @@ +.cardOrders { + width: 100%; + border-radius: 18px; + padding: 1rem 4rem 0.5rem 4rem; + box-shadow: rgba(0, 0, 0, 0.45) 0px 20px 22px 3px; + /*box-shadow: rgba(0, 0, 0, 0.45) 0px 20px 22px -9px;*/ + margin-top: 0.5rem; + margin-bottom: 1rem; +} diff --git a/WebDoorCreator.UI/Pages/OrdersHomePage.razor.min.css b/WebDoorCreator.UI/Pages/OrdersHomePage.razor.min.css new file mode 100644 index 0000000..ab146ca --- /dev/null +++ b/WebDoorCreator.UI/Pages/OrdersHomePage.razor.min.css @@ -0,0 +1 @@ +.cardOrders{width:100%;border-radius:18px;padding:1rem 4rem .5rem 4rem;box-shadow:rgba(0,0,0,.45) 0 20px 22px 3px;margin-top:.5rem;margin-bottom:1rem;} \ No newline at end of file diff --git a/WebDoorCreator.UI/compilerconfig.json b/WebDoorCreator.UI/compilerconfig.json index b299ce6..80aced5 100644 --- a/WebDoorCreator.UI/compilerconfig.json +++ b/WebDoorCreator.UI/compilerconfig.json @@ -78,5 +78,9 @@ { "outputFile": "Components/SvgComp/HwSvgObj.razor.css", "inputFile": "Components/SvgComp/HwSvgObj.razor.less" + }, + { + "outputFile": "Pages/OrdersHomePage.razor.css", + "inputFile": "Pages/OrdersHomePage.razor.less" } ] \ No newline at end of file From cf7211e08eb4929ec60c5395193cbf236f43cf34 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 17 May 2023 18:40:19 +0200 Subject: [PATCH 02/14] Aggiunta gestione delete singola porta --- WebDoorCreator.Core/Constants.cs | 1 + .../Controllers/WebDoorCreatorController.cs | 391 ++++++++++-------- .../Services/QueueDataService.cs | 10 + .../Buttons/ButtonsDoorDef.razor.cs | 51 ++- .../DoorDef/DoorDefOrderTopRow.razor | 3 + .../DoorDef/DoorDefOrderTopRow.razor.cs | 55 ++- .../Data/WebDoorCreatorService.cs | 54 ++- .../Pages/DoorDefinition.razor.cs | 16 +- WebDoorCreator.UI/Pages/TestPage.razor | 34 +- .../wwwroot/images/MissingGray.svg | 59 +++ .../wwwroot/images/MissingOrange.svg | 59 +++ 11 files changed, 512 insertions(+), 221 deletions(-) create mode 100644 WebDoorCreator.UI/wwwroot/images/MissingGray.svg create mode 100644 WebDoorCreator.UI/wwwroot/images/MissingOrange.svg diff --git a/WebDoorCreator.Core/Constants.cs b/WebDoorCreator.Core/Constants.cs index 643e707..242f592 100644 --- a/WebDoorCreator.Core/Constants.cs +++ b/WebDoorCreator.Core/Constants.cs @@ -42,6 +42,7 @@ namespace WebDoorCreator.Core public const string rKeyDoorOpType = $"{redisBaseAddr}:Cache:DoorOpType"; public const string rKeyGraphicParameters = $"{redisBaseAddr}:Cache:GraphicParameters"; public const string rKeyListValues = $"{redisBaseAddr}:Cache:ListValues"; + public const string rKeyDoorLast = $"{redisBaseAddr}:Cache:DoorList"; public const string rKeyOrderDetail = $"{redisBaseAddr}:Cache:OrderDetail"; public const string rKeyOrderStatus = $"{redisBaseAddr}:Cache:OrderStatus"; public const string rKeyRoles = $"{redisBaseAddr}:Cache:Roles"; diff --git a/WebDoorCreator.Data/Controllers/WebDoorCreatorController.cs b/WebDoorCreator.Data/Controllers/WebDoorCreatorController.cs index 1adc767..f95a773 100644 --- a/WebDoorCreator.Data/Controllers/WebDoorCreatorController.cs +++ b/WebDoorCreator.Data/Controllers/WebDoorCreatorController.cs @@ -1,7 +1,5 @@ -using Microsoft.AspNetCore.DataProtection; -using Microsoft.Data.SqlClient; +using Microsoft.Data.SqlClient; using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Internal; using Microsoft.Extensions.Configuration; using NLog; using System.Data; @@ -254,6 +252,66 @@ namespace WebDoorCreator.Data.Controllers return fatto; } + /// + /// Delete doorOp instance + /// + /// Record to delete + /// + public async Task DoorOpDelete(DoorOpModel modOpRec) + { + bool fatto = false; + using (WDCDataContext localDbCtx = new WDCDataContext(_configuration)) + { + try + { + var currRec = localDbCtx + .DbSetDoorOp + .Where(x => x.DoorId == modOpRec.DoorId && x.DoorOpId == modOpRec.DoorOpId) + .FirstOrDefault(); + //if is not null edit the record found + if (currRec != null) + { + var recToRem = localDbCtx + .DbSetDoorOp + .Remove(currRec); + await localDbCtx.SaveChangesAsync(); + fatto = true; + } + } + catch (Exception exc) + { + Log.Error($"Eccezione durante DoorOpDelete: {Environment.NewLine}{exc}"); + } + } + return fatto; + } + + /// + /// Delete doorOp list + /// + /// Record to delete + /// + public async Task DoorOpDeleteRange(List listOpRec) + { + bool fatto = false; + using (WDCDataContext localDbCtx = new WDCDataContext(_configuration)) + { + try + { + localDbCtx + .DbSetDoorOp + .RemoveRange(listOpRec); + await localDbCtx.SaveChangesAsync(); + fatto = true; + } + catch (Exception exc) + { + Log.Error($"Eccezione durante DoorOpDeleteRange: {Environment.NewLine}{exc}"); + } + } + return fatto; + } + /// /// Retrieving current data from door /// @@ -278,6 +336,7 @@ namespace WebDoorCreator.Data.Controllers } return dbResult; } + /// /// Retrieving current door operations by id /// @@ -295,7 +354,7 @@ namespace WebDoorCreator.Data.Controllers .Where(x => x.DoorOpId == doorOpId) .FirstOrDefault(); - if(temp != null) + if (temp != null) { dbResult = temp; } @@ -333,106 +392,6 @@ namespace WebDoorCreator.Data.Controllers } return fatto; } - /// - /// Update door's OP - /// - /// Records to add - /// - public async Task DoorOpUpdate(List modOpRec) - { - bool fatto = false; - using (WDCDataContext localDbCtx = new WDCDataContext(_configuration)) - { - try - { - foreach (var item in modOpRec) - { - - var currRec = localDbCtx - .DbSetDoorOp - .Where(x => x.DoorId == item.DoorId && x.DoorOpId == item.DoorOpId) - .FirstOrDefault(); - if (currRec != null) //if is not null edit the record found - { - currRec.JsoncActVal = item.JsoncActVal; - currRec.JsoncConfigVal = item.JsoncConfigVal; - currRec.userConfirm = item.userConfirm; - currRec.DtConfirm = item.DtConfirm; - localDbCtx.Entry(currRec).State = EntityState.Modified; - } - } - await localDbCtx.SaveChangesAsync(); - fatto = true; - } - catch (Exception exc) - { - Log.Error($"Eccezione durante DoorOpUpdate: {Environment.NewLine}{exc}"); - } - } - return fatto; - } - - /// - /// Delete doorOp instance - /// - /// Record to delete - /// - public async Task DoorOpDelete(DoorOpModel modOpRec) - { - bool fatto = false; - using (WDCDataContext localDbCtx = new WDCDataContext(_configuration)) - { - try - { - var currRec = localDbCtx - .DbSetDoorOp - .Where(x => x.DoorId == modOpRec.DoorId && x.DoorOpId == modOpRec.DoorOpId) - .FirstOrDefault(); - //if is not null edit the record found - if (currRec != null) - { - var recToRem = localDbCtx - .DbSetDoorOp - .Remove(currRec); - await localDbCtx.SaveChangesAsync(); - fatto = true; - } - - } - catch (Exception exc) - { - Log.Error($"Eccezione durante DoorOpDelete: {Environment.NewLine}{exc}"); - } - } - return fatto; - } - - /// - /// Delete doorOp list - /// - /// Record to delete - /// - public async Task DoorOpDeleteRange(List listOpRec) - { - bool fatto = false; - using (WDCDataContext localDbCtx = new WDCDataContext(_configuration)) - { - try - { - localDbCtx - .DbSetDoorOp - .RemoveRange(listOpRec); - await localDbCtx.SaveChangesAsync(); - fatto = true; - - } - catch (Exception exc) - { - Log.Error($"Eccezione durante DoorOpDeleteRange: {Environment.NewLine}{exc}"); - } - } - return fatto; - } /// /// Adding a new DoorOpType @@ -534,7 +493,45 @@ namespace WebDoorCreator.Data.Controllers } /// - /// Getting door data by orderId + /// Update door's OP + /// + /// Records to add + /// + public async Task DoorOpUpdate(List modOpRec) + { + bool fatto = false; + using (WDCDataContext localDbCtx = new WDCDataContext(_configuration)) + { + try + { + foreach (var item in modOpRec) + { + var currRec = localDbCtx + .DbSetDoorOp + .Where(x => x.DoorId == item.DoorId && x.DoorOpId == item.DoorOpId) + .FirstOrDefault(); + if (currRec != null) //if is not null edit the record found + { + currRec.JsoncActVal = item.JsoncActVal; + currRec.JsoncConfigVal = item.JsoncConfigVal; + currRec.userConfirm = item.userConfirm; + currRec.DtConfirm = item.DtConfirm; + localDbCtx.Entry(currRec).State = EntityState.Modified; + } + } + await localDbCtx.SaveChangesAsync(); + fatto = true; + } + catch (Exception exc) + { + Log.Error($"Eccezione durante DoorOpUpdate: {Environment.NewLine}{exc}"); + } + } + return fatto; + } + + /// + /// Getting door data by numRec /// /// public List DoorsGetByOrderId(int orderId) @@ -563,6 +560,36 @@ namespace WebDoorCreator.Data.Controllers return dbResult; } + /// + /// Getting door list (last numRec) + /// + /// + public List DoorsGetLast(int numRec) + { + List dbResult = new List(); + // retrieving data from db + using (WDCDataContext localDbCtx = new WDCDataContext(_configuration)) + { + try + { + // extracting entire set + dbResult = localDbCtx + .DbSetDoor + .Include(o => o.OrderNav) + .Include(t => t.TypeNav) + .OrderByDescending(x => x.DoorId) + .Take(numRec) + .AsNoTracking() + .ToList(); + } + catch (Exception exc) + { + Log.Error($"Error in DoorsGetLast:{Environment.NewLine}{exc}"); + } + } + return dbResult; + } + /// /// Modifying or adding a new door /// @@ -626,6 +653,47 @@ namespace WebDoorCreator.Data.Controllers return dbResult; } + /// + /// Adding a new list value + /// + /// Record to add + /// + public async Task ListValuesAdd(List addList) + { + bool fatto = false; + using (WDCDataContext localDbCtx = new WDCDataContext(_configuration)) + { + try + { + // stored di reset ListValues + var storedRes = localDbCtx + .Database + .ExecuteSqlRaw("exec dbo.stp_ListVal_Prepare"); + await localDbCtx.SaveChangesAsync(); + + // import massivo dati in tab temp + localDbCtx + .DbSetValuesTemp + .AddRange(addList); + await localDbCtx.SaveChangesAsync(); + + // stored di merge dati in vocabolario + storedRes = localDbCtx + .Database + .ExecuteSqlRaw("exec dbo.stp_ListVal_Import"); + + fatto = true; + + fatto = true; + } + catch (Exception exc) + { + Log.Error($"Eccezione durante ListValuesAdd: {Environment.NewLine}{exc}"); + } + } + return fatto; + } + /// /// ListValues list (All) /// @@ -640,7 +708,6 @@ namespace WebDoorCreator.Data.Controllers { if (tableName != "*" && fieldName != "*") { - // extracting entire set dbResult = localDbCtx .DbSetValues @@ -673,49 +740,6 @@ namespace WebDoorCreator.Data.Controllers return dbResult; } - /// - /// Adding a new list value - /// - /// Record to add - /// - public async Task ListValuesAdd(List addList) - { - bool fatto = false; - using (WDCDataContext localDbCtx = new WDCDataContext(_configuration)) - { - try - { - - // stored di reset ListValues - var storedRes = localDbCtx - .Database - .ExecuteSqlRaw("exec dbo.stp_ListVal_Prepare"); - await localDbCtx.SaveChangesAsync(); - - // import massivo dati in tab temp - localDbCtx - .DbSetValuesTemp - .AddRange(addList); - await localDbCtx.SaveChangesAsync(); - - // stored di merge dati in vocabolario - storedRes = localDbCtx - .Database - .ExecuteSqlRaw("exec dbo.stp_ListVal_Import"); - - fatto = true; - - - fatto = true; - } - catch (Exception exc) - { - Log.Error($"Eccezione durante ListValuesAdd: {Environment.NewLine}{exc}"); - } - } - return fatto; - } - /// /// Adding a new order /// @@ -742,40 +766,6 @@ namespace WebDoorCreator.Data.Controllers return fatto; } - /// - /// Updating an order status - /// - /// - /// - /// - public async Task OrderUpdate(int orderId, int newStatus) - { - bool fatto = false; - using (WDCDataContext localDbCtx = new WDCDataContext(_configuration)) - { - try - { - var currRec = localDbCtx - .DbSetOrders - .Where(x => x.OrderId == orderId) - .FirstOrDefault(); - //if is not null edit the record found - if (currRec != null) - { - currRec.Status = newStatus; - localDbCtx.Entry(currRec).State = EntityState.Modified; - } - await localDbCtx.SaveChangesAsync(); - fatto = true; - } - catch (Exception exc) - { - Log.Error($"Eccezione durante OrderUpdate: {Environment.NewLine}{exc}"); - } - } - return fatto; - } - /// /// Remove order /// @@ -841,6 +831,40 @@ namespace WebDoorCreator.Data.Controllers return dbResult; } + /// + /// Updating an order status + /// + /// + /// + /// + public async Task OrderUpdate(int orderId, int newStatus) + { + bool fatto = false; + using (WDCDataContext localDbCtx = new WDCDataContext(_configuration)) + { + try + { + var currRec = localDbCtx + .DbSetOrders + .Where(x => x.OrderId == orderId) + .FirstOrDefault(); + //if is not null edit the record found + if (currRec != null) + { + currRec.Status = newStatus; + localDbCtx.Entry(currRec).State = EntityState.Modified; + } + await localDbCtx.SaveChangesAsync(); + fatto = true; + } + catch (Exception exc) + { + Log.Error($"Eccezione durante OrderUpdate: {Environment.NewLine}{exc}"); + } + } + return fatto; + } + /// /// Adding a new graphic param /// @@ -1051,6 +1075,7 @@ namespace WebDoorCreator.Data.Controllers } return dbResult; } + public Dictionary> VocLemmaGetAll() { Dictionary> DTOResult = new Dictionary>(); diff --git a/WebDoorCreator.Data/Services/QueueDataService.cs b/WebDoorCreator.Data/Services/QueueDataService.cs index 55cca09..4af7007 100644 --- a/WebDoorCreator.Data/Services/QueueDataService.cs +++ b/WebDoorCreator.Data/Services/QueueDataService.cs @@ -171,6 +171,16 @@ namespace WebDoorCreator.Data.Services answ = $"{rawData}"; } } + // se non trovata --> missing! + if (string.IsNullOrEmpty(answ)) + { + // leggo missing standard... + string missingFilePath = Path.Combine(System.IO.Directory.GetCurrentDirectory(), "wwwroot/images", "MissingOrange.svg"); + if (File.Exists(missingFilePath)) + { + answ = File.ReadAllText(missingFilePath); + } + } return answ; } diff --git a/WebDoorCreator.UI/Components/Buttons/ButtonsDoorDef.razor.cs b/WebDoorCreator.UI/Components/Buttons/ButtonsDoorDef.razor.cs index e3f32d9..f1fc27a 100644 --- a/WebDoorCreator.UI/Components/Buttons/ButtonsDoorDef.razor.cs +++ b/WebDoorCreator.UI/Components/Buttons/ButtonsDoorDef.razor.cs @@ -1,7 +1,5 @@ using Microsoft.AspNetCore.Components; using Microsoft.JSInterop; -using Newtonsoft.Json; -using System.Configuration; using WebDoorCreator.Data.DbModels; using WebDoorCreator.Data.DTO; using WebDoorCreator.Data.Services; @@ -11,11 +9,14 @@ namespace WebDoorCreator.UI.Components.Buttons { public partial class ButtonsDoorDef { + #region Public Properties + [CascadingParameter] public bool B_doorOpUpd { get; set; } [CascadingParameter] public string ErrCode { get; set; } = "ERROREEEEE"; + [CascadingParameter] public int idDoor { get; set; } = 0; @@ -24,6 +25,28 @@ namespace WebDoorCreator.UI.Components.Buttons [CascadingParameter] public bool IsErr { get; set; } = false; + + #endregion Public Properties + + #region Public Methods + + public async Task SaveYaml(string ddfContent) + { + await Task.Delay(1); + string fileName = Path.Combine("temp", $"Conf.yaml"); + + if (File.Exists(fileName)) + { + File.Delete(fileName); + } + // scrivo! + File.WriteAllText(fileName, ddfContent); + } + + #endregion Public Methods + + #region Protected Properties + protected Dictionary a { get; set; } = new Dictionary(); protected bool change @@ -62,20 +85,13 @@ namespace WebDoorCreator.UI.Components.Buttons [Inject] protected WebDoorCreatorService WDCService { get; set; } = null!; + [Inject] protected WDCUserService WDCUService { get; set; } = null!; - public async Task SaveYaml(string ddfContent) - { - await Task.Delay(1); - string fileName = Path.Combine("temp", $"Conf.yaml"); - if (File.Exists(fileName)) - { - File.Delete(fileName); - } - // scrivo! - File.WriteAllText(fileName, ddfContent); - } + #endregion Protected Properties + + #region Protected Methods /// /// Effettua Richiesta visione porta 3D @@ -117,7 +133,7 @@ namespace WebDoorCreator.UI.Components.Buttons // versione corrente del DDF generato int currVers = await QDataServ.SendCalcReq(idDoor, currDdf); - if(currVers > 0) + if (currVers > 0) { IsErr = false; } @@ -150,6 +166,11 @@ namespace WebDoorCreator.UI.Components.Buttons await Task.Delay(1); NavManager.NavigateTo($"OrderDetails?idOrd={idOrd}"); } + + #endregion Protected Methods + + #region Private Methods + private async void WDCRService_EA_UpdDoorOp() { await InvokeAsync(() => @@ -157,5 +178,7 @@ namespace WebDoorCreator.UI.Components.Buttons StateHasChanged(); }); } + + #endregion Private Methods } } \ No newline at end of file diff --git a/WebDoorCreator.UI/Components/DoorDef/DoorDefOrderTopRow.razor b/WebDoorCreator.UI/Components/DoorDef/DoorDefOrderTopRow.razor index 32d0c15..95dbb6c 100644 --- a/WebDoorCreator.UI/Components/DoorDef/DoorDefOrderTopRow.razor +++ b/WebDoorCreator.UI/Components/DoorDef/DoorDefOrderTopRow.razor @@ -2,6 +2,9 @@ {
+ +
+
@*
Insert Date
*@
Insert Date: @currOrderStatus.DateIns
diff --git a/WebDoorCreator.UI/Components/DoorDef/DoorDefOrderTopRow.razor.cs b/WebDoorCreator.UI/Components/DoorDef/DoorDefOrderTopRow.razor.cs index f7ec723..56356c8 100644 --- a/WebDoorCreator.UI/Components/DoorDef/DoorDefOrderTopRow.razor.cs +++ b/WebDoorCreator.UI/Components/DoorDef/DoorDefOrderTopRow.razor.cs @@ -1,15 +1,66 @@ using Microsoft.AspNetCore.Components; +using Microsoft.JSInterop; using WebDoorCreator.Data.DbModels; +using WebDoorCreator.UI.Data; namespace WebDoorCreator.UI.Components.DoorDef { public partial class DoorDefOrderTopRow { - [Parameter] - public OrderStatusViewModel? currOrderStatus { get; set; } = null; + #region Public Properties [Parameter] public string bgColor { get; set; } = ""; + [CascadingParameter] + public int idDoor { get; set; } = 0; + + [Parameter] + public OrderStatusViewModel? currOrderStatus { get; set; } = null; + + #endregion Public Properties + + #region Protected Properties + + [Inject] + protected IJSRuntime JSRuntime { get; set; } = null!; + + [Inject] + protected WebDoorCreatorService WDCService { get; set; } = null!; + [Inject] + protected NavigationManager NavManager { get; set; } = null!; + + #endregion Protected Properties + + #region Protected Methods + + /// + /// Elimina porta se richiesto + /// + /// + protected async Task deleteRecord() + { + if (!await JSRuntime.InvokeAsync("confirm", $"Do you really want to delete this door?")) + return; + await Task.Delay(1); + if (idDoor > 0 && currOrderStatus != null) + { + var ordDoors = await WDCService.DoorGetByOrderId(currOrderStatus.OrderId); + if (ordDoors != null) + { + var CurrDoor = ordDoors.Where(x => x.DoorId == idDoor).FirstOrDefault(); + if (CurrDoor != null) + { + await WDCService.DoorDelete(CurrDoor); + if (currOrderStatus != null) + { + NavManager.NavigateTo($"OrderDetails?idOrd={currOrderStatus.OrderId}&orderStat={currOrderStatus.OrderStatus}"); + } + } + } + } + } + + #endregion Protected Methods } } \ No newline at end of file diff --git a/WebDoorCreator.UI/Data/WebDoorCreatorService.cs b/WebDoorCreator.UI/Data/WebDoorCreatorService.cs index 5fa7afb..e70d574 100644 --- a/WebDoorCreator.UI/Data/WebDoorCreatorService.cs +++ b/WebDoorCreator.UI/Data/WebDoorCreatorService.cs @@ -597,7 +597,47 @@ namespace WebDoorCreator.UI.Data } /// - /// Doors list by orderId + /// Doors list, last in desc order + /// + public async Task?> DoorGetLast(int numRec) + { + string source = "DB"; + List? dbResult = new List(); + // cerco da cache + string currKey = $"{Constants.rKeyDoorLast}:{numRec}"; + Stopwatch stopWatch = new Stopwatch(); + stopWatch.Start(); + string? rawData = await redisDb.StringGetAsync(currKey); + if (!string.IsNullOrEmpty(rawData)) + { + source = "REDIS"; + var tempResult = JsonConvert.DeserializeObject>(rawData); + if (tempResult == null) + { + dbResult = new List(); + } + else + { + dbResult = tempResult; + } + } + else + { + dbResult = dbController.DoorsGetLast(numRec); + rawData = JsonConvert.SerializeObject(dbResult, JSSettings); + await redisDb.StringSetAsync(currKey, rawData, FastCache); + } + if (dbResult == null) + { + dbResult = new List(); + } + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + Log.Debug($"DoorGetLast | {source} in: {ts.TotalMilliseconds} ms"); + return dbResult; + } + /// + /// Doors list by numRec /// public async Task?> DoorGetByOrderId(int orderId) { @@ -720,7 +760,7 @@ namespace WebDoorCreator.UI.Data } /// - /// Doors list by orderId + /// Doors list by numRec /// public async Task> DoorOpGetByDoorId(int doorId) { @@ -760,7 +800,7 @@ namespace WebDoorCreator.UI.Data return dbResult; } /// - /// Doors list by orderId + /// Doors list by numRec /// public async Task DoorOpGetById(int doorOpId) { @@ -906,7 +946,7 @@ namespace WebDoorCreator.UI.Data { // cerco il setup del template selezionato var listRecordTmp = await ListValuesGetAll(currDoorOp.ObjectId, "template"); - if (listRecordTmp != null && actDict.ContainsKey("Folder") && (actDict.ContainsKey("template") || actDict.ContainsKey("shape")) ) + if (listRecordTmp != null && actDict.ContainsKey("Folder") && (actDict.ContainsKey("template") || actDict.ContainsKey("shape"))) { string actKey = actDict["template"];// Path.Combine(actDict["Folder"], actDict["template"]); var firstTemplate = listRecordTmp.Where(x => x.Value == actKey).FirstOrDefault(); @@ -962,7 +1002,7 @@ namespace WebDoorCreator.UI.Data } /// - /// Doors list by orderId + /// Doors list by numRec /// public async Task?> DoorOpTypeGetAll() { @@ -1365,7 +1405,9 @@ namespace WebDoorCreator.UI.Data } else { - dbResult = dbController.OrderStatusGetAll(companyId, orderStatus, dataFrom, dataTo); + var rawResult = dbController.OrderStatusGetAll(companyId, orderStatus, dataFrom, dataTo); + // ordino desc in ram... + dbResult = rawResult.OrderByDescending(x => x.OrderId).ToList(); rawData = JsonConvert.SerializeObject(dbResult, JSSettings); await redisDb.StringSetAsync(currKey, rawData, UltraLongCache); } diff --git a/WebDoorCreator.UI/Pages/DoorDefinition.razor.cs b/WebDoorCreator.UI/Pages/DoorDefinition.razor.cs index 2850271..49157bd 100644 --- a/WebDoorCreator.UI/Pages/DoorDefinition.razor.cs +++ b/WebDoorCreator.UI/Pages/DoorDefinition.razor.cs @@ -6,7 +6,6 @@ using WebDoorCreator.Data; using WebDoorCreator.Data.DbModels; using WebDoorCreator.Data.Services; using WebDoorCreator.UI.Data; -using static WebDoorCreator.UI.Data.WDCRefreshService; namespace WebDoorCreator.UI.Pages { @@ -34,6 +33,7 @@ namespace WebDoorCreator.UI.Pages protected int idOrd { get; set; } = 0; + protected bool isDoorOpConf { get; set; } = false; protected bool IsErr { get; set; } = false; [Inject] @@ -50,7 +50,6 @@ namespace WebDoorCreator.UI.Pages protected QueueDataService QDataServ { get; set; } = null!; protected string userLang { get; set; } = "EN"; - protected bool isDoorOpConf { get; set; } = false; [Inject] protected WDCRefreshService WDCRService { get; set; } = null!; @@ -75,7 +74,6 @@ namespace WebDoorCreator.UI.Pages }); } - /// /// gestione rilettura info /// @@ -101,13 +99,13 @@ namespace WebDoorCreator.UI.Pages } userLang = WDCUService.currLanguage ?? "EN"; #if false - isDoorOpConf = WDCRService.isDoorOpConf; + isDoorOpConf = WDCRService.isDoorOpConf; #endif WDCUService.EA_CurrLanguage += WDUService_EA_CurrLanguage; QDataServ.CalcDonePipe.EA_NewMessage += CalcDonePipe_EA_NewMessage; WDCRService.EA_UpdDoorOp += WDService_EA_DoorOpUpdated; #if false - WDCRService.EA_ConfDoorOp += WDService_EA_DoorOpConfirmed; + WDCRService.EA_ConfDoorOp += WDService_EA_DoorOpConfirmed; #endif } @@ -215,8 +213,6 @@ namespace WebDoorCreator.UI.Pages //if (string.IsNullOrEmpty(DoorSvgContent)) //{ - - //} await Task.Run(async () => await InvokeAsync(StateHasChanged)); } @@ -235,14 +231,14 @@ namespace WebDoorCreator.UI.Pages StateHasChanged(); } + #endregion Private Methods + #if false private void WDService_EA_DoorOpConfirmed() { isDoorOpConf = WDCRService.isDoorOpConf; StateHasChanged(); - } + } #endif - - #endregion Private Methods } } \ No newline at end of file diff --git a/WebDoorCreator.UI/Pages/TestPage.razor b/WebDoorCreator.UI/Pages/TestPage.razor index e2fcaca..0541e63 100644 --- a/WebDoorCreator.UI/Pages/TestPage.razor +++ b/WebDoorCreator.UI/Pages/TestPage.razor @@ -1,6 +1,9 @@ @using WebDoorCreator.UI.Components.SvgComp +@using WebDoorCreator.UI.Data @page "/TestPage" +@inject WebDoorCreatorService WDCService +

TestPage

@@ -40,12 +43,23 @@
- @for (int i = 183; i < 205; i++) + @if (DoorsList == null) { -
- @i
- -
+ + } + else + { + foreach (var door in DoorsList) + { + + @*} + for (int i = 183; i < 220; i++) + {*@ +
+ @door.DoorId
+ +
+ } }
@@ -80,14 +94,22 @@ protected Dictionary msgList = new Dictionary(); - protected override void OnInitialized() + protected override async Task OnInitializedAsync() { + //return base.OnInitializedAsync(); + //} + + //protected override void OnInitialized() + //{ msgList = new Dictionary(); msgList.Add("T1", "Titolo"); msgList.Add("M1", "Messaggio 1"); msgList.Add("M2", "MEssaggio 2"); + DoorsList = await WDCService.DoorGetLast(100); } + protected List? DoorsList { get; set; } = null; + protected async Task exeFun() { await Task.Delay(1); diff --git a/WebDoorCreator.UI/wwwroot/images/MissingGray.svg b/WebDoorCreator.UI/wwwroot/images/MissingGray.svg new file mode 100644 index 0000000..830e2f2 --- /dev/null +++ b/WebDoorCreator.UI/wwwroot/images/MissingGray.svg @@ -0,0 +1,59 @@ + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/WebDoorCreator.UI/wwwroot/images/MissingOrange.svg b/WebDoorCreator.UI/wwwroot/images/MissingOrange.svg new file mode 100644 index 0000000..88cdfd4 --- /dev/null +++ b/WebDoorCreator.UI/wwwroot/images/MissingOrange.svg @@ -0,0 +1,59 @@ + + + + + + + + image/svg+xml + + + + + + + + + From 4f92e440248fde470da301026beb1c8574ff9ce4 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 17 May 2023 18:52:52 +0200 Subject: [PATCH 03/14] Fix vari rename ABH --> DCA --- Docs/ActualToDo.md | 1 + Docs/ActualToDo.pdf | Bin 77579 -> 78867 bytes .../Components/DoorMan/DoorList.razor | 2 +- .../Components/DoorMan/DoorList.razor.cs | 6 +- .../Data/WebDoorCreatorService.cs | 2 +- WebDoorCreator.UI/Pages/ApprovedByAbh.razor | 9 - .../Pages/ApprovedByCompany.razor | 9 + .../Pages/Definingdoorsstage.razor | 9 - ...ttoabh.razor => DefinitionDoorStage.razor} | 2 +- WebDoorCreator.UI/Pages/SentToCompany.razor | 9 + WebDoorCreator.UI/Shared/LoginDisplay.razor | 179 +++++++++--------- ...pproved_by_ABH.png => Approved_by_DCA.png} | Bin .../{Sent_to_ABH.png => Sent_to_DCA.png} | Bin 13 files changed, 114 insertions(+), 114 deletions(-) delete mode 100644 WebDoorCreator.UI/Pages/ApprovedByAbh.razor create mode 100644 WebDoorCreator.UI/Pages/ApprovedByCompany.razor delete mode 100644 WebDoorCreator.UI/Pages/Definingdoorsstage.razor rename WebDoorCreator.UI/Pages/{Senttoabh.razor => DefinitionDoorStage.razor} (74%) create mode 100644 WebDoorCreator.UI/Pages/SentToCompany.razor rename WebDoorCreator.UI/wwwroot/images/{Approved_by_ABH.png => Approved_by_DCA.png} (100%) rename WebDoorCreator.UI/wwwroot/images/{Sent_to_ABH.png => Sent_to_DCA.png} (100%) diff --git a/Docs/ActualToDo.md b/Docs/ActualToDo.md index e4fc7f9..e6d8dfd 100644 --- a/Docs/ActualToDo.md +++ b/Docs/ActualToDo.md @@ -45,6 +45,7 @@ Per completare: - [x] sostituire il salva generale con 2 buttons: - salva, o meglio RECALC PNG = update PNG, potrebbe andare in automatico DOPO i vari SALVA nella pagina (opzione x auto-recalc?!?) - get 3D obj (in new window/tab) +- [x] delete singola porta da ordine ### DoorDefinition Hardware diff --git a/Docs/ActualToDo.pdf b/Docs/ActualToDo.pdf index 38bdb10d4a953886955ab3a641deed46ace1e3d3..5d5b01d05d725de8f1ec0636f687361bb184d6d1 100644 GIT binary patch delta 25942 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%0A2&!P_lZO$j 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 delta 25065 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 diff --git a/WebDoorCreator.UI/Components/DoorMan/DoorList.razor b/WebDoorCreator.UI/Components/DoorMan/DoorList.razor index d3ea635..8bfc991 100644 --- a/WebDoorCreator.UI/Components/DoorMan/DoorList.razor +++ b/WebDoorCreator.UI/Components/DoorMan/DoorList.razor @@ -10,7 +10,7 @@

- +
} diff --git a/WebDoorCreator.UI/Components/DoorMan/DoorList.razor.cs b/WebDoorCreator.UI/Components/DoorMan/DoorList.razor.cs index 29ef427..ddade13 100644 --- a/WebDoorCreator.UI/Components/DoorMan/DoorList.razor.cs +++ b/WebDoorCreator.UI/Components/DoorMan/DoorList.razor.cs @@ -111,9 +111,9 @@ namespace WebDoorCreator.UI.Components.DoorMan { AddFromTemplDict.Add("ADD NEW DOOR FROM TEMPLATE", ""); } - if (!SendOrderDict.ContainsKey("SEND TO ABH")) + if (!SendOrderDict.ContainsKey("SEND TO DCA")) { - SendOrderDict.Add("SEND TO ABH", ""); + SendOrderDict.Add("SEND TO DCA", ""); } if (currOrderId != -1) { @@ -245,7 +245,7 @@ namespace WebDoorCreator.UI.Components.DoorMan } } } - protected async void sendToAbh(int ordId, int orderStat) + protected async void sendToCompany(int ordId, int orderStat) { if (orderStat == 10) { diff --git a/WebDoorCreator.UI/Data/WebDoorCreatorService.cs b/WebDoorCreator.UI/Data/WebDoorCreatorService.cs index e70d574..54f14e1 100644 --- a/WebDoorCreator.UI/Data/WebDoorCreatorService.cs +++ b/WebDoorCreator.UI/Data/WebDoorCreatorService.cs @@ -212,7 +212,7 @@ namespace WebDoorCreator.UI.Data TableName = "All", FieldName = "OrderStep", Value = "20", - Label = "Sent to ABH", + Label = "Sent to DCA", Ordinal = 20, DefaultVal = "#FBC02D", InputType = "" diff --git a/WebDoorCreator.UI/Pages/ApprovedByAbh.razor b/WebDoorCreator.UI/Pages/ApprovedByAbh.razor deleted file mode 100644 index 178a40e..0000000 --- a/WebDoorCreator.UI/Pages/ApprovedByAbh.razor +++ /dev/null @@ -1,9 +0,0 @@ -@page "/abhapprove" - -

Approved by ABH

- - - -@code { - -} diff --git a/WebDoorCreator.UI/Pages/ApprovedByCompany.razor b/WebDoorCreator.UI/Pages/ApprovedByCompany.razor new file mode 100644 index 0000000..025c5ea --- /dev/null +++ b/WebDoorCreator.UI/Pages/ApprovedByCompany.razor @@ -0,0 +1,9 @@ +@page "/ApprovedByCompany" + +

Approved by DCA

+ + + +@code { + +} diff --git a/WebDoorCreator.UI/Pages/Definingdoorsstage.razor b/WebDoorCreator.UI/Pages/Definingdoorsstage.razor deleted file mode 100644 index ada5ab0..0000000 --- a/WebDoorCreator.UI/Pages/Definingdoorsstage.razor +++ /dev/null @@ -1,9 +0,0 @@ -@page "/senttoabh" - -

Sent to ABH

- - - -@code { - -} diff --git a/WebDoorCreator.UI/Pages/Senttoabh.razor b/WebDoorCreator.UI/Pages/DefinitionDoorStage.razor similarity index 74% rename from WebDoorCreator.UI/Pages/Senttoabh.razor rename to WebDoorCreator.UI/Pages/DefinitionDoorStage.razor index 8b58806..c991bd0 100644 --- a/WebDoorCreator.UI/Pages/Senttoabh.razor +++ b/WebDoorCreator.UI/Pages/DefinitionDoorStage.razor @@ -1,4 +1,4 @@ -@page "/definingdoorsstage" +@page "/DefinitionDoorStage"

Order definition stage

diff --git a/WebDoorCreator.UI/Pages/SentToCompany.razor b/WebDoorCreator.UI/Pages/SentToCompany.razor new file mode 100644 index 0000000..10396e3 --- /dev/null +++ b/WebDoorCreator.UI/Pages/SentToCompany.razor @@ -0,0 +1,9 @@ +@page "/SentToCompany" + +

Sent to DCA

+ + + +@code { + +} diff --git a/WebDoorCreator.UI/Shared/LoginDisplay.razor b/WebDoorCreator.UI/Shared/LoginDisplay.razor index 9bf38dd..1b3b244 100644 --- a/WebDoorCreator.UI/Shared/LoginDisplay.razor +++ b/WebDoorCreator.UI/Shared/LoginDisplay.razor @@ -1,96 +1,95 @@ - -@* +@* *@ -
- @if (NavManager.Uri.Contains("DoorDefinition")) - { - - - - - - - } - else if (NavManager.Uri.Contains("OrdersHomePage")) - { - - - - - - - - - } + +@* *@ - @if (!NavManager.Uri.Contains("Register") || !NavManager.Uri.Contains("Login")) - { - Register - Log in - } - @* +@if (!NavManager.Uri.Contains("Register") || !NavManager.Uri.Contains("Login")) +{ + Register + Log in +} +@* *@ diff --git a/WebDoorCreator.UI/wwwroot/images/Approved_by_ABH.png b/WebDoorCreator.UI/wwwroot/images/Approved_by_DCA.png similarity index 100% rename from WebDoorCreator.UI/wwwroot/images/Approved_by_ABH.png rename to WebDoorCreator.UI/wwwroot/images/Approved_by_DCA.png diff --git a/WebDoorCreator.UI/wwwroot/images/Sent_to_ABH.png b/WebDoorCreator.UI/wwwroot/images/Sent_to_DCA.png similarity index 100% rename from WebDoorCreator.UI/wwwroot/images/Sent_to_ABH.png rename to WebDoorCreator.UI/wwwroot/images/Sent_to_DCA.png From 7d7d65e250c3cc5e0c25e8ec2ef4408b80e99f58 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 17 May 2023 19:11:59 +0200 Subject: [PATCH 04/14] Fix conteggio istanze in HwDetails --- .../Components/Hardware/HardwareList.razor | 6 +- .../Components/Hardware/HardwareList.razor.cs | 7 +- .../Hardware/HardwareNewPanel.razor | 16 +- .../Hardware/HardwareNewPanel.razor.cs | 165 ++++++++++-------- 4 files changed, 104 insertions(+), 90 deletions(-) diff --git a/WebDoorCreator.UI/Components/Hardware/HardwareList.razor b/WebDoorCreator.UI/Components/Hardware/HardwareList.razor index 6aabcfd..dec2f8d 100644 --- a/WebDoorCreator.UI/Components/Hardware/HardwareList.razor +++ b/WebDoorCreator.UI/Components/Hardware/HardwareList.razor @@ -4,11 +4,7 @@ @if (HwToShow != null) {
- -
- -
- +
} else diff --git a/WebDoorCreator.UI/Components/Hardware/HardwareList.razor.cs b/WebDoorCreator.UI/Components/Hardware/HardwareList.razor.cs index afa1bf9..ec055cf 100644 --- a/WebDoorCreator.UI/Components/Hardware/HardwareList.razor.cs +++ b/WebDoorCreator.UI/Components/Hardware/HardwareList.razor.cs @@ -47,12 +47,6 @@ namespace WebDoorCreator.UI.Components.Hardware #region Protected Methods - protected async Task backToList() - { - await Task.Delay(1); - HwToShow = null; - } - protected async Task hwToAdd() { await Task.Delay(1); @@ -250,6 +244,7 @@ namespace WebDoorCreator.UI.Components.Hardware { if (isDel) { + HwToShow = null; await ReloadData(); } } diff --git a/WebDoorCreator.UI/Components/Hardware/HardwareNewPanel.razor b/WebDoorCreator.UI/Components/Hardware/HardwareNewPanel.razor index 432ff66..45b4548 100644 --- a/WebDoorCreator.UI/Components/Hardware/HardwareNewPanel.razor +++ b/WebDoorCreator.UI/Components/Hardware/HardwareNewPanel.razor @@ -6,16 +6,14 @@ else { @if (DoorOpList != null) { - @*
-
-
- @(translate(HwLabel)) -
-
+
+
+ +
+
+
+
-
*@ -
-
diff --git a/WebDoorCreator.UI/Components/Hardware/HardwareNewPanel.razor.cs b/WebDoorCreator.UI/Components/Hardware/HardwareNewPanel.razor.cs index d145ebd..ceecfea 100644 --- a/WebDoorCreator.UI/Components/Hardware/HardwareNewPanel.razor.cs +++ b/WebDoorCreator.UI/Components/Hardware/HardwareNewPanel.razor.cs @@ -1,8 +1,6 @@ using Microsoft.AspNetCore.Components; using Newtonsoft.Json; -using WebDoorCreator.Data; using WebDoorCreator.Data.DbModels; -using WebDoorCreator.UI.Components.DoorMan; using WebDoorCreator.UI.Data; using static WebDoorCreator.UI.Data.WDCRefreshService; @@ -33,25 +31,81 @@ namespace WebDoorCreator.UI.Components.Hardware [Parameter] public string HwLabel { get; set; } = ""; - [Parameter] - public int HwInst { get; set; } = 0; - [Parameter] public string Lingua { get; set; } = "EN"; + [CascadingParameter] public string UserId { get; set; } = ""; - protected bool _isDoorOpConf { get; set; } = false; - #endregion Public Properties + #region Public Methods + + public void Dispose() + { + WDCRefresh.EA_ConfDoorOp -= WDCRefresh_EA_ConfDoorOp; + } + + #endregion Public Methods + #region Protected Properties - protected List? DoorOpList { get; set; } = null!; + protected bool _isDoorOpConf { get; set; } = false; + + protected bool B_doorOpUpd + { + get => WDCRService.isDoorOpUpd; + set => WDCRService.isDoorOpUpd = value; + } + protected List DoorOp2ModList { get; set; } = new List(); + protected List? DoorOpList { get; set; } = null!; + + protected int HwInst + { + get + { + int answ = 0; + if (DoorOpList != null) + { + answ = DoorOpList + .Where(x => x.ObjectId == HwCode) + .ToList() + .Count(); + } + return answ; + } + } + //protected int instNum { get; set; } = 1; + protected bool isLoading { get; set; } = false; + + protected List? ListRecord { get; set; } = null; + + [Inject] + protected WDCRefreshService WDCRefresh { get; set; } = null!; + + [Inject] + protected WDCRefreshService WDCRService { get; set; } = null!; + + [Inject] + protected WebDoorCreatorService WDCService { get; set; } = null!; + + [Inject] + protected WDCVocabularyService WDVService { get; set; } = null!; + + #endregion Protected Properties + + #region Protected Methods + + protected async Task backToList() + { + await Task.Delay(1); + await E_act2Rel.InvokeAsync(true); + } + protected int getDoorOpInstNum(int doorOpId) { int answ = 0; @@ -62,56 +116,6 @@ namespace WebDoorCreator.UI.Components.Hardware return answ + 1; } - [Inject] - protected WDCRefreshService WDCRefresh { get; set; } = null!; - - [Inject] - protected WebDoorCreatorService WDCService { get; set; } = null!; - [Inject] - protected WDCVocabularyService WDVService { get; set; } = null!; - - public void Dispose() - { - WDCRefresh.EA_ConfDoorOp -= WDCRefresh_EA_ConfDoorOp; - } - - protected override async Task OnInitializedAsync() - { - await Task.Delay(1); - WDCRefresh.EA_ConfDoorOp += WDCRefresh_EA_ConfDoorOp; - //return base.OnInitializedAsync(); - } - - protected string translate(string lemma) - { - string answ = ""; - - answ = WDVService.Traduci(Lingua, lemma); - - return answ; - } - - private void WDCRefresh_EA_ConfDoorOp(object? sender, EventArgs e) - { - DOPEventArgs currArgs = (DOPEventArgs)e; - // SE sono sula porta indicata + objId corretto --> refresh - if (currArgs.DoorId == DoorId && currArgs.ObjectId == HwCode) - { - var pupd = InvokeAsync(async () => await ReloadData()); - } - } - #endregion Protected Properties - - #region Protected Methods - - protected bool B_doorOpUpd - { - get => WDCRService.isDoorOpUpd; - set => WDCRService.isDoorOpUpd = value; - } - - [Inject] - protected WDCRefreshService WDCRService { get; set; } = null!; protected async Task hwToAdd(string message) { await Task.Delay(1); @@ -236,22 +240,21 @@ namespace WebDoorCreator.UI.Components.Hardware await Task.Delay(1); B_doorOpUpd = true; DoorOp2ModList.Add(currItem); - } } + + protected override async Task OnInitializedAsync() + { + await Task.Delay(1); + WDCRefresh.EA_ConfDoorOp += WDCRefresh_EA_ConfDoorOp; + //return base.OnInitializedAsync(); + } + protected override async Task OnParametersSetAsync() { await ReloadData(); } - #endregion Protected Methods - - #region Private Methods - - protected bool isLoading { get; set; } = false; - - protected List? ListRecord { get; set; } = null; - protected async Task setRefOnDelete(bool isDel) { if (isDel) @@ -260,6 +263,19 @@ namespace WebDoorCreator.UI.Components.Hardware } } + protected string translate(string lemma) + { + string answ = ""; + + answ = WDVService.Traduci(Lingua, lemma); + + return answ; + } + + #endregion Protected Methods + + #region Private Methods + private async Task ReloadData() { isLoading = true; @@ -275,11 +291,20 @@ namespace WebDoorCreator.UI.Components.Hardware DoorOpList = ListRecord.Where(x => (x.DoorId == DoorId) && (x.ObjectId == HwCode)).ToList(); } isLoading = false; - //await Task.Delay(50); + //await Task.Delay(50); await InvokeAsync(StateHasChanged); } + + private void WDCRefresh_EA_ConfDoorOp(object? sender, EventArgs e) + { + DOPEventArgs currArgs = (DOPEventArgs)e; + // SE sono sula porta indicata + objId corretto --> refresh + if (currArgs.DoorId == DoorId && currArgs.ObjectId == HwCode) + { + var pupd = InvokeAsync(async () => await ReloadData()); + } + } + #endregion Private Methods - - } } \ No newline at end of file From 6844b6edd33f9d8ce732b5de01db425a598b9422 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 17 May 2023 19:25:29 +0200 Subject: [PATCH 05/14] Modifiche x migliorare fit immagine svg porta: - da testare con oggetto image + svg embedded --- Docs/ActualToDo.md | 3 +++ Docs/ActualToDo.pdf | Bin 78867 -> 83394 bytes .../Components/DoorDef/DoorPreview.razor | 14 +++++++------- WebDoorCreator.UI/Pages/DoorDefinition.razor | 6 +++--- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/Docs/ActualToDo.md b/Docs/ActualToDo.md index e6d8dfd..edab8a4 100644 --- a/Docs/ActualToDo.md +++ b/Docs/ActualToDo.md @@ -46,6 +46,9 @@ Per completare: - salva, o meglio RECALC PNG = update PNG, potrebbe andare in automatico DOPO i vari SALVA nella pagina (opzione x auto-recalc?!?) - get 3D obj (in new window/tab) - [x] delete singola porta da ordine +- [x] navigazione in ritorno come da FIGMA in HwNewInst +- [x] refresh conteggi su approvazione +- [x] conteggio istanze in aggiunta HW ### DoorDefinition Hardware diff --git a/Docs/ActualToDo.pdf b/Docs/ActualToDo.pdf index 5d5b01d05d725de8f1ec0636f687361bb184d6d1..514bf9ba3f3bd248bc77b54e5e87c084f08d0406 100644 GIT binary patch delta 45132 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

qyykab|DgDq_Wa&xLucy`kWsY;`QN(s%a-3PA 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 delta 41845 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

lB4Oy5Zm2THevaiTTP5D}q2L-!Ro2k5{| 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 - @*@if (IsErr) - { - @*

- }*@ +@*
*@ +
@if (!string.IsNullOrEmpty(@SvgContent)) { -
- @svgPreview + @*
*@ +
+
+ @svgPreview +
}
\ No newline at end of file diff --git a/WebDoorCreator.UI/Pages/DoorDefinition.razor b/WebDoorCreator.UI/Pages/DoorDefinition.razor index ea8fbe5..c914932 100644 --- a/WebDoorCreator.UI/Pages/DoorDefinition.razor +++ b/WebDoorCreator.UI/Pages/DoorDefinition.razor @@ -18,11 +18,11 @@
-
+
-
+
@if (currDefStep == 10) { @@ -44,7 +44,7 @@
-
+
From 9ff4d5613790b047fdb60adc67f7c506a0a5db0f Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli (MBA)" Date: Wed, 17 May 2023 21:14:21 +0200 Subject: [PATCH 06/14] Conf x base url su IIS, con base, staging, prod --- WebDoorCreator.UI/Program.cs | 4 + WebDoorCreator.UI/appsettings.Production.json | 13 +++ WebDoorCreator.UI/appsettings.Staging.json | 13 +++ WebDoorCreator.UI/appsettings.json | 89 ++++++++++--------- 4 files changed, 75 insertions(+), 44 deletions(-) create mode 100644 WebDoorCreator.UI/appsettings.Production.json create mode 100644 WebDoorCreator.UI/appsettings.Staging.json diff --git a/WebDoorCreator.UI/Program.cs b/WebDoorCreator.UI/Program.cs index b4141ca..1d47488 100644 --- a/WebDoorCreator.UI/Program.cs +++ b/WebDoorCreator.UI/Program.cs @@ -62,6 +62,10 @@ builder.Services.AddBlazoredLocalStorage(); builder.Services.AddBlazoredSessionStorage(); var app = builder.Build(); +// aggiunt base URL x routing corretto +//app.UsePathBase("/WDC/UI"); +app.UsePathBase(configuration["RumtimeOpt:BaseUrl"]); + // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { diff --git a/WebDoorCreator.UI/appsettings.Production.json b/WebDoorCreator.UI/appsettings.Production.json new file mode 100644 index 0000000..5e4b2ce --- /dev/null +++ b/WebDoorCreator.UI/appsettings.Production.json @@ -0,0 +1,13 @@ +{ + "DetailedErrors": true, + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "RumtimeOpt": { + "MaxDayCalcCache": 7, + "BaseUrl": "/WDC/UI" + } +} \ No newline at end of file diff --git a/WebDoorCreator.UI/appsettings.Staging.json b/WebDoorCreator.UI/appsettings.Staging.json new file mode 100644 index 0000000..5e4b2ce --- /dev/null +++ b/WebDoorCreator.UI/appsettings.Staging.json @@ -0,0 +1,13 @@ +{ + "DetailedErrors": true, + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "RumtimeOpt": { + "MaxDayCalcCache": 7, + "BaseUrl": "/WDC/UI" + } +} \ No newline at end of file diff --git a/WebDoorCreator.UI/appsettings.json b/WebDoorCreator.UI/appsettings.json index f3b6956..5355d74 100644 --- a/WebDoorCreator.UI/appsettings.json +++ b/WebDoorCreator.UI/appsettings.json @@ -1,47 +1,48 @@ { - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + "ConnectionStrings": { + "Identity.DB": "Server=SQL2016DEV;Database=WebDoorCreator; User ID=sa;Password=keyhammer16; integrated security=False; MultipleActiveResultSets=True; App=WebDoorCreator.UI;", + "Redis": "nkcredis.steamware.net:6379, DefaultDatabase=11, connectTimeout=5000, syncTimeout=5000, asyncTimeout=5000, abortConnect=false, ssl=false, password=BtN9Py1wtLfLRvmzWnOPJ7RytDM+CLiVsJ/16zduNTlV8IOPGNrtzJSXPUnImA5PqmUMhKaUqo9NdHIG", + "WDC.DB": "Server=SQL2016DEV;Database=WebDoorCreator; User ID=sa;Password=keyhammer16; integrated security=False; MultipleActiveResultSets=True; App=WebDoorCreator.UI;" + }, + "ExternalProviders": { + "MailKit": { + "SMTP": { + "Address": "smtp-mail.outlook.com", + "Port": "587", + "Account": "steamwarebot@outlook.it", + "Password": "siamoInViaNazionale93", + "SenderEmail": "steamwarebot@outlook.it", + "SenderName": "Steamware Email BOT" + } + } + }, + "SetupOpt": { + "DisableIdentMigrate": true, + "DisableWDCMigrate": true + }, + "RumtimeOpt": { + "MaxDayCalcCache": 7, + "BaseUrl": "/WDC/UI" + }, + "ConfDDF": { + "Header": [ + "#WEBDOORCREATOR", + "#Config: EgtCompoBase", + "#Door1", + "" + ], + "Footer": [ + "", + "---" + ], + "VersNumber": "2", + "RemoveDoorOps": true } - }, - "AllowedHosts": "*", - "ConnectionStrings": { - "Identity.DB": "Server=SQL2016DEV;Database=WebDoorCreator; User ID=sa;Password=keyhammer16; integrated security=False; MultipleActiveResultSets=True; App=WebDoorCreator.UI;", - "Redis": "nkcredis.steamware.net:6379, DefaultDatabase=11, connectTimeout=5000, syncTimeout=5000, asyncTimeout=5000, abortConnect=false, ssl=false, password=BtN9Py1wtLfLRvmzWnOPJ7RytDM+CLiVsJ/16zduNTlV8IOPGNrtzJSXPUnImA5PqmUMhKaUqo9NdHIG", - "WDC.DB": "Server=SQL2016DEV;Database=WebDoorCreator; User ID=sa;Password=keyhammer16; integrated security=False; MultipleActiveResultSets=True; App=WebDoorCreator.UI;" - }, - "ExternalProviders": { - "MailKit": { - "SMTP": { - "Address": "smtp-mail.outlook.com", - "Port": "587", - "Account": "steamwarebot@outlook.it", - "Password": "siamoInViaNazionale93", - "SenderEmail": "steamwarebot@outlook.it", - "SenderName": "Steamware Email BOT" - } - } - }, - "SetupOpt": { - "DisableIdentMigrate": true, - "DisableWDCMigrate": true - }, - "RumtimeOpt": { - "MaxDayCalcCache": 7 - }, - "ConfDDF": { - "Header": [ - "#WEBDOORCREATOR", - "#Config: EgtCompoBase", - "#Door1", - "" - ], - "Footer": [ - "", - "---" - ], - "VersNumber": "2", - "RemoveDoorOps": true - } } \ No newline at end of file From c673dcc627752d8db815f6a9dd703acd0bc10562 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli (MBA)" Date: Wed, 17 May 2023 21:23:21 +0200 Subject: [PATCH 07/14] Update logo su nav menu top --- WebDoorCreator.UI/Components/Gen/NavMenuHorizontal.razor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebDoorCreator.UI/Components/Gen/NavMenuHorizontal.razor b/WebDoorCreator.UI/Components/Gen/NavMenuHorizontal.razor index 4634d75..7a44d62 100644 --- a/WebDoorCreator.UI/Components/Gen/NavMenuHorizontal.razor +++ b/WebDoorCreator.UI/Components/Gen/NavMenuHorizontal.razor @@ -5,7 +5,7 @@
- +
diff --git a/WebDoorCreator.UI/Components/Hardware/HardwareNewPanel.razor.cs b/WebDoorCreator.UI/Components/Hardware/HardwareNewPanel.razor.cs index ceecfea..8fcc296 100644 --- a/WebDoorCreator.UI/Components/Hardware/HardwareNewPanel.razor.cs +++ b/WebDoorCreator.UI/Components/Hardware/HardwareNewPanel.razor.cs @@ -1,6 +1,7 @@ using Microsoft.AspNetCore.Components; using Newtonsoft.Json; using WebDoorCreator.Data.DbModels; +using WebDoorCreator.UI.Components.SvgComp; using WebDoorCreator.UI.Data; using static WebDoorCreator.UI.Data.WDCRefreshService; @@ -100,10 +101,24 @@ namespace WebDoorCreator.UI.Components.Hardware #region Protected Methods - protected async Task backToList() + protected async Task exeFun(HwSvgObj.ActionReq action) { await Task.Delay(1); - await E_act2Rel.InvokeAsync(true); + switch (action) + { + case HwSvgObj.ActionReq.Minus: + // nulla (x ora) + break; + + case HwSvgObj.ActionReq.Plus: + await hwToAdd(""); + break; + + case HwSvgObj.ActionReq.Select: + default: + await E_act2Rel.InvokeAsync(true); + break; + } } protected int getDoorOpInstNum(int doorOpId) @@ -285,7 +300,6 @@ namespace WebDoorCreator.UI.Components.Hardware DoorOpList = null; await Task.Delay(1); ListRecord = await WDCService.DoorOpGetByDoorId(DoorId); - var tempListVal = await WDCService.ListValuesGetAll(HwCode, "Folder"); if (ListRecord != null) { DoorOpList = ListRecord.Where(x => (x.DoorId == DoorId) && (x.ObjectId == HwCode)).ToList(); diff --git a/WebDoorCreator.UI/Components/SvgComp/HwSvgObj.razor b/WebDoorCreator.UI/Components/SvgComp/HwSvgObj.razor index bcdd3f8..e81b0e2 100644 --- a/WebDoorCreator.UI/Components/SvgComp/HwSvgObj.razor +++ b/WebDoorCreator.UI/Components/SvgComp/HwSvgObj.razor @@ -1,7 +1,7 @@  -
+
@ItemName
@@ -26,19 +26,30 @@ - + @if (!string.IsNullOrEmpty(ImagePath)) + { + + } @if (ShowPlus) { - + } @if (ShowPlus) { - + } else { - + + } + @if (string.IsNullOrEmpty(ImagePath)) + { + + + + + } \ No newline at end of file diff --git a/WebDoorCreator.UI/Components/SvgComp/HwSvgObj.razor.cs b/WebDoorCreator.UI/Components/SvgComp/HwSvgObj.razor.cs index 40ad5ef..9c3ee82 100644 --- a/WebDoorCreator.UI/Components/SvgComp/HwSvgObj.razor.cs +++ b/WebDoorCreator.UI/Components/SvgComp/HwSvgObj.razor.cs @@ -1,47 +1,45 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; using Microsoft.AspNetCore.Components; -using System.Net.Http; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Components.Authorization; -using Microsoft.AspNetCore.Components.Forms; -using Microsoft.AspNetCore.Components.Routing; -using Microsoft.AspNetCore.Components.Web; -using Microsoft.AspNetCore.Components.Web.Virtualization; -using Microsoft.JSInterop; -using WebDoorCreator.UI; -using WebDoorCreator.UI.Components; -using WebDoorCreator.UI.Components.Buttons; -using WebDoorCreator.UI.Components.CompMan; -using WebDoorCreator.UI.Components.DoorMan; -using WebDoorCreator.UI.Components.DoorDef; -using WebDoorCreator.UI.Components.Gen; -using WebDoorCreator.UI.Components.Order; -using WebDoorCreator.UI.Components.Users; -using WebDoorCreator.UI.Components.Hardware; -using WebDoorCreator.UI.Components.SvgComp; -using WebDoorCreator.UI.Components.Filters; -using WebDoorCreator.UI.Components.Report; -using WebDoorCreator.UI.Shared; -using WebDoorCreator.Data.DbModels; -using EgwCoreLib.Razor; namespace WebDoorCreator.UI.Components.SvgComp { public partial class HwSvgObj { + #region Public Enums + + /// + /// Enum delle azioni associate al controllo + /// + public enum ActionReq + { + Minus, + Plus, + Select + } + + #endregion Public Enums + #region Public Properties [Parameter] - public EventCallback EC_ExeFunct { get; set; } + public EventCallback EC_ExeFunct { get; set; } + + /// + /// Tag icona da mostrare (secondario se img != null) + /// + [Parameter] + public string IconTag { get; set; } = ""; + + /// + /// Path img da mostrare (prioritario su icona) + /// + [Parameter] + public string ImagePath { get; set; } = ""; [Parameter] - public EventCallback EC_ExePlus { get; set; } + public int ItemCount { get; set; } = 0; [Parameter] - public string ImagePath { get; set; } = "images/LogoEgw.png"; + public string ItemName { get; set; } = ""; [Parameter] public string LineColor { get; set; } = "#00838F"; @@ -49,16 +47,6 @@ namespace WebDoorCreator.UI.Components.SvgComp [Parameter] public int LineWidth { get; set; } = 8; - [Parameter] - public string ItemName { get; set; } = ""; - - [Parameter] - public int ItemCount { get; set; } = 0; - - - [Parameter] - public string PlusColor { get; set; } = "green"; - [Parameter] public int ObjH { get; set; } = 204; @@ -68,6 +56,9 @@ namespace WebDoorCreator.UI.Components.SvgComp [Parameter] public int ObjW { get; set; } = 450; + [Parameter] + public string PlusColor { get; set; } = "green"; + [Parameter] public bool ShowPlus { get; set; } = false; @@ -78,6 +69,10 @@ namespace WebDoorCreator.UI.Components.SvgComp #region Protected Properties + protected string cardClass + { + get => ItemCount > 0 ? "bg-primary text-light" : "bg-inactive text-dark"; + } protected CircleData CircleImg { get; set; } = null!; @@ -95,11 +90,6 @@ namespace WebDoorCreator.UI.Components.SvgComp get => ObjW - (ObjH * 90 / 100); } - protected string cardClass - { - get => ItemCount > 0 ? "bg-primary text-light" : "bg-inactive text-dark"; - } - #endregion Protected Properties #region Protected Methods @@ -107,20 +97,19 @@ namespace WebDoorCreator.UI.Components.SvgComp /// /// Invia evento principale /// - /// se true manda sempre EC_ExeFunct, altrimenti NON invia se showPlus attivo... - protected void execFunc(bool forceSend) + /// Azione richiesta + /// + /// se true manda sempre EC_ExeFunct, altrimenti NON invia se showPlus attivo... + /// + protected void doExecFunc(ActionReq action, bool forceSend) { + // invia la chiamata richiesta secondo configurazione... if (forceSend || !ShowPlus) { - EC_ExeFunct.InvokeAsync(true); + EC_ExeFunct.InvokeAsync(action); } } - protected void execPlus() - { - EC_ExePlus.InvokeAsync(true); - } - protected override void OnParametersSet() { setupGraphParams(); diff --git a/WebDoorCreator.UI/Pages/TestPage.razor b/WebDoorCreator.UI/Pages/TestPage.razor index 0541e63..e0b48ed 100644 --- a/WebDoorCreator.UI/Pages/TestPage.razor +++ b/WebDoorCreator.UI/Pages/TestPage.razor @@ -21,23 +21,27 @@
- +
- +
-
- +
+
-
+
+
-
- +
+ +
+
+
@@ -96,11 +100,6 @@ protected override async Task OnInitializedAsync() { - //return base.OnInitializedAsync(); - //} - - //protected override void OnInitialized() - //{ msgList = new Dictionary(); msgList.Add("T1", "Titolo"); msgList.Add("M1", "Messaggio 1"); @@ -110,7 +109,11 @@ protected List? DoorsList { get; set; } = null; - protected async Task exeFun() + protected async Task exeDoor() + { + await Task.Delay(1); + } + protected async Task exeFun(HwSvgObj.ActionReq action) { await Task.Delay(1); } From 9193d45fb0753a2895569b4843374e26d13be547 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 18 May 2023 11:08:36 +0200 Subject: [PATCH 13/14] HwSvgObj: - Fix comportamento buttons navigazione - aggiunta svg --- .../Components/Hardware/HardwareNewPanel.razor | 4 ++-- WebDoorCreator.UI/Components/SvgComp/HwSvgObj.razor | 13 +------------ .../Components/SvgComp/HwSvgObj.razor.cs | 8 +------- WebDoorCreator.UI/Pages/TestPage.razor | 4 ++-- WebDoorCreator.UI/wwwroot/images/icons/Exit.svg | 4 ++++ .../wwwroot/images/icons/ExitWhite.svg | 4 ++++ WebDoorCreator.UI/wwwroot/images/icons/Plus.svg | 4 ++++ .../wwwroot/images/icons/PlusWhite.svg | 4 ++++ 8 files changed, 22 insertions(+), 23 deletions(-) create mode 100644 WebDoorCreator.UI/wwwroot/images/icons/Exit.svg create mode 100644 WebDoorCreator.UI/wwwroot/images/icons/ExitWhite.svg create mode 100644 WebDoorCreator.UI/wwwroot/images/icons/Plus.svg create mode 100644 WebDoorCreator.UI/wwwroot/images/icons/PlusWhite.svg diff --git a/WebDoorCreator.UI/Components/Hardware/HardwareNewPanel.razor b/WebDoorCreator.UI/Components/Hardware/HardwareNewPanel.razor index 648b2f2..313dd5a 100644 --- a/WebDoorCreator.UI/Components/Hardware/HardwareNewPanel.razor +++ b/WebDoorCreator.UI/Components/Hardware/HardwareNewPanel.razor @@ -8,11 +8,11 @@ else {
- +
- +
diff --git a/WebDoorCreator.UI/Components/SvgComp/HwSvgObj.razor b/WebDoorCreator.UI/Components/SvgComp/HwSvgObj.razor index e81b0e2..7c95f81 100644 --- a/WebDoorCreator.UI/Components/SvgComp/HwSvgObj.razor +++ b/WebDoorCreator.UI/Components/SvgComp/HwSvgObj.razor @@ -26,10 +26,7 @@ - @if (!string.IsNullOrEmpty(ImagePath)) - { - - } + @if (ShowPlus) { @@ -44,12 +41,4 @@ { } - @if (string.IsNullOrEmpty(ImagePath)) - { - - - - - - } \ No newline at end of file diff --git a/WebDoorCreator.UI/Components/SvgComp/HwSvgObj.razor.cs b/WebDoorCreator.UI/Components/SvgComp/HwSvgObj.razor.cs index 9c3ee82..17f843c 100644 --- a/WebDoorCreator.UI/Components/SvgComp/HwSvgObj.razor.cs +++ b/WebDoorCreator.UI/Components/SvgComp/HwSvgObj.razor.cs @@ -24,13 +24,7 @@ namespace WebDoorCreator.UI.Components.SvgComp public EventCallback EC_ExeFunct { get; set; } /// - /// Tag icona da mostrare (secondario se img != null) - /// - [Parameter] - public string IconTag { get; set; } = ""; - - /// - /// Path img da mostrare (prioritario su icona) + /// Path img da mostrare /// [Parameter] public string ImagePath { get; set; } = ""; diff --git a/WebDoorCreator.UI/Pages/TestPage.razor b/WebDoorCreator.UI/Pages/TestPage.razor index e0b48ed..963a443 100644 --- a/WebDoorCreator.UI/Pages/TestPage.razor +++ b/WebDoorCreator.UI/Pages/TestPage.razor @@ -35,10 +35,10 @@
- +
- +
diff --git a/WebDoorCreator.UI/wwwroot/images/icons/Exit.svg b/WebDoorCreator.UI/wwwroot/images/icons/Exit.svg new file mode 100644 index 0000000..229ea09 --- /dev/null +++ b/WebDoorCreator.UI/wwwroot/images/icons/Exit.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/WebDoorCreator.UI/wwwroot/images/icons/ExitWhite.svg b/WebDoorCreator.UI/wwwroot/images/icons/ExitWhite.svg new file mode 100644 index 0000000..00771c0 --- /dev/null +++ b/WebDoorCreator.UI/wwwroot/images/icons/ExitWhite.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/WebDoorCreator.UI/wwwroot/images/icons/Plus.svg b/WebDoorCreator.UI/wwwroot/images/icons/Plus.svg new file mode 100644 index 0000000..958c8c1 --- /dev/null +++ b/WebDoorCreator.UI/wwwroot/images/icons/Plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/WebDoorCreator.UI/wwwroot/images/icons/PlusWhite.svg b/WebDoorCreator.UI/wwwroot/images/icons/PlusWhite.svg new file mode 100644 index 0000000..add741d --- /dev/null +++ b/WebDoorCreator.UI/wwwroot/images/icons/PlusWhite.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file From 2c02e27e5d94d249c40decba8170ee185d66585e Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 18 May 2023 11:12:14 +0200 Subject: [PATCH 14/14] fix tinta verde x plus --- WebDoorCreator.UI/Components/SvgComp/HwSvgObj.razor | 2 +- WebDoorCreator.UI/Components/SvgComp/HwSvgObj.razor.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/WebDoorCreator.UI/Components/SvgComp/HwSvgObj.razor b/WebDoorCreator.UI/Components/SvgComp/HwSvgObj.razor index 7c95f81..38ebac5 100644 --- a/WebDoorCreator.UI/Components/SvgComp/HwSvgObj.razor +++ b/WebDoorCreator.UI/Components/SvgComp/HwSvgObj.razor @@ -29,7 +29,7 @@ @if (ShowPlus) { - + } diff --git a/WebDoorCreator.UI/Components/SvgComp/HwSvgObj.razor.cs b/WebDoorCreator.UI/Components/SvgComp/HwSvgObj.razor.cs index 17f843c..f974d42 100644 --- a/WebDoorCreator.UI/Components/SvgComp/HwSvgObj.razor.cs +++ b/WebDoorCreator.UI/Components/SvgComp/HwSvgObj.razor.cs @@ -51,7 +51,7 @@ namespace WebDoorCreator.UI.Components.SvgComp public int ObjW { get; set; } = 450; [Parameter] - public string PlusColor { get; set; } = "green"; + public string PlusColor { get; set; } = "#69FF69"; [Parameter] public bool ShowPlus { get; set; } = false;