diff --git a/WebWindowComplex/Compo/CardSplit.razor b/WebWindowComplex/Compo/CardSplit.razor index 7811a2d..f2224b6 100644 --- a/WebWindowComplex/Compo/CardSplit.razor +++ b/WebWindowComplex/Compo/CardSplit.razor @@ -1,4 +1,5 @@ - +@using static WebWindowComplex.Json.WindowConst +
@@ -11,22 +12,38 @@
-
-
-
Split
-
-
- @if ((CurrItem.nSplitQtyVert == 1 && CurrItem.nSplitQtyHoriz == 0) || (CurrItem.nSplitQtyVert == 0 && CurrItem.nSplitQtyHoriz == 1)) - { -
- -
- } -
-
+
+
Split
+ @if ((CurrItem.nSplitQtyVert == 1 && CurrItem.nSplitQtyHoriz == 0) || (CurrItem.nSplitQtyVert == 0 && CurrItem.nSplitQtyHoriz == 1)) + {
- +
+ } +
+ +
+
diff --git a/WebWindowComplex/Compo/CardSplit.razor.cs b/WebWindowComplex/Compo/CardSplit.razor.cs index 9967d05..9562c05 100644 --- a/WebWindowComplex/Compo/CardSplit.razor.cs +++ b/WebWindowComplex/Compo/CardSplit.razor.cs @@ -1,5 +1,6 @@ using Microsoft.AspNetCore.Components; using WebWindowComplex.Models; +using static WebWindowComplex.Json.WindowConst; namespace WebWindowComplex.Compo { @@ -53,6 +54,12 @@ namespace WebWindowComplex.Compo [Parameter] public EventCallback EC_ReqResetDictShape { get; set; } + /// + /// Evento per aggiornare lo split + /// + [Parameter] + public EventCallback EC_UpdateSplit { get; set; } + /// /// Evento per tornare nella pagine Tree /// @@ -139,6 +146,25 @@ namespace WebWindowComplex.Compo { _ = EC_ReqClose.InvokeAsync(true); } + + private bool isOpen = false; + private void ToggleDropdown() + { + isOpen = !isOpen; + } + protected async Task SetMeasureType(MeasureTypes type) + { + isOpen = !isOpen; + foreach (var item in CurrItem.SplitVertList) + { + item.SetSelMeasureType(type); + } + foreach (var item in CurrItem.SplitHorizList) + { + item.SetSelMeasureType(type); + } + await EC_UpdateSplit.InvokeAsync(CurrItem); + } } public class DataChangeStartVert diff --git a/WebWindowComplex/Json/JsonUtility.cs b/WebWindowComplex/Json/JsonUtility.cs index 44983d1..235fea4 100644 --- a/WebWindowComplex/Json/JsonUtility.cs +++ b/WebWindowComplex/Json/JsonUtility.cs @@ -531,6 +531,7 @@ namespace WebWindowComplex.Json { Split.SplitHorizList[SplitIndex].SetIsRelative(m_SplitHorizList[SplitIndex].IsRelative); Split.SplitHorizList[SplitIndex].SetDimension(m_SplitHorizList[SplitIndex].Dimension); + Split.SplitHorizList[SplitIndex].SetMeasureType(m_SplitHorizList[SplitIndex].MeasureType); } } foreach (var Area in AreaList) diff --git a/WebWindowComplex/Models/Sash.cs b/WebWindowComplex/Models/Sash.cs index 9738740..75509cb 100644 --- a/WebWindowComplex/Models/Sash.cs +++ b/WebWindowComplex/Models/Sash.cs @@ -417,10 +417,6 @@ namespace WebWindowComplex.Models newSash.SetIsSashVertical(bIsSashVertical); newSash.SetOrientationSashType(OrientationSashType); newSash.SetSashBottomRailQty(SashBottomRailQty); - newSash.SetSelFamilyHardwareFromIndex(m_SelHardware.Id); - newSash.ReqRefreshShape(); - newSash.RefreshHardwareOptionList(); - newSash.SetSelHardware(m_SelHardware); for (int i = 0; i < SashList.Count; i++) { //Cancello SashDimension di default e aggiungo la copia @@ -438,6 +434,11 @@ namespace WebWindowComplex.Models Area newArea = item.Copy(newSash); newSash.AreaList.Add(newArea); } + newSash.SetSelFamilyHardwareFromIndex(m_SelHardware.Id); + newSash.SetSelHardwareFromId(CustomHwId); + //newSash.ReqRefreshShape(); + //newSash.RefreshHardwareOptionList(); + //newSash.SetSelHardware(m_SelHardware); return newSash; } diff --git a/WebWindowComplex/Models/SashDimension.cs b/WebWindowComplex/Models/SashDimension.cs index 9058f22..1d110bc 100644 --- a/WebWindowComplex/Models/SashDimension.cs +++ b/WebWindowComplex/Models/SashDimension.cs @@ -483,29 +483,36 @@ namespace WebWindowComplex.Models if (area.Equals(m_Parent)) return width; Area item = area.AreaList[i]; - if(area is Split) + if (area is Split) { Split split = (Split)area; - switch (split.SplitVertList.ElementAt(i).SelMeasureType) + if (split.SplitVertList.Count > 0) { - case MeasureTypes.ABSOLUT: - { - risultato = CalculateWidthSashGroup(item, split.SplitVertList.ElementAt(i).dDimension); - break; - } - case MeasureTypes.PROPORTIONAL: - { - //risultato = CalculateWidthSashGroup(item, split.SplitVertList.ElementAt(i).dDimension); - break; - } - case MeasureTypes.PERCENTAGE: - { - risultato = CalculateWidthSashGroup(item, split.SplitVertList.ElementAt(i).dDimension * width / 100); - break; - } + switch (split.SplitVertList.ElementAt(i).SelMeasureType) + { + case MeasureTypes.ABSOLUT: + { + risultato = CalculateWidthSashGroup(item, split.SplitVertList.ElementAt(i).dDimension); + break; + } + case MeasureTypes.PROPORTIONAL: + { + //risultato = CalculateWidthSashGroup(item, split.SplitVertList.ElementAt(i).dDimension); + break; + } + case MeasureTypes.PERCENTAGE: + { + risultato = CalculateWidthSashGroup(item, split.SplitVertList.ElementAt(i).dDimension * width / 100); + break; + } + } + if (risultato != -1) + return risultato; + } + else + { + risultato = CalculateWidthSashGroup(item, width); } - if (risultato != -1) - return risultato; } else if (area is Sash) { diff --git a/WebWindowComplex/Models/SplitDimension.cs b/WebWindowComplex/Models/SplitDimension.cs index fef0c3b..0ad1e99 100644 --- a/WebWindowComplex/Models/SplitDimension.cs +++ b/WebWindowComplex/Models/SplitDimension.cs @@ -335,12 +335,18 @@ namespace WebWindowComplex.Models { MeasureTypes newType = (MeasureTypes)value; List splitList = null; + double tot = 0; if (bIsVertListDim) + { splitList = m_Parent.SplitVertList; - else + tot = CalculateWidthSplitGroup(m_Parent.ParentWindow.AreaList.FirstOrDefault(), m_Parent.ParentWindow.AreaList.FirstOrDefault().DimensionList.Where(x => x.sName == "Width").First().dValue); + } + else + { splitList = m_Parent.SplitHorizList; - double widthTot = CalculateWidthSplitGroup(m_Parent.ParentWindow.AreaList.FirstOrDefault(), m_Parent.ParentWindow.AreaList.FirstOrDefault().DimensionList.Where(x => x.sName == "Width").First().dValue); - m_dDimension = ConvertDimension(m_SelMeasureType, newType, widthTot, splitList); + tot = CalculateHeightSplitGroup(m_Parent.ParentWindow.AreaList.FirstOrDefault(), m_Parent.ParentWindow.AreaList.FirstOrDefault().DimensionList.Where(x => x.sName == "Height").First().dValue); + } + m_dDimension = ConvertDimension(m_SelMeasureType, newType, tot, splitList); m_SelMeasureType = (MeasureTypes)value; m_Parent.ParentWindow.OnUpdatePreview(m_Parent.ParentWindow.sSerialized()); } @@ -413,7 +419,7 @@ namespace WebWindowComplex.Models #region Internal Methods /// - /// Metodo per calcolare larghezza intera split group + /// Metodo per calcolare larghezza intero split group /// /// area di partenza /// larghezza di partenza @@ -429,26 +435,33 @@ namespace WebWindowComplex.Models if (area is Split) { Split split = (Split)area; - switch (split.SplitVertList.ElementAt(i).SelMeasureType) + if(split.SplitVertList.Count > 0) { - case MeasureTypes.ABSOLUT: - { - risultato = CalculateWidthSplitGroup(item, split.SplitVertList.ElementAt(i).dDimension); - break; - } - case MeasureTypes.PROPORTIONAL: - { - //risultato = CalculateWidthSplitGroup(item, split.SplitVertList.ElementAt(i).dDimension); - break; - } - case MeasureTypes.PERCENTAGE: - { - risultato = CalculateWidthSplitGroup(item, split.SplitVertList.ElementAt(i).dDimension * width / 100); - break; - } + switch (split.SplitVertList.ElementAt(i).SelMeasureType) + { + case MeasureTypes.ABSOLUT: + { + risultato = CalculateWidthSplitGroup(item, split.SplitVertList.ElementAt(i).dDimension); + break; + } + case MeasureTypes.PROPORTIONAL: + { + //risultato = CalculateWidthSplitGroup(item, split.SplitVertList.ElementAt(i).dDimension); + break; + } + case MeasureTypes.PERCENTAGE: + { + risultato = CalculateWidthSplitGroup(item, split.SplitVertList.ElementAt(i).dDimension * width / 100); + break; + } + } + if (risultato != -1) + return risultato; + } + else + { + risultato = CalculateWidthSplitGroup(item, width); } - if (risultato != -1) - return risultato; } else if (area is Sash) { @@ -484,6 +497,85 @@ namespace WebWindowComplex.Models return width; } + /// + /// Metodo per calcolare altezza intero split group + /// + /// area di partenza + /// larghezza di partenza + /// + internal double CalculateHeightSplitGroup(Area area, double width) + { + for (int i = 0; i < area.AreaList.Count; i++) + { + double risultato = -1; + if (area.Equals(m_Parent)) + return width; + Area item = area.AreaList[i]; + if (area is Split) + { + Split split = (Split)area; + if (split.SplitHorizList.Count > 0) + { + switch (split.SplitHorizList.ElementAt(i).SelMeasureType) + { + case MeasureTypes.ABSOLUT: + { + risultato = CalculateHeightSplitGroup(item, split.SplitVertList.ElementAt(i).dDimension); + break; + } + case MeasureTypes.PROPORTIONAL: + { + //risultato = CalculateHeightSplitGroup(item, split.SplitVertList.ElementAt(i).dDimension); + break; + } + case MeasureTypes.PERCENTAGE: + { + risultato = CalculateHeightSplitGroup(item, split.SplitVertList.ElementAt(i).dDimension * width / 100); + break; + } + } + if (risultato != -1) + return risultato; + } + else + { + risultato = CalculateHeightSplitGroup(item, width); + } + } + else if (area is Sash) + { + Sash sash = (Sash)area; + switch (sash.SashList.ElementAt(i).SelMeasureType) + { + case MeasureTypes.ABSOLUT: + { + risultato = CalculateHeightSplitGroup(item, sash.SashList.ElementAt(i).dDimension); + break; + } + case MeasureTypes.PROPORTIONAL: + { + //risultato = CalculateHeightSplitGroup(item, sash.SashList.ElementAt(i).dDimension); + break; + } + case MeasureTypes.PERCENTAGE: + { + risultato = CalculateHeightSplitGroup(item, sash.SashList.ElementAt(i).dDimension * width / 100); + break; + } + } + if (risultato != -1) + return risultato; + } + else + { + risultato = CalculateHeightSplitGroup(item, width); + if (risultato != -1) + return risultato; + } + } + return width; + } + /// /// Calcolo MCD /// @@ -684,6 +776,27 @@ namespace WebWindowComplex.Models m_SelMeasureType = value; } + internal void SetSelMeasureType(MeasureTypes value) + { + if (m_SelMeasureType != (MeasureTypes)value) + { + MeasureTypes newType = (MeasureTypes)value; + double tot = 0; + if (bIsVertListDim) + { + tot = CalculateWidthSplitGroup(m_Parent.ParentWindow.AreaList.FirstOrDefault(), m_Parent.ParentWindow.AreaList.FirstOrDefault().DimensionList.Where(x => x.sName == "Width").First().dValue); + m_dDimension = ConvertDimension(m_SelMeasureType, newType, tot, m_Parent.SplitVertList); + } + else + { + tot = CalculateHeightSplitGroup(m_Parent.ParentWindow.AreaList.FirstOrDefault(), m_Parent.ParentWindow.AreaList.FirstOrDefault().DimensionList.Where(x => x.sName == "Height").First().dValue); + m_dDimension = ConvertDimension(m_SelMeasureType, newType, tot, m_Parent.SplitHorizList); + } + m_SelMeasureType = (MeasureTypes)value; + //m_Parent.ParentWindow.OnUpdatePreview(m_Parent.ParentWindow.sSerialized()); + } + } + #endregion Internal Methods #region Private Fields diff --git a/WebWindowComplex/TableComp.razor b/WebWindowComplex/TableComp.razor index 19a2b4b..465c4a6 100644 --- a/WebWindowComplex/TableComp.razor +++ b/WebWindowComplex/TableComp.razor @@ -108,7 +108,8 @@ EC_SwapTwoAree="SwapTwoAree" EC_RemoveArea="RemoveArea" EC_ReqResetDictShape="ReqResetDict" - EC_ChangeStartVert="changeStartVert" + EC_ChangeStartVert="changeStartVert" + EC_UpdateSplit="UpdateSplit" EC_ReqClose="ReturnTree"> diff --git a/WebWindowComplex/TableComp.razor.cs b/WebWindowComplex/TableComp.razor.cs index e84c1ed..41bc7f3 100644 --- a/WebWindowComplex/TableComp.razor.cs +++ b/WebWindowComplex/TableComp.razor.cs @@ -842,9 +842,6 @@ namespace WebWindowComplex } if (SashList.Count > 0) currAnta = 0; -#if false - _ = InvokeAsync(StateHasChanged); -#endif // Aggiorno window con dati shape e hw option UpdateDict(); } @@ -1204,6 +1201,11 @@ namespace WebWindowComplex a.SetParentArea(currSplitted); // Aggiungo copia a Splitted currSplitted.AreaList.Add(a); + // richiedo update shape della sash appena aggiunta + List reqList = SashList.Select(x => x.GroupId).ToList(); + reqList.Add(a.GroupId); + //List reqList = new List { currSplitted.AreaList.First().GroupId }; + await DoReqShape(reqList); await DoPreviewSvg(); } @@ -1379,6 +1381,24 @@ namespace WebWindowComplex return null; } + private Area SearchSashSplit(Area currentArea, int idSearch, Area newItem) + { + if (currentArea.GroupId == idSearch && currentArea.AreaType.Equals(newItem.AreaType)) + { + currentArea = newItem; + return currentArea; + } + foreach (Area child in currentArea.AreaList) + { + Area found = SearchSashSplit(child, idSearch, newItem); + if (found != null) + { + return found; + } + } + return null; + } + /// /// Selezione del colore /// @@ -1438,12 +1458,13 @@ namespace WebWindowComplex await DoPreviewSvg(true, true); if (currArea is Split) { - List reqShape = new List(); - if (currArea.AreaList[0].AreaList.Where(x => x.AreaType == AreaTypes.SASH).ToList().Count() > 0) - reqShape.Add(currArea.AreaList[0].AreaList.Where(x => x.AreaType == AreaTypes.SASH).Select(x => x.GroupId).FirstOrDefault()); - if (currArea.AreaList[1].AreaList.Where(x => x.AreaType == AreaTypes.SASH).ToList().Count() > 0) - reqShape.Add(currArea.AreaList[1].AreaList.Where(x => x.AreaType == AreaTypes.SASH).Select(x => x.GroupId).FirstOrDefault()); - await DoReqShape(reqShape); + List reqList = SashList.Select(x => x.GroupId).ToList(); + //List reqShape = new List(); + //if (currArea.AreaList[0].AreaList.Where(x => x.AreaType == AreaTypes.SASH).ToList().Count() > 0) + // reqShape.Add(currArea.AreaList[0].AreaList.Where(x => x.AreaType == AreaTypes.SASH).Select(x => x.GroupId).FirstOrDefault()); + //if (currArea.AreaList[1].AreaList.Where(x => x.AreaType == AreaTypes.SASH).ToList().Count() > 0) + // reqShape.Add(currArea.AreaList[1].AreaList.Where(x => x.AreaType == AreaTypes.SASH).Select(x => x.GroupId).FirstOrDefault()); + await DoReqShape(reqList); } } @@ -1517,6 +1538,12 @@ namespace WebWindowComplex await DoPreviewSvg(); } + private async Task UpdateSplit(Split newSplit) + { + SearchSashSplit(FrameWindow, newSplit.GroupId, newSplit); + await DoPreviewSvg(); + } + /// /// Aggiornamento Shape x ogni Group di Sash della finestra /// diff --git a/WebWindowComplex/WebWindowComplex.csproj b/WebWindowComplex/WebWindowComplex.csproj index e3eb945..9e53b2f 100644 --- a/WebWindowComplex/WebWindowComplex.csproj +++ b/WebWindowComplex/WebWindowComplex.csproj @@ -6,7 +6,7 @@ net8.0 enable enable - 2.7.11.2414 + 2.7.11.2509 Annamaria Sassi Egalware Componente gestione Configurazioni avanzate Window per LUX @@ -147,6 +147,13 @@ + + + + + + + diff --git a/WebWindowConfigurator/WebWindowConfigurator.csproj b/WebWindowConfigurator/WebWindowConfigurator.csproj index 4cded15..2d45d1c 100644 --- a/WebWindowConfigurator/WebWindowConfigurator.csproj +++ b/WebWindowConfigurator/WebWindowConfigurator.csproj @@ -6,7 +6,7 @@ net8.0 enable enable - 2.7.11.2414 + 2.7.11.2509 Annamaria Sassi Egalware Componente gestione JWD per LUX @@ -223,6 +223,8 @@ + +