diff --git a/Test.UI/Components/Pages/EditJWD.razor.cs b/Test.UI/Components/Pages/EditJWD.razor.cs index 6d316ee..092847a 100644 --- a/Test.UI/Components/Pages/EditJWD.razor.cs +++ b/Test.UI/Components/Pages/EditJWD.razor.cs @@ -29,6 +29,7 @@ namespace Test.UI.Components.Pages DLService.PipeSvg.EA_NewMessage -= PipeSvg_EA_NewMessage; DLService.PipeShape.EA_NewMessage -= PipeShape_EA_NewMessage; DLService.PipeHwOpt.EA_NewMessage -= PipeHwOption_EA_NewMessage; + //DLService.PipeElement.EA_NewMessage -= PipeElement_EA_NewMessage; } #endregion Public Methods @@ -48,6 +49,7 @@ namespace Test.UI.Components.Pages protected bool User = false; protected Dictionary currGroupShape = new Dictionary(); + protected Dictionary currElement = new Dictionary(); protected Dictionary currHwOption = new Dictionary(); protected string currJwd = "..."; protected Dictionary m_CurrArgs = new Dictionary(); @@ -348,6 +350,7 @@ namespace Test.UI.Components.Pages DLService.PipeSvg.EA_NewMessage += PipeSvg_EA_NewMessage; DLService.PipeShape.EA_NewMessage += PipeShape_EA_NewMessage; DLService.PipeHwOpt.EA_NewMessage += PipeHwOption_EA_NewMessage; + //DLService.PipeElement.EA_NewMessage += PipeElement_EA_NewMessage; } #endregion Protected Methods @@ -381,6 +384,7 @@ namespace Test.UI.Components.Pages private string channelHwOpt = ""; private string channelShape = ""; + private string channelElement = ""; private string channelSvg = ""; #endregion Private Fields @@ -505,6 +509,25 @@ namespace Test.UI.Components.Pages await Task.Delay(1); } + private async void PipeElement_EA_NewMessage(object? sender, EventArgs e) + { + // aggiorno visualizzazione + PubSubEventArgs currArgs = (PubSubEventArgs)e; + // conversione on-the-fly SVG da mostrare + if (!string.IsNullOrEmpty(currArgs.newMessage) && currArgs.newMessage.Length > 2) + { + if (currArgs.msgUid.StartsWith($"{channelElement}:{windowUid}")) + { + // deserializzo il dizionario delle risposte... + var rawDict = JsonConvert.DeserializeObject>(currArgs.newMessage); + currElement = rawDict ?? new Dictionary(); + CurrData.DictElement = currElement; + } + await InvokeAsync(StateHasChanged); + } + await Task.Delay(1); + } + private async void PipeSvg_EA_NewMessage(object? sender, EventArgs e) { // aggiorno visualizzazione diff --git a/WebWindowComplex/Compo/CardFrame.razor.cs b/WebWindowComplex/Compo/CardFrame.razor.cs index 8952b88..71ba513 100644 --- a/WebWindowComplex/Compo/CardFrame.razor.cs +++ b/WebWindowComplex/Compo/CardFrame.razor.cs @@ -32,6 +32,12 @@ namespace WebWindowComplex.Compo [Parameter] public EventCallback EC_UpdateFrame { get; set; } + /// + /// Evento per richiesta Element + /// + [Parameter] + public EventCallback EC_ReqElement { get; set; } + /// /// Frame corrente /// @@ -82,6 +88,7 @@ namespace WebWindowComplex.Compo currFrame = CurrFrameWindow, svgNoHw = true }; + _ = EC_ReqElement.InvokeAsync(CurrFrameWindow); _ = EC_UpdateFrame.InvokeAsync(args); } } diff --git a/WebWindowComplex/DTO/LivePayload.cs b/WebWindowComplex/DTO/LivePayload.cs index 0a4172b..39eba34 100644 --- a/WebWindowComplex/DTO/LivePayload.cs +++ b/WebWindowComplex/DTO/LivePayload.cs @@ -34,6 +34,11 @@ namespace WebWindowComplex.DTO /// public Dictionary DictOptionsXml { get; set; } = new Dictionary(); + /// + /// Dizionario Element + /// + public Dictionary DictElement { get; set; } = new Dictionary(); + #endregion Public Properties #region Public Methods diff --git a/WebWindowComplex/TableComp.razor b/WebWindowComplex/TableComp.razor index dcd0cb3..f150904 100644 --- a/WebWindowComplex/TableComp.razor +++ b/WebWindowComplex/TableComp.razor @@ -93,6 +93,7 @@ diff --git a/WebWindowComplex/TableComp.razor.cs b/WebWindowComplex/TableComp.razor.cs index b5395ff..2649b20 100644 --- a/WebWindowComplex/TableComp.razor.cs +++ b/WebWindowComplex/TableComp.razor.cs @@ -35,7 +35,12 @@ namespace WebWindowComplex /// /// Richiesta shape sash group /// - ReqShape + ReqShape, + + /// + /// Richiesta element + /// + ReqElement } #endregion Public Enums @@ -322,224 +327,6 @@ namespace WebWindowComplex } } - /// - /// Metodo per popolare i parametri relativi al profilo - /// - /// Area che si considera - protected void PopolateParamElement(Area node) - { - if (node != null) - { - switch (node.AreaType) - { - case AreaTypes.FRAME: - { - Frame frame = (Frame)node; - switch (node.AreaList.FirstOrDefault().AreaType) - { - case AreaTypes.SASH: - { - frame.ElementDimensionList.FirstOrDefault().SetNameElement("Frame_Sash_Bottom_Dim"); - for(int i = 1; i <4; i++) - frame.ElementDimensionList.ElementAt(i).SetNameElement("Frame_Sash_Top_Dim"); - foreach(var elem in frame.ElementDimensionList) - { - elem.SetMinDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Min")); - elem.SetMaxDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Max")); - } - break; - } - case AreaTypes.SPLIT: - { - Split split = (Split)node.AreaList.FirstOrDefault(); - switch(split.SelSplitShape) - { - case SplitShapes.VERTICAL: - { - // in tutte le aree splittate ho ante - if (split.OnlySashChild()) - { - frame.ElementDimensionList.ElementAt(0).SetNameElement("Frame_Mixed_Bottom_Dim"); - frame.ElementDimensionList.ElementAt(1).SetNameElement("Frame_Sash_Top_Dim"); - frame.ElementDimensionList.ElementAt(2).SetNameElement("Frame_Mixed_Bottom_Dim"); - frame.ElementDimensionList.ElementAt(3).SetNameElement("Frame_Sash_Top_Dim"); - foreach (var elem in frame.ElementDimensionList) - { - elem.SetMinDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Min")); - elem.SetMaxDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Max")); - } - } - // cambio profilo - else if (split.MinOneSashChild()) - { - frame.ElementDimensionList.ElementAt(0).SetNameElement("Frame_Mixed_Bottom_Dim"); - if(split.AreaList.FirstOrDefault().AreaList.FirstOrDefault().AreaType is AreaTypes.SASH) - frame.ElementDimensionList.ElementAt(1).SetNameElement("Frame_Sash_Top_Dim"); - else - frame.ElementDimensionList.ElementAt(1).SetNameElement("Frame_Fixed_Top_Dim"); - frame.ElementDimensionList.ElementAt(2).SetNameElement("Frame_Mixed_Bottom_Dim"); - if (split.AreaList.Last().AreaList.FirstOrDefault().AreaType is AreaTypes.SASH) - frame.ElementDimensionList.ElementAt(3).SetNameElement("Frame_Sash_Top_Dim"); - else - frame.ElementDimensionList.ElementAt(3).SetNameElement("Frame_Fixed_Top_Dim"); - foreach (var elem in frame.ElementDimensionList) - { - elem.SetMinDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Min")); - elem.SetMaxDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Max")); - } - } - // solo vetri fissi - else - { - frame.ElementDimensionList.ElementAt(0).SetNameElement("Frame_Frame_Split_Dim"); - frame.ElementDimensionList.ElementAt(1).SetNameElement("Frame_Fixed_Top_Dim"); - frame.ElementDimensionList.ElementAt(2).SetNameElement("Frame_Frame_Split_Dim"); - frame.ElementDimensionList.ElementAt(3).SetNameElement("Frame_Fixed_Top_Dim"); - foreach (var elem in frame.ElementDimensionList) - { - elem.SetMinDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Min")); - elem.SetMaxDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Max")); - } - } - break; - } - case SplitShapes.HORIZONTAL: - { - // in tutte le aree splittate ho ante - if (split.OnlySashChild()) - { - frame.ElementDimensionList.ElementAt(0).SetNameElement("Frame_Sash_Bottom_Dim"); - frame.ElementDimensionList.ElementAt(1).SetNameElement("Frame_Mixed_Top_Dim"); - frame.ElementDimensionList.ElementAt(2).SetNameElement("Frame_Sash_Top_Dim"); - frame.ElementDimensionList.ElementAt(3).SetNameElement("Frame_Mixed_Top_Dim"); - foreach (var elem in frame.ElementDimensionList) - { - elem.SetMinDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Min")); - elem.SetMaxDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Max")); - } - } - // cambio profilo - else if (split.MinOneSashChild()) - { - if (split.AreaList.FirstOrDefault().AreaList.FirstOrDefault().AreaType is AreaTypes.SASH) - frame.ElementDimensionList.ElementAt(0).SetNameElement("Frame_Sash_Bottom_Dim"); - else - frame.ElementDimensionList.ElementAt(0).SetNameElement("Frame_Fixed_Bottom_Dim"); - frame.ElementDimensionList.ElementAt(1).SetNameElement("Frame_Mixed_Top_Dim"); - if (split.AreaList.ElementAt(2).AreaList.FirstOrDefault().AreaType is AreaTypes.SASH) - frame.ElementDimensionList.ElementAt(2).SetNameElement("Frame_Sash_Top_Dim"); - else - frame.ElementDimensionList.ElementAt(2).SetNameElement("Frame_Fixed_Top_Dim"); - frame.ElementDimensionList.ElementAt(3).SetNameElement("Frame_Mixed_Top_Dim"); - foreach (var elem in frame.ElementDimensionList) - { - elem.SetMinDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Min")); - elem.SetMaxDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Max")); - } - } - // solo vetri fissi - else - { - frame.ElementDimensionList.ElementAt(0).SetNameElement("Frame_Fixed_Top_Dim"); - frame.ElementDimensionList.ElementAt(1).SetNameElement("Frame_Frame_Split_Dim"); - frame.ElementDimensionList.ElementAt(2).SetNameElement("Frame_Fixed_Top_Dim"); - frame.ElementDimensionList.ElementAt(3).SetNameElement("Frame_Frame_Split_Dim"); - foreach (var elem in frame.ElementDimensionList) - { - elem.SetMinDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Min")); - elem.SetMaxDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Max")); - } - } - break; - } - case SplitShapes.GRID: - { - for (int i = 0; i < 4; i++) - frame.ElementDimensionList.ElementAt(i).SetNameElement("Frame_Frame_Split_Dim"); - foreach (var elem in frame.ElementDimensionList) - { - elem.SetMinDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Min")); - elem.SetMaxDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Max")); - } - break; - } - } - break; - } - } - break; - } - case AreaTypes.SASH: - { - - break; - } - case AreaTypes.SPLIT: - { - Split split = (Split)node; - switch (split.ParentArea.AreaType) - { - case AreaTypes.SASH: - { - for (int i = 0; i < split.ElemDimVertList.Count - 1; i++) - split.ElemDimVertList.ElementAt(i).SetNameElement("Sash_Sash_Split_Dim"); - for (int i = 0; i < split.ElemDimHorizList.Count - 1; i++) - split.ElemDimHorizList.ElementAt(i).SetNameElement("Sash_Sash_Split_Dim"); - foreach (var elem in split.ElemDimVertList) - { - elem.SetMinDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Min")); - elem.SetMaxDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Max")); - } - foreach (var elem in split.ElemDimHorizList) - { - elem.SetMinDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Min")); - elem.SetMaxDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Max")); - } - break; - } - case AreaTypes.FRAME: - { - if (split.MinOneSashChild()) - { - for (int i = 0; i < split.ElemDimVertList.Count - 1; i++) - split.ElemDimVertList.ElementAt(i).SetNameElement("Frame_Mixed_Split_Dim"); - for (int i = 0; i < split.ElemDimHorizList.Count - 1; i++) - split.ElemDimHorizList.ElementAt(i).SetNameElement("Frame_Mixed_Split_Dim"); - } - else - { - for (int i = 0; i < split.ElemDimVertList.Count - 1; i++) - split.ElemDimVertList.ElementAt(i).SetNameElement("Frame_Frame_Split_Dim"); - for (int i = 0; i < split.ElemDimHorizList.Count - 1; i++) - split.ElemDimHorizList.ElementAt(i).SetNameElement("Frame_Frame_Split_Dim"); - } - foreach (var elem in split.ElemDimVertList) - { - elem.SetMinDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Min")); - elem.SetMaxDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Max")); - } - foreach (var elem in split.ElemDimHorizList) - { - elem.SetMinDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Min")); - elem.SetMaxDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Max")); - } - break; - } - } - break; - } - default: - { - break; - } - } - foreach (var item in node.AreaList) - { - PopolateParamElement(item); - } - } - } - /// /// Metodo per riempire le liste Sash, Split, Splitted e Fill /// @@ -701,6 +488,35 @@ namespace WebWindowComplex } } + /// + /// Richiesta Profili Element da JWD + /// + /// + protected async Task DoReqElement(List groupIdList) + { + if (m_CurrWindow != null) + { +#if DEBUG + var CurrJwd = JsonConvert.SerializeObject(m_CurrWindow.Serialize(), Formatting.Indented); +#else + var CurrJwd = JsonConvert.SerializeObject(m_CurrWindow.Serialize()); +#endif + // verifico variazione JWD + if (!prevJwd.Equals(CurrJwd) || prevReq != (int)DataReq.ReqElement) + { + prevJwd = CurrJwd; + prevReq = (int)DataReq.ReqElement; + Dictionary Args = new Dictionary(); + Args.Add("Mode", $"{(int)Enums.QuestionModes.HARDWARE}"); + Args.Add("SubMode", $"{(int)Enums.QuestionHwSubModes.PROFILEDATAFROMAREA}"); + Args.Add("SerializedData", CurrJwd); + string listGroupId = JsonConvert.SerializeObject(groupIdList); + Args.Add("GroupId", listGroupId); + await EC_DoUpdate.InvokeAsync(Args); + } + } + } + /// /// Metodo di reset /// @@ -765,7 +581,6 @@ namespace WebWindowComplex DictShape = LiveData.DictShape, SvgPreview = LiveData.SvgPreview }; - // Aggiornati parametri di ingresso selezionati UpdateSelParameter(); // provo a deserializzare SE necessario @@ -847,14 +662,12 @@ namespace WebWindowComplex List reqList = SashList.Select(x => x.GroupId).ToList(); if (reqList.Count > 0) { - //prevReq = (int)DataReq.ReqShape; await DoReqShape(reqList); } } else { // chiedo SVG - //prevReq = (int)DataReq.ReqSvg; if (prevReq != (int)DataReq.ReqSvg || !prevLiveData.JwdEqual(LiveData.CurrJwd)) { if (prevReq != (int)DataReq.ReqHwOpt) @@ -947,6 +760,14 @@ namespace WebWindowComplex } } } + if(LiveData.DictElement.Count > 0) + { + // Inserisco i profili ricevuti nei rispettivi Element + foreach (var item in LiveData.DictElement) + { + + } + } } /// @@ -954,7 +775,6 @@ namespace WebWindowComplex /// protected void UpdateLists() { - PopolateParamElement((m_CurrWindow!).AreaList.First()); m_maxCol = 0; m_maxRow = 0; m_FillList = new List(); @@ -999,24 +819,17 @@ namespace WebWindowComplex #region Private Fields private int currAntaIndex = 0; - private int currFillIndex = -1; - private int currSashIndex = -1; - private int currSplitIndex = -1; - private CompileStep currStep; - private bool editLock = false; - private bool firstDisplay = true; /// /// Booleana fase loading /// private bool isLoading = false; - private bool isRendered = false; /// @@ -1034,7 +847,6 @@ namespace WebWindowComplex /// private Dictionary listWarnings = new Dictionary(); - private List m_FillList = new List(); private Frame? m_Frame; @@ -1045,9 +857,8 @@ namespace WebWindowComplex private int m_maxRow = 0; private List m_SashList = new List(); - private List m_SplitList = new List(); - + private List m_FillList = new List(); private List m_SplittedList = new List(); #endregion Private Fields @@ -1238,6 +1049,13 @@ namespace WebWindowComplex AdvStep(CompileStep.Tree); } + /// + /// Metodo per cercare un area precisa + /// + /// Area che si sta analizzando + /// Id Area che si sta cercando + /// Area che si sta cercando + /// private Area SearchArea(Area currentArea, int idSearch, Area itemSearch) { if (currentArea.GroupId == idSearch && currentArea.AreaType.Equals(itemSearch.AreaType)) @@ -1255,6 +1073,47 @@ namespace WebWindowComplex return null; } + /// + /// Metodo per cercare un area precisa + /// + /// Area che si sta analizzando + /// Id Area che si sta cercando + /// Indice che si sta cercando + /// + private Area UpdateIdElement(Area currentArea, int idSearch, int index) + { + switch (currentArea.AreaType) + { + case AreaTypes.FRAME: + { + Frame frame = (Frame)currentArea; + foreach(var item in frame.ElementDimensionList) + { + //if(item.nIndex == index) + + } + break; + } + case AreaTypes.SASH: + { + break; + } + case AreaTypes.SPLIT: + { + break; + } + } + foreach (Area child in currentArea.AreaList) + { + Area found = UpdateIdElement(child, idSearch, index); + if (found != null) + { + return found; + } + } + return null; + } + /// /// Metodo per aggiornare valori della sezione General /// @@ -1405,6 +1264,35 @@ namespace WebWindowComplex } } + /// + /// Aggiornamento Element della Window + /// + /// nuovo frame + /// + private async Task UpdateElement(Frame newFrame) + { + if (newFrame != null) + { + // cerco il record + var currRec = m_CurrWindow.AreaList.FirstOrDefault(x => x.GroupId == newFrame.GroupId); + // lo aggiorno + currRec = newFrame; + // richiedo update element del frame + List reqList = new List(); + reqList.Add(FrameWindow.GroupId); + // richiedo update element della sash (se presente) + if(SashList.Count > 0) + { + foreach(var item in SashList) + { + reqList.Add(item.GroupId); + } + } + if (prevReq == (int)DataReq.ReqElement) + await DoReqElement(reqList); + } + } + /// /// Aggiornamento opzioni data nuova sash group /// @@ -1420,9 +1308,6 @@ namespace WebWindowComplex currRec = newSash; // resetto hw lst await EC_ActionReq.InvokeAsync(DataAction.ResetHwOpt); - //reqHwOpt++; - //if(prevReq == (int)DataReq.ReqShape) - //{ // richiesta calcolo opzioni hardware per la singola sash group List reqList = SashList.Select(x => x.GroupId).ToList(); // chiamo con gruppo della nuova sash diff --git a/WebWindowComplex/WebWindowComplex.csproj b/WebWindowComplex/WebWindowComplex.csproj index bf3cbd2..e86ba8c 100644 --- a/WebWindowComplex/WebWindowComplex.csproj +++ b/WebWindowComplex/WebWindowComplex.csproj @@ -6,7 +6,7 @@ net8.0 enable enable - 2.8.1.2309 + 2.8.1.2609 Annamaria Sassi Egalware Componente gestione Configurazioni avanzate Window per LUX @@ -75,6 +75,12 @@ + + + + + + diff --git a/WebWindowConfigurator/WebWindowConfigurator.csproj b/WebWindowConfigurator/WebWindowConfigurator.csproj index b727b70..e735b04 100644 --- a/WebWindowConfigurator/WebWindowConfigurator.csproj +++ b/WebWindowConfigurator/WebWindowConfigurator.csproj @@ -6,7 +6,7 @@ net8.0 enable enable - 2.8.1.2309 + 2.8.1.2609 Annamaria Sassi Egalware Componente gestione JWD per LUX @@ -89,6 +89,29 @@ + + + + + + + + + + + + + + + + + + + + + + +