- Gestito salvataggio e chiusura componente con salvataggio jwd

- Correzioni valori nulli
- Aggiunta funzione per calcolare altezza sashGroup
This commit is contained in:
Annamaria Sassi
2026-03-03 19:02:42 +01:00
parent 224bac0947
commit ada0fc2ce5
18 changed files with 319 additions and 299 deletions
+76 -2
View File
@@ -435,7 +435,7 @@ namespace WebWindowComplex.Models
for (int i = 0; i < AreaList.Count; i++)
{
double width = SashList.ElementAt(i).dDimension;
if(SashList.ElementAt(i).ElementDimensionList.Count > 0)
if(SashList.ElementAt(i).ElementDimensionList.Count > 0 && !bIsDimensionLight)
width = width - SashList.ElementAt(i).ElementDimensionList.ElementAt(1).dDimension
- SashList.ElementAt(i).ElementDimensionList.Last().dDimension;
AreaList.ElementAt(i).SearchAreaList(AreaList.ElementAt(i), width, "Width");
@@ -1159,7 +1159,7 @@ namespace WebWindowComplex.Models
else
{
double dim = width;
if(split.SplitHorizList.Count > 0 && split.AreaList.First().AreaList.First() is Sash sash)
if (split.SplitHorizList.Count > 0 && split.AreaList.ElementAt(i).AreaList.First() is Sash sash)
{
dim = dim + sash.SashList.First().ElementDimensionList.Last().dOverlap
+ sash.SashList.Last().ElementDimensionList.ElementAt(1).dOverlap;
@@ -1209,6 +1209,80 @@ namespace WebWindowComplex.Models
return res;
}
internal AreaFound CalculateHeightSashGroup(Area area, double height, AreaFound res)
{
for (int i = 0; i < area.AreaList.Count; i++)
{
if (area.Equals(this))
{
res.m_Dimension = height;
res.m_Found = true;
return res;
}
Area item = area.AreaList[i];
if (area is Split split)
{
if (split.SplitVertList.Count > 0)
{
double dim = height;
res = CalculateHeightSashGroup(item, dim, res);
if (res.m_Dimension != -1 && res.m_Found)
return res;
}
else
{
double dim = height;
switch (split.SplitHorizList.ElementAt(i).SelMeasureType)
{
case MeasureTypes.ABSOLUTE:
{
dim = split.SplitHorizList.ElementAt(i).dDimension;
break;
}
case MeasureTypes.PROPORTIONAL:
{
double widthGlass = height;
AreaDimension ad = new AreaDimension(split.SplitHorizList.ElementAt(i).dDimension, split.SplitHorizList.ElementAt(i).SelMeasureType, split.SplitHorizList.ElementAt(i).Parent);
List<AreaDimension> adList = new List<AreaDimension>();
foreach (var it in split.SplitHorizList)
{
adList.Add(new AreaDimension(it.dDimension, it.SelMeasureType, it.Parent));
}
foreach (var elem in split.ElemDimHorizList)
{
widthGlass = widthGlass - elem.dDimension;
}
dim = ad.ConvertFromPropVal(adList, MeasureTypes.ABSOLUTE, widthGlass);
break;
}
case MeasureTypes.PERCENTAGE:
{
foreach (var elem in split.ElemDimHorizList)
{
dim = dim - elem.dDimension;
}
dim = split.SplitHorizList.ElementAt(i).dDimension * dim / 100;
break;
}
}
if (split.ParentArea is Frame frame && split.AreaList.ElementAt(i).AreaList.First() is Sash sash)
dim = dim + sash.SashList.First().ElementDimensionList.First().dOverlap
+ sash.SashList.First().ElementDimensionList.ElementAt(sash.SashList.First().ElementDimensionList.Count - 2).dOverlap;
res = CalculateHeightSashGroup(item, dim, res);
if (res.m_Dimension != -1 && res.m_Found)
return res;
}
}
else
{
res = CalculateHeightSashGroup(item, height, res);
if (res.m_Dimension != -1 && res.m_Found)
return res;
}
}
return res;
}
#endregion Internal Methods
#region Private Fields