diff --git a/WebDoorCreator.UI.sln b/WebDoorCreator.UI.sln index 56c570c..4650908 100644 --- a/WebDoorCreator.UI.sln +++ b/WebDoorCreator.UI.sln @@ -9,7 +9,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebDoorCreator.Core", "WebD EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebDoorCreator.Data", "WebDoorCreator.Data\WebDoorCreator.Data.csproj", "{26466C0D-8946-466B-A38C-C1A9603DA2DC}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebDoorCreator.API", "WebDoorCreator.API\WebDoorCreator.API.csproj", "{2DFE8045-2F56-43E2-9D2F-1180EF7AD721}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebDoorCreator.API", "WebDoorCreator.API\WebDoorCreator.API.csproj", "{2DFE8045-2F56-43E2-9D2F-1180EF7AD721}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/WebDoorCreator.UI/Components/DoorDef/BaseParamList.razor b/WebDoorCreator.UI/Components/DoorDef/BaseParamList.razor new file mode 100644 index 0000000..ea5ed0a --- /dev/null +++ b/WebDoorCreator.UI/Components/DoorDef/BaseParamList.razor @@ -0,0 +1,11 @@ +@if (CurrBaseDoorOp == null) +{ + +} +else +{ + @foreach (var item in CurrBaseDoorOp) + { + + } +} \ No newline at end of file diff --git a/WebDoorCreator.UI/Components/DoorDef/BaseParamList.razor.cs b/WebDoorCreator.UI/Components/DoorDef/BaseParamList.razor.cs new file mode 100644 index 0000000..1d311f3 --- /dev/null +++ b/WebDoorCreator.UI/Components/DoorDef/BaseParamList.razor.cs @@ -0,0 +1,27 @@ +using Microsoft.AspNetCore.Components; +using WebDoorCreator.Data.DbModels; + +namespace WebDoorCreator.UI.Components.DoorDef +{ + public partial class BaseParamList + { + #region Public Properties + + /// + /// Elenco parametri di base + /// + [Parameter] + public List? CurrBaseDoorOp { get; set; } = null; + + #endregion Public Properties + + #region Protected Properties + + /// + /// Lingua utente (FixMe !!!) + /// + protected string userLang { get; set; } = "EN"; + + #endregion Protected Properties + } +} \ No newline at end of file diff --git a/WebDoorCreator.UI/Components/DoorDef/DoorDataBlock.razor b/WebDoorCreator.UI/Components/DoorDef/DoorDataBlock.razor new file mode 100644 index 0000000..cc7d992 --- /dev/null +++ b/WebDoorCreator.UI/Components/DoorDef/DoorDataBlock.razor @@ -0,0 +1,12 @@ + + @BlockDoorOp.ObjectId + + +@if (bdpList != null) +{ + foreach (var item in bdpList) + { + + } + +} \ No newline at end of file diff --git a/WebDoorCreator.UI/Components/DoorDef/DoorDataBlock.razor.cs b/WebDoorCreator.UI/Components/DoorDef/DoorDataBlock.razor.cs new file mode 100644 index 0000000..f6e0835 --- /dev/null +++ b/WebDoorCreator.UI/Components/DoorDef/DoorDataBlock.razor.cs @@ -0,0 +1,99 @@ +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.Shared; +using WebDoorCreator.Data.DbModels; +using Newtonsoft.Json; + +namespace WebDoorCreator.UI.Components.DoorDef +{ + public partial class DoorDataBlock + { + /// + /// Blocco parametri di base + /// + [Parameter] + public DoorOpModel BlockDoorOp { get; set; } = null!; + protected string userLang { get; set; } = "EN"; + + /// + /// spacchetto componenti + /// + protected override void OnParametersSet() + { + setupCurrValues(); + setupParamConfig(); + } + + protected Dictionary>? bdpList { get; set; } = new Dictionary>(); + protected Dictionary>>? bdpConfiglist { get; set; } = new Dictionary>>(); + + + + public void setupCurrValues() + { + //currVal = new Dictionary(); + if (!string.IsNullOrEmpty(BlockDoorOp.JsoncActVal)) + { + bdpList = JsonConvert.DeserializeObject>>(BlockDoorOp.JsoncActVal!); + } + } + + public void setupParamConfig() + { + bdpConfiglist = JsonConvert.DeserializeObject>>>(BlockDoorOp.JsoncConfigVal!); + } + + protected Dictionary> getParamsConfig(string paramName) + { + Dictionary> answ = new Dictionary>(); + if (bdpConfiglist != null && bdpConfiglist.Count > 0) + { + if (bdpConfiglist.ContainsKey(paramName)) + { + answ = bdpConfiglist[paramName]; + } + } + return answ; + } + + + protected async Task doSaveBlock(Dictionary> updSet) + { + if (bdpList != null) + { + if (updSet != null && updSet.Count > 0) + { + KeyValuePair> currSet = updSet.FirstOrDefault(); + if (bdpList.ContainsKey(currSet.Key)) + { + bdpList[currSet.Key] = currSet.Value; + // serializzo e salvo, rimandando evento ad obj contenitore + + // FixMe ToDo !!! + } + } + } + } + } +} \ No newline at end of file diff --git a/WebDoorCreator.UI/Components/DoorDef/DoorDefSizingSI.razor b/WebDoorCreator.UI/Components/DoorDef/DoorDefSizingSI.razor index ff96ed2..a3cd51d 100644 --- a/WebDoorCreator.UI/Components/DoorDef/DoorDefSizingSI.razor +++ b/WebDoorCreator.UI/Components/DoorDef/DoorDefSizingSI.razor @@ -1,13 +1,15 @@ @if (currVal == null) { - + } else { - + + @HwCode + @foreach (var item in currVal) { @if (isCombo(item.Key)) @@ -16,7 +18,6 @@ else @translate(item.Key) - @foreach (var param in comboSet(item.Key)) { @@ -33,7 +34,6 @@ else @translate(item.Key) - } @@ -51,6 +51,19 @@ else } + else + { + + + + CANCEL + + + SAVE + + + + } diff --git a/WebDoorCreator.UI/Components/DoorDef/DoorDefSizingSI.razor.cs b/WebDoorCreator.UI/Components/DoorDef/DoorDefSizingSI.razor.cs index 9b8db0d..cc2911a 100644 --- a/WebDoorCreator.UI/Components/DoorDef/DoorDefSizingSI.razor.cs +++ b/WebDoorCreator.UI/Components/DoorDef/DoorDefSizingSI.razor.cs @@ -1,7 +1,6 @@ using Microsoft.AspNetCore.Components; using Microsoft.JSInterop; using Newtonsoft.Json; -using WebDoorCreator.Data.DbModels; using WebDoorCreator.Data.Services; using WebDoorCreator.UI.Data; @@ -11,114 +10,54 @@ namespace WebDoorCreator.UI.Components.DoorDef { #region Public Properties + /// + /// Array dati x comparazione + /// [Parameter] - public DoorOpModel DoorOpInst { get; set; } = null!; + public Dictionary currValRef { get; set; } = new Dictionary(); + + [Parameter] + public int DoorId { get; set; } = 0; + + [Parameter] + public EventCallback>> E_ItemChanged { get; set; } [Parameter] public string HwCode { get; set; } = ""; - [Parameter] - public int instanceN { get; set; } = 0; - [Parameter] public string Lingua { get; set; } = "EN"; + /// + /// parametri di configurazione oggetto + /// [Parameter] - public int DoorId { get; set; } = 0; + public Dictionary> paramsConfig { get; set; } = new Dictionary>(); [CascadingParameter] public string userId { get; set; } = ""; #endregion Public Properties - #region Public Methods - - public void setupCurrValues() - { - //currVal = new Dictionary(); - if (!string.IsNullOrEmpty(DoorOpInst.JsoncActVal)) - { - //var k = JsonConvert.DeserializeObject>>(DoorOpInst.JsoncActVal!); - var deserialized = JsonConvert.DeserializeObject>>(DoorOpInst.JsoncActVal!); - - var deserializedToComp = JsonConvert.DeserializeObject>>(DoorOpInst.JsoncActVal!); - if (deserialized != null) - { - foreach (var kvp in deserialized) - { - foreach (var val in kvp.Value) - { - if (!currVal.ContainsKey(val.Key)) - { - - currVal.Add(val.Key, val.Value); - } - } - } - - } - if (deserializedToComp != null) - { - foreach (var kvp in deserializedToComp) - { - foreach (var val in kvp.Value) - { - if (!currValToCompare.ContainsKey(val.Key)) - { - currValToCompare.Add(val.Key, val.Value); - } - } - } - - } - } - } - - public void setupGraphicParams() - { - var deserialized = JsonConvert.DeserializeObject>>>(DoorOpInst.JsoncConfigVal!); - if (deserialized != null) - { - //graphicParamsTemp = deserialized; - foreach (var kvp in deserialized) - { - if (!graphicParams.ContainsKey(kvp.Key)) - { - graphicParams.Add(kvp.Key, kvp.Value); - } - - } - } - } - - #endregion Public Methods - #region Protected Properties /// - /// Array dati + /// Array dati effettivo x gestione modifiche /// protected Dictionary currVal { get; set; } = new Dictionary(); - protected Dictionary currValToCompare { get; set; } = new Dictionary(); - - - //protected Dictionary> graphicParams { get; set; } = new Dictionary>(); - protected Dictionary>> graphicParams { get; set; } = new Dictionary>>(); - protected Dictionary>> graphicParamsTemp { get; set; } = null!; - [Inject] protected IJSRuntime JSRuntime { get; set; } = null!; + [Inject] + protected QueueDataService QDataServ { get; set; } = null!; + [Inject] protected WebDoorCreatorService WDCService { get; set; } = null!; [Inject] protected WDCVocabularyService WDVService { get; set; } = null!; - [Inject] - protected QueueDataService QDataServ { get; set; } = null!; - #endregion Protected Properties #region Protected Methods @@ -126,17 +65,10 @@ namespace WebDoorCreator.UI.Components.DoorDef protected List comboSet(string pKey) { List answ = new List(); - foreach (var item in graphicParams) + if (paramsConfig.ContainsKey(pKey)) { - foreach (var param in item.Value) - { - //if (item.ContainsKey(pKey)) - //{ - // answ = param[pKey].ToList(); - //} - } + answ = paramsConfig[pKey].ToList(); } - return answ; } @@ -148,85 +80,38 @@ namespace WebDoorCreator.UI.Components.DoorDef protected bool doCheckVal() { bool answ = false; - if (currValToCompare != null) + if (currValRef != null) { foreach (var k in currVal) { - if (currValToCompare != null) + if (currValRef != null) { - //if (k.Value != currValToCompare[k.Key]) - //{ - // answ = true; - //} + if (k.Value != currValRef[k.Key]) + { + answ = true; + } } } } return answ; } - protected async Task doClone() - { - DateTime adesso = DateTime.Now; - DoorOpModel doorOpToAdd = new DoorOpModel() - { - DateIns = adesso, - DateMod = adesso, - UserIdIns = userId, - UserIdMod = userId, - ObjectId = DoorOpInst.ObjectId, - DoorId = DoorOpInst.DoorId, - JsoncConfigVal = DoorOpInst.JsoncConfigVal, - JsoncActVal = DoorOpInst.JsoncActVal, - userConfirm = DoorOpInst.userConfirm, - DtConfirm = DoorOpInst.DtConfirm - }; - - List doorOpAddList = new List() { doorOpToAdd }; - // salvo! - await WDCService.DoorOpInsert(DoorOpInst.DoorId, doorOpAddList); - await FullReloadData(true); - } - - protected async Task doConfirm() - { - DoorOpInst.userConfirm = userId; - DoorOpInst.DtConfirm = DateTime.Now; - // salvo! - await WDCService.DoorOpUpdate(DoorOpInst); - } - - protected async Task doDeleteInst() - { - var done = await JSRuntime.InvokeAsync("confirm", "Delete PERMANENTLY the current record?"); - - if (done) - { - await WDCService.DoorOpDelete(DoorOpInst); - await FullReloadData(true); - } - } - protected async Task doSave() { - // ri-serializzo i graphics parameters... - string serVal = JsonConvert.SerializeObject(currVal); - DoorOpInst.JsoncActVal = serVal; - // salvo! - await WDCService.DoorOpUpdate(DoorOpInst); - // invio msg dato "salvabile" -#if false - await QDataServ.sendCalcReq($"ORD{DoorOpInst.DoorId:00000}"); -#endif - // rileggo - await FullReloadData(true); + await Task.Delay(1); + // preparo i dati... + Dictionary> updSet = new Dictionary>(); + updSet.Add(HwCode, currVal); + // solleva evento con dizionario contentente chiave + valori current + await E_ItemChanged.InvokeAsync(updSet); } protected bool isCombo(string pKey) { bool answ = false; - if (graphicParams.ContainsKey(pKey)) + if (paramsConfig.ContainsKey(pKey)) { - answ = graphicParams[pKey].Count > 1; + answ = paramsConfig[pKey].Count > 1; } return answ; } @@ -251,19 +136,19 @@ namespace WebDoorCreator.UI.Components.DoorDef private async Task FullReloadData(bool isFirst) { - if (DoorOpInst.ObjectId != "Size") + // serializzo e deserializzo i valori current da quelli di riferimento + string serObj = JsonConvert.SerializeObject(currValRef); + if (!string.IsNullOrEmpty(serObj)) { - setupCurrValues(); - setupGraphicParams(); + var newObj = JsonConvert.DeserializeObject>(serObj); + if (newObj != null) + { + currVal = newObj; + } } - //await ReloadData(isFirst); + await Task.Delay(1); } - //private async Task ReloadData(bool isFirst) - //{ - // await FullReloadData(true); - //} - #endregion Private Methods } } \ No newline at end of file diff --git a/WebDoorCreator.UI/Components/Hardware/HwSingleInstance.razor b/WebDoorCreator.UI/Components/Hardware/HwSingleInstance.razor index 72e41d8..b76f18e 100644 --- a/WebDoorCreator.UI/Components/Hardware/HwSingleInstance.razor +++ b/WebDoorCreator.UI/Components/Hardware/HwSingleInstance.razor @@ -99,8 +99,6 @@ else - - } } } diff --git a/WebDoorCreator.UI/Data/WDCUserService.cs b/WebDoorCreator.UI/Data/WDCUserService.cs index 1af9414..58690c1 100644 --- a/WebDoorCreator.UI/Data/WDCUserService.cs +++ b/WebDoorCreator.UI/Data/WDCUserService.cs @@ -19,6 +19,8 @@ #region Public Properties + public Dictionary UserPref { get; set; } = new Dictionary(); + public string userId { get => _userId; diff --git a/WebDoorCreator.UI/Pages/DoorDefinition.razor b/WebDoorCreator.UI/Pages/DoorDefinition.razor index d803104..1c83fc2 100644 --- a/WebDoorCreator.UI/Pages/DoorDefinition.razor +++ b/WebDoorCreator.UI/Pages/DoorDefinition.razor @@ -16,27 +16,20 @@ - @if (currDefStep == Core.Enum.DoorDefStep.Door) - { - @if (ListBaseDoorOp != null) + + @if (currDefStep == Core.Enum.DoorDefStep.Door) { - @foreach (var item in ListBaseDoorOp) + @if (ListBaseDoorOp != null) { - - - + } + @**@ } - @**@ - } - else if (currDefStep == Core.Enum.DoorDefStep.Hardware) - { - - - - - - } + else if (currDefStep == Core.Enum.DoorDefStep.Hardware) + { + + } + diff --git a/WebDoorCreator.UI/Pages/DoorDefinition.razor.cs b/WebDoorCreator.UI/Pages/DoorDefinition.razor.cs index 6f7e7f2..cea9212 100644 --- a/WebDoorCreator.UI/Pages/DoorDefinition.razor.cs +++ b/WebDoorCreator.UI/Pages/DoorDefinition.razor.cs @@ -15,6 +15,8 @@ namespace WebDoorCreator.UI.Pages public void Dispose() { + ListBaseDoorOp = null; + orderStatus = null; WDCUService.EA_CurrLanguage -= WDUService_EA_CurrLanguage; QDataServ.CalcDonePipe.EA_NewMessage -= CalcDonePipe_EA_NewMessage; } @@ -81,10 +83,20 @@ namespace WebDoorCreator.UI.Pages protected async Task ReloadData() { + ListBaseDoorOp = null; + ListHwDoorOp = null; + orderStatus = null; + await Task.Delay(1); var ListRecordDoorOp = await WDService.DoorOpGetByDoorId(idDoor); if (ListRecordDoorOp != null) { + ListHwDoorOp = ListRecordDoorOp; ListBaseDoorOp = ListRecordDoorOp.Where(x => x.ObjectId == "Size" || x.ObjectId == "Profiles").ToList(); + // calcolo gli hw togliendo DoorOpBase + foreach (var item in ListBaseDoorOp) + { + ListHwDoorOp.Remove(item); + } } var domani = DateTime.Today.AddDays(1); ListOrdersStatus = null; @@ -97,22 +109,6 @@ namespace WebDoorCreator.UI.Pages await Task.Delay(1); } - #endregion Protected Methods - - #region Private Fields - - private static Logger Log = LogManager.GetCurrentClassLogger(); - - private List? ListBaseDoorOp = null; - private List? ListOrdersStatus = null; - - #endregion Private Fields - - #region Private Methods - - private Core.Enum.DoorDefStep currDefStep { get; set; } = Core.Enum.DoorDefStep.Door; - private bool setHwToNull { get; set; } = false; - /// /// gestione impostazione step /// @@ -129,6 +125,26 @@ namespace WebDoorCreator.UI.Pages } } + #endregion Protected Methods + + #region Private Fields + + private static Logger Log = LogManager.GetCurrentClassLogger(); + + #endregion Private Fields + + #region Private Properties + + private Core.Enum.DoorDefStep currDefStep { get; set; } = Core.Enum.DoorDefStep.Door; + private List? ListBaseDoorOp { get; set; } = null; + private List? ListHwDoorOp { get; set; } = null; + private List? ListOrdersStatus { get; set; } = null; + private bool setHwToNull { get; set; } = false; + + #endregion Private Properties + + #region Private Methods + private async void CalcDonePipe_EA_NewMessage(object? sender, EventArgs e) { DoorSvgContent = ""; diff --git a/WebDoorCreator.UI/temp/Conf.yaml b/WebDoorCreator.UI/temp/Conf.yaml index 21cf2b4..d06c9f1 100644 --- a/WebDoorCreator.UI/temp/Conf.yaml +++ b/WebDoorCreator.UI/temp/Conf.yaml @@ -12,7 +12,7 @@ order: project: pO: line: -date: 2023-04-26T11:32:28.7333201+02:00 +date: 2023-04-26T12:20:39.8125610+02:00 piece: DO_1 size: width: 33.8125 @@ -43,6 +43,24 @@ hardware: - template: Generic\StdEPT ToptoCL: 15 FacetoCL: 0.875 + - template: Generic\StdEPT + ToptoCL: 15 + FacetoCL: 0.875 + + flush_bolts: + - template: Corner\8501 + type: corner + side: top + position: 5 + offset_WS: 0.0 + + groove: + - template: Generic\Groove + type: side + width: 0.6 + depth: 0.8 + offset_WS: 0 + side: bottom ---