+
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 @@
+
+