- Iniziato ad aggiungere inglesine come split

- Corretto warnings
This commit is contained in:
Annamaria Sassi
2026-02-17 16:14:04 +01:00
parent 3baec4170a
commit 80a8d44172
26 changed files with 320 additions and 131 deletions
+1 -3
View File
@@ -338,10 +338,8 @@ namespace Test.UI.Components.Pages
Random random = new Random();
CalcUid = Convert.ToString(random.Next(1000, 10000));
windowUid = CalcUid;
//InitialJwd = File.ReadAllText("Data\\FinestraSplitGrid.jwd");
//InitialJwd = File.ReadAllText("Data\\FinestraSplitHoriz.jwd");
//InitialJwd = File.ReadAllText("Data\\AntaDoppiaInglesine.jwd");
InitialJwd = File.ReadAllText("Data\\AntaDoppia.jwd");
//InitialJwd = File.ReadAllText("Data\\ArcoAntaDoppia.jwd");
currJwd = InitialJwd;
// rileggo altri dati
await ReloadData();
+222
View File
@@ -0,0 +1,222 @@
{
"ProfilePath": "Profilo78",
"Material": "Pino",
"ColorMaterial": "Black",
"Glass": "Vetro BE 2S 4T/16/4T",
"AreaList": [
{
"Shape": "RECTANGLE",
"DimensionList": [
{
"Index": 1,
"Name": "Width",
"Value": 800.0
},
{
"Index": 2,
"Name": "Height",
"Value": 1200.0
}
],
"ElementDimensionList": [
{
"Index": 1,
"Value": 78.0
},
{
"Index": 2,
"Value": 78.0
},
{
"Index": 3,
"Value": 78.0
},
{
"Index": 4,
"Value": 78.0
}
],
"JointList": [
{
"Index": 1,
"JointType": "FULL_H"
},
{
"Index": 2,
"JointType": "FULL_H"
},
{
"Index": 3,
"JointType": "FULL_H"
},
{
"Index": 4,
"JointType": "FULL_H"
}
],
"Threshold": "Bottom",
"BottomRail": false,
"BottomRailQty": 0,
"BottomRailElemDimList": [],
"GroupId": 1,
"AreaList": [
{
"IsSashVertical": true,
"IsDimensionLight": true,
"SashList": [
{
"SashId": 1,
"OpeningType": "TILTTURN_LEFT",
"MeasureType": "PROPORTIONAL",
"Dimension": 1.0,
"HasHandle": true,
"ElementDimensionList": [
{
"Index": 1,
"Value": 78.0
},
{
"Index": 2,
"Value": 78.0
},
{
"Index": 3,
"Value": 78.0
},
{
"Index": 4,
"Value": 78.0
}
],
"JointList": [
{
"Index": 1,
"JointType": "FULL_V"
},
{
"Index": 2,
"JointType": "FULL_V"
},
{
"Index": 3,
"JointType": "FULL_V"
},
{
"Index": 4,
"JointType": "FULL_V"
}
]
},
{
"SashId": 2,
"OpeningType": "TURNONLY_RIGHT",
"MeasureType": "PROPORTIONAL",
"Dimension": 1.0,
"HasHandle": false,
"ElementDimensionList": [
{
"Index": 1,
"Value": 78.0
},
{
"Index": 2,
"Value": 78.0
},
{
"Index": 3,
"Value": 78.0
},
{
"Index": 4,
"Value": 78.0
}
],
"JointList": [
{
"Index": 1,
"JointType": "FULL_V"
},
{
"Index": 2,
"JointType": "FULL_V"
},
{
"Index": 3,
"JointType": "FULL_V"
},
{
"Index": 4,
"JointType": "FULL_V"
}
]
}
],
"SashType": "NULL",
"BottomRail": false,
"BottomRailQty": 0,
"BottomRailElemDimList": [],
"Hardware": "000631",
"HwOptionList": [],
"GroupId": 2,
"AreaList": [
{
"GroupId": 3,
"AreaList": [
{
"FillType": "GLASS",
"GroupId": 4,
"AreaList": [
{
"SplitShape": "HORIZONTAL",
"SplitStartVert": false,
"SplitVertList": [],
"SplitHorizList": [
{
"IsRelative": true,
"Dimension": 50.0,
"MeasureType": "PERCENTAGE"
},
{
"IsRelative": true,
"Dimension": 50.0,
"MeasureType": "PERCENTAGE"
}
],
"ElementDimVertList": [],
"ElementDimHorizList": [
{
"Index": 1,
"Value": 78.0,
"Area": 0
}
],
"GroupId": 7,
"AreaList": [],
"AreaType": "SPLIT"
}
],
"AreaType": "FILL"
}
],
"AreaType": "SPLITTED"
},
{
"GroupId": 5,
"AreaList": [
{
"FillType": "GLASS",
"GroupId": 6,
"AreaList": [],
"AreaType": "FILL"
}
],
"AreaType": "SPLITTED"
}
],
"AreaType": "SASH"
}
],
"AreaType": "FRAME"
}
]
}
+3
View File
@@ -49,6 +49,9 @@
</ItemGroup>
<ItemGroup>
<None Update="Data\AntaDoppiaInglesine.jwd">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Data\ArcoAntaDoppia.jwd">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
+1 -1
View File
@@ -96,7 +96,7 @@ else
<button class="btn btn-outline-secondary btn-sm" @onclick="() => AddSplitToSash()">Add split</button>
</div>
<div class="input-group mb-2 justify-content-center">
<button class="btn btn-outline-secondary btn-sm">Add inglesina</button>
<button class="btn btn-outline-secondary btn-sm" @onclick="() => AddInglesinaToSash()">Add inglesina</button>
</div>
}
<button type="button" class="btn-close" aria-label="Close" @onclick="() => ClosePopup(IndexSash)"></button>
+15
View File
@@ -328,6 +328,21 @@ namespace WebWindowComplex.Compo
return EC_UpdateSash.InvokeAsync(args);
}
/// <summary>
/// Metodo per aggiungere l'inglesina nella singola anta
/// </summary>
/// <returns></returns>
private Task AddInglesinaToSash()
{
CurrAnta.AddInglesina();
DataUpdateProfile args = new DataUpdateProfile()
{
sash = CurrSashGroup,
reqProfile = true
};
return EC_UpdateSash.InvokeAsync(args);
}
private bool isOpen = false;
private void ToggleDropdown()
+4 -4
View File
@@ -12,16 +12,16 @@
<div class="modal-body">
@if(CurrFrame() != null)
{
@for (int i = CurrFrame().BottomRailElemDimList.Count - 1; i >= 0; i-- )
@for (int i = CurrFrame()!.BottomRailElemDimList.Count - 1; i >= 0; i-- )
{
<EditElement CurrRec="CurrFrame().BottomRailElemDimList.ElementAt(i)" IsBottomRail=true EC_Update="UpdateElement"></EditElement>
<EditElement CurrRec="CurrFrame()!.BottomRailElemDimList.ElementAt(i)" IsBottomRail=true EC_Update="UpdateElement"></EditElement>
}
}
@if (CurrSash() != null)
{
@for (int i = CurrSash().BottomRailElemDimList.Count - 1; i >= 0; i--)
@for (int i = CurrSash()!.BottomRailElemDimList.Count - 1; i >= 0; i--)
{
<EditElement CurrRec="CurrSash().BottomRailElemDimList.ElementAt(i)" IsBottomRail=true EC_Update="UpdateElement"></EditElement>
<EditElement CurrRec="CurrSash()!.BottomRailElemDimList.ElementAt(i)" IsBottomRail=true EC_Update="UpdateElement"></EditElement>
}
}
</div>
+3 -4
View File
@@ -27,17 +27,16 @@ namespace WebWindowComplex.Compo
if (updRec != null)
{
DataBottomRail ans = new();
ElementDimension currRec = new(CurrArea, -1, 0);
ElementDimension? currRec = new(CurrArea, -1, 0);
if (CurrFrame() != null)
{
// cerco il record
currRec = CurrFrame().BottomRailElemDimList.FirstOrDefault(x => x.ParentArea == updRec.ParentArea && x.nIndex == updRec.nIndex);
currRec = CurrFrame()!.BottomRailElemDimList.FirstOrDefault(x => x.ParentArea == updRec.ParentArea && x.nIndex == updRec.nIndex);
}
else if(CurrSash() != null)
{
// cerco il record
currRec = CurrSash().BottomRailElemDimList.FirstOrDefault(x => x.ParentArea == updRec.ParentArea && x.nIndex == updRec.nIndex);
currRec = CurrSash()!.BottomRailElemDimList.FirstOrDefault(x => x.ParentArea == updRec.ParentArea && x.nIndex == updRec.nIndex);
}
if (currRec != null)
{
+1 -1
View File
@@ -198,7 +198,7 @@ namespace WebWindowComplex.Compo
{
if (updRec != null)
{
SplitElementDimension? currRec = new SplitElementDimension(null, 0,0,-1);
SplitElementDimension? currRec = new SplitElementDimension(updRec.ParentArea, 0,0,-1);
if (updRec.nSubArea != 0)
{
List<SplitElementDimension> ElemIndexList = new List<SplitElementDimension>();
-4
View File
@@ -59,10 +59,6 @@
<i class="@hwIcon(ItemTableList[i].Row)" style="width:0.5rem;"></i>
</button>
</div>
@* <button class="btn btn-xs btn-light btn-rounded" style="width:2rem;"
@onclick="() => changeCollapsed(ItemTableList[row].Row)">
<i class="@hwIcon(ItemTableList[i].Row)" style="width:0.5rem;"></i>
</button> *@
}
@* <div class="card text-center m-1 p-1 shadow-sm hover-shadow">
<button class="btn btn-sm btn-danger btn-rounded"
+2 -2
View File
@@ -4,11 +4,11 @@
<span class="input-group-text">@(CurrOpt.sName)</span>
@if (CurrValue is String)
{
<input type="text" readonly class="form-control" value="@CurrOpt.ValueList.FirstOrDefault(x => x.sValue.Equals(CurrValue)).sDescription">
<input type="text" readonly class="form-control" value="@CurrOpt.ValueList.FirstOrDefault(x => x.sValue.Equals(CurrValue))!.sDescription">
}
else
{
<input type="number" readonly class="form-control" value="@CurrOpt.ValueList.FirstOrDefault(x => x.sValue == CurrValue).sDescription">
<input type="number" readonly class="form-control" value="@CurrOpt.ValueList.FirstOrDefault(x => x.sValue == CurrValue)!.sDescription">
}
}
else
+2 -2
View File
@@ -1240,7 +1240,7 @@ namespace WebWindowComplex.Json
public class PolymorphicJsonConverter : JsonConverter
{
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
public override object ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer)
{
// disambiguo il tipo JsonArea grazie al capo AreaType nelle classi giuste, e le popolo di dati
JObject item = JObject.Load(reader);
@@ -1285,7 +1285,7 @@ namespace WebWindowComplex.Json
return JsonArea!;
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
+13 -1
View File
@@ -104,7 +104,7 @@ namespace WebWindowComplex.Models
// Salvo il parent
if(this is Frame || ParentArea.AreaList.Last().Equals(this))
{
Frame f = null;
Frame? f = null;
if (this is Frame)
f = (Frame)this;
else
@@ -174,6 +174,18 @@ namespace WebWindowComplex.Models
AreaList[0].AreaList.Add(newSplittedList[i]);
}
public void AddInglesina()
{
// Creo l'inglesina
Split InglesinaArea = Split.CreateSplit(this, SplitShapes.HORIZONTAL);
// imposto i parametri di default
InglesinaArea.SetSplitStartVert(false);
InglesinaArea.SetSplitQtyHoriz(1, 0);
// Aggiungo l'inglesina nell'AreaList del Fill
Fill fill = (Fill)AreaList.First();
fill.AreaList.Add(InglesinaArea);
}
public abstract Area Copy(Area ParentArea);
public void SetGroupId(int nGroupId)
+1 -1
View File
@@ -105,7 +105,7 @@ namespace WebWindowComplex.Models
protected MeasureTypes m_SelMeasureType;
// reference
protected Area m_Parent;
protected virtual Area m_Parent;
#endregion Private Fields
+1 -1
View File
@@ -179,7 +179,7 @@ namespace WebWindowComplex.Models
m_dOverlap = dValue;
}
public ElementDimension Copy()
public virtual ElementDimension Copy()
{
ElementDimension newElementDimension = new ElementDimension(ParentArea, nIndex, dDimension);
return newElementDimension;
@@ -1,26 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WebWindowComplex.Models
{
public class OnPreviewEventArgs : EventArgs
{
#region Public Fields
public string sJwd;
#endregion Public Fields
#region Public Constructors
public OnPreviewEventArgs(string sJwd)
{
this.sJwd = sJwd;
}
#endregion Public Constructors
}
}
@@ -1,28 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WebWindowComplex.Models
{
public class OnReqHwOptEventArgs : EventArgs
{
#region Public Fields
public string sJwd;
public int nGroupId;
#endregion Public Fields
#region Public Constructors
public OnReqHwOptEventArgs(string sJwd, int nGroupId)
{
this.sJwd = sJwd;
this.nGroupId = nGroupId;
}
#endregion Public Constructors
}
}
@@ -1,28 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WebWindowComplex.Models
{
public class OnReqShapeEventArgs : EventArgs
{
#region Public Fields
public string sJwd;
public int groupId;
#endregion Public Fields
#region Public Constructors
public OnReqShapeEventArgs(string sJwd, int nGroupId)
{
this.sJwd = sJwd;
this.groupId = nGroupId;
}
#endregion Public Constructors
}
}
+3 -3
View File
@@ -943,11 +943,11 @@ namespace WebWindowComplex.Models
{
if (!string.IsNullOrEmpty(OptionXml))
{
ParametriOpzioni HwOptions = new ParametriOpzioni();
ParametriOpzioni? HwOptions = new ParametriOpzioni();
XmlSerializer serializer = new XmlSerializer(typeof(ParametriOpzioni));
StringReader reader = new StringReader(OptionXml);
HwOptions = (ParametriOpzioni)serializer.Deserialize(reader);
if (HwOptions!.Items != null)
HwOptions = (ParametriOpzioni?)serializer.Deserialize(reader);
if (HwOptions != null && HwOptions.Items != null)
{
m_HwOptionList.Clear();
foreach (var HwOption in HwOptions.Items)
+3 -2
View File
@@ -162,8 +162,9 @@ namespace WebWindowComplex.Models
// Rimuovo da tutte le sottoaree degli element l'ultimo elemento
for (int subArea = 1; subArea <= ElemDimHorizList.Max(x => x.nSubArea); subArea++)
{
SplitElementDimension removeElem = ElemDimHorizList.Where(x => x.nSubArea == subArea).OrderByDescending(x => x.nIndex).FirstOrDefault();
ElemDimHorizList.Remove(removeElem);
SplitElementDimension? removeElem = ElemDimHorizList.Where(x => x.nSubArea == subArea).OrderByDescending(x => x.nIndex).FirstOrDefault();
if(removeElem != null)
ElemDimHorizList.Remove(removeElem);
}
}
else
+2 -2
View File
@@ -613,8 +613,8 @@ namespace WebWindowComplex.Models
{
for (int i = 0; i < m_Parent.ElemDimHorizList.Count; i++)
{
if( i == i + m_Parent.ElemDimVertList.Count * i)
elemList.Add(m_Parent.ElemDimHorizList.ElementAtOrDefault(i));
if( i == i + m_Parent.ElemDimVertList.Count * i && m_Parent.ElemDimHorizList.ElementAtOrDefault(i) != null)
elemList.Add(m_Parent.ElemDimHorizList.ElementAtOrDefault(i)!);
}
}
foreach (var item in elemList)
@@ -43,7 +43,7 @@ namespace WebWindowComplex.Models
m_nSubArea = nSubArea;
}
public SplitElementDimension Copy()
public override SplitElementDimension Copy()
{
SplitElementDimension newSplitElementDimension = new SplitElementDimension(ParentArea, nIndex, dDimension, nSubArea);
return newSplitElementDimension;
+10 -7
View File
@@ -199,13 +199,16 @@
</div>
@if(!baseUser && SplittedList != null && SplittedList.Count > 0)
{
Splitted currSplitted = SplittedList.Where(x => x.AreaList.First().Equals(FillList[currFillIndex])).FirstOrDefault()?? new Splitted(null, null);
@if (currSplitted.ParentArea != null && currSplitted.ParentWindow != null){
<AreaSplit SashList="SashList"
SplittedList="SplittedList"
CurrSplitted="currSplitted"
EC_UpdateSplitted="UpdatePreviewSplitted">
</AreaSplit>
Splitted? currSplitted = SplittedList.Where(x => x.AreaList.First().Equals(FillList[currFillIndex])).FirstOrDefault();
@if(currSplitted != null)
{
@if (currSplitted.ParentArea != null && currSplitted.ParentWindow != null){
<AreaSplit SashList="SashList"
SplittedList="SplittedList"
CurrSplitted="currSplitted"
EC_UpdateSplitted="UpdatePreviewSplitted">
</AreaSplit>
}
}
}
}
+13 -7
View File
@@ -256,7 +256,10 @@ namespace WebWindowComplex
if (FillList[i].Equals(node))
{
nFill = FillList.Count == 1 ? "" : $"{i + 1}";
ItemTableList.Add(new ItemTable(AreaTypes.FILL, "FL" + nFill, maxRow, col, i, 0));
if(node.AreaList.Count == 0)
ItemTableList.Add(new ItemTable(AreaTypes.FILL, "FL" + nFill, maxRow, col, i, 0));
else
ItemTableList.Add(new ItemTable(AreaTypes.FILL, "FL" + nFill, maxRow, col, i, node.AreaList.Count));
break;
}
}
@@ -1133,7 +1136,7 @@ namespace WebWindowComplex
RowCollapsed[item.Key] = Args[item.Key] ? true : false;
if (m_ItemTableList.FirstOrDefault(x => x.Row == item.Key) != null)
{
Child[item.Key] = m_ItemTableList.FirstOrDefault(x => x.Row == item.Key).NumChild;
Child[item.Key] = m_ItemTableList.FirstOrDefault(x => x.Row == item.Key)!.NumChild;
}
}
}
@@ -1374,10 +1377,13 @@ namespace WebWindowComplex
if (newFill != null)
{
// cerco il record
var currRec = (Fill)SearchAreaFromGroupId(FrameWindow, newFill.GroupId);
var currRec = (Fill?)SearchAreaFromGroupId(FrameWindow, newFill.GroupId);
// lo aggiorno
currRec = newFill;
await DoPreviewSvg();
if(currRec != null)
{
currRec = newFill;
await DoPreviewSvg();
}
}
}
@@ -1622,7 +1628,7 @@ namespace WebWindowComplex
bool noSvg = args.noSvg;
if (svgNoHw)
{
Sash item = (Sash)SearchAreaFromGroupId(FrameWindow, newSash.GroupId);
Sash? item = (Sash?)SearchAreaFromGroupId(FrameWindow, newSash.GroupId);
if (newSash != null && item != null)
{
item = newSash;
@@ -1631,7 +1637,7 @@ namespace WebWindowComplex
}
else
{
Sash item = (Sash)SearchAreaFromGroupId(FrameWindow, newSash.GroupId);
Sash? item = (Sash?)SearchAreaFromGroupId(FrameWindow, newSash.GroupId);
if (newSash != null && item != null)
{
item = newSash;
+13 -1
View File
@@ -6,7 +6,7 @@
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<Version>3.1.2.1713</Version>
<Version>3.1.2.1715</Version>
<Authors>Annamaria Sassi</Authors>
<Company>Egalware</Company>
<Description>Componente gestione Configurazioni avanzate Window per LUX</Description>
@@ -168,6 +168,18 @@
+1 -1
View File
@@ -47,7 +47,7 @@ namespace WebWindowConfigurator.Json
{
Window Window = new Window() { sProfilePath = m_sProfilePath };
foreach (var Area in AreaList)
Window.AreaList.Add((Frame)Area.Deserialize(null,Window));
Window.AreaList.Add((Frame)Area.Deserialize(null,Window)!);
return Window;
}
}
@@ -6,7 +6,7 @@
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<Version>3.1.2.1713</Version>
<Version>3.1.2.1715</Version>
<Authors>Annamaria Sassi</Authors>
<Company>Egalware</Company>
<Description>Componente gestione JWD per LUX</Description>
@@ -160,6 +160,10 @@