From ce8bd4fafc30a1aaa01583d4e1bda98803630f3c Mon Sep 17 00:00:00 2001 From: Annamaria Sassi Date: Wed, 28 Jan 2026 11:26:54 +0100 Subject: [PATCH 1/3] Corretti alcuni Warnings --- Directory.Packages.props | 6 +- README.md | 6 +- Test.UI/Components/Pages/BaseEdit.razor.cs | 12 +- Test.UI/Components/Pages/EditJWD.razor.cs | 20 +- Test.UI/Components/Pages/Home.razor.cs | 2 +- WebWindowComplex/Compo/CardFrame.razor | 2 +- WebWindowComplex/Compo/CardSashGroup.razor.cs | 2 +- WebWindowComplex/Compo/CardSplit.razor.cs | 4 +- WebWindowComplex/Compo/EditElement.razor.cs | 2 +- .../Compo/EditOptionCombo.razor.cs | 4 +- .../Compo/EditOptionText.razor.cs | 4 +- WebWindowComplex/Json/JsonUtility.cs | 20 +- WebWindowComplex/Models/AGBOptionText.cs | 5 +- WebWindowComplex/Models/Area.cs | 91 ++--- WebWindowComplex/Models/ElementDimension.cs | 2 +- WebWindowComplex/Models/Frame.cs | 24 +- WebWindowComplex/Models/FrameArcElement.cs | 2 - WebWindowComplex/Models/Sash.cs | 21 +- WebWindowComplex/Models/SashArcElement.cs | 2 - WebWindowComplex/Models/SashDimension.cs | 350 +++++++++--------- WebWindowComplex/Models/Split.cs | 155 ++++---- WebWindowComplex/Models/SplitDimension.cs | 110 +++--- WebWindowComplex/Models/Window.cs | 8 +- WebWindowComplex/TableComp.razor.cs | 20 +- WebWindowComplex/WebWindowComplex.csproj | 9 +- .../WebWindowConfigurator.csproj | 15 +- WebWindowConfigurator/Window.cs | 16 +- 27 files changed, 479 insertions(+), 435 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 07e8637..cc64997 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -5,8 +5,8 @@ - - + + @@ -15,4 +15,4 @@ - + \ No newline at end of file diff --git a/README.md b/README.md index 0e812e9..fcd2ced 100644 --- a/README.md +++ b/README.md @@ -130,8 +130,8 @@ Descrive il tipo di riempimento: vetro o pannello. ## Richieste di informazioni a EgwMultiEnginManager -Nel componente sono presenti quattro tipi di richieste di informazioni al programma EgwMultiEngineManager: +Nel componente sono presenti quattro tipi di richieste al programma EgwMultiEngineManager: 1. SVG: serve per avere SVG dato il JWD per poter rappresentare il disegno. La domanda è costituita dal JWD e la risposta contiene il SVG; - 2. Forma del telaio: serve per poter avere la lista degli hardware coerenti con le caratteristiche scelte. La domanda è costituita dal JWD e dalla lista di groupId interessati. La risposta contiene un dizionario di valori interi-stringa che rappresentano groupId-forma; + 2. Forma del telaio: la forma serve per poter determinare la lista degli hardware coerenti con le caratteristiche scelte. La domanda è costituita dal JWD e dalla lista di groupId interessati. La risposta contiene un dizionario di valori interi-stringa che rappresentano groupId-forma; 3. Hardware option: serve per avere le opzioni relative all'hardware selezionato. La domanda è costituita dal JWD e la lista di groupId interessati. La risposta contiene un dizionario interi-stringa che rappresentano groupId-opzioni hardware. Le opzioni hardware sono restituite in formato xml; - 4. Profili degli elementi: serve per avere i profili degli elementi groupId richiesto (nel caso di gruppi di ante gli elemeneti sono specificati per ogni anta). La domanda è costituita dal JWD e dalla lista di groupId interessati. La risposta contiene un dizionario di valori interi-stringhe. + 4. Profili degli elementi: serve per avere i profili degli elementi del groupId richiesto (nel caso di gruppi di ante gli elemeneti sono specificati per ogni anta). La domanda è costituita dal JWD e dalla lista di groupId interessati. La risposta contiene una lisra di oggetti AreaProfiles. \ No newline at end of file diff --git a/Test.UI/Components/Pages/BaseEdit.razor.cs b/Test.UI/Components/Pages/BaseEdit.razor.cs index 1610892..96bd8e4 100644 --- a/Test.UI/Components/Pages/BaseEdit.razor.cs +++ b/Test.UI/Components/Pages/BaseEdit.razor.cs @@ -350,12 +350,12 @@ namespace Test.UI.Components.Pages private string currSvg = ""; private string GenericBasePath = ""; - private string colorMassUpdate; - private string familyHWMassUpdate; - private string glassMassUpdate; - private Hardware hardwareMassUpdate; - private string materialMassUpdate; - private string profileMassUpdate; + //private string colorMassUpdate; + //private string familyHWMassUpdate; + //private string glassMassUpdate; + //private Hardware hardwareMassUpdate; + //private string materialMassUpdate; + //private string profileMassUpdate; /// /// Semaforo x definire se sia già in modalità ionterattiva o di prerendering diff --git a/Test.UI/Components/Pages/EditJWD.razor.cs b/Test.UI/Components/Pages/EditJWD.razor.cs index 3741b33..86fc4a0 100644 --- a/Test.UI/Components/Pages/EditJWD.razor.cs +++ b/Test.UI/Components/Pages/EditJWD.razor.cs @@ -29,7 +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.PipeAreaProfile.EA_NewMessage -= PipeAreaProfile_EA_NewMessage; + DLService.PipeProfElement.EA_NewMessage -= PipeProfElement_EA_NewMessage; } #endregion Public Methods @@ -365,12 +365,12 @@ namespace Test.UI.Components.Pages private string currSvg = ""; private string GenericBasePath = ""; - private string colorMassUpdate; - private string familyHWMassUpdate; - private string glassMassUpdate; - private Hardware hardwareMassUpdate; - private string materialMassUpdate; - private string profileMassUpdate; + //private string colorMassUpdate; + //private string familyHWMassUpdate; + //private string glassMassUpdate; + //private Hardware hardwareMassUpdate; + //private string materialMassUpdate; + //private string profileMassUpdate; /// /// Semaforo x definire se sia già in modalità ionterattiva o di prerendering @@ -384,7 +384,7 @@ namespace Test.UI.Components.Pages private string channelHwOpt = ""; private string channelShape = ""; - private string channelElement = ""; + private string chProfElem = ""; private string channelSvg = ""; #endregion Private Fields @@ -509,14 +509,14 @@ namespace Test.UI.Components.Pages await Task.Delay(1); } - private async void PipeAreaProfile_EA_NewMessage(object? sender, EventArgs e) + private async void PipeProfElement_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}")) + if (currArgs.msgUid.StartsWith($"{chProfElem}:{windowUid}")) { // deserializzo il dizionario delle risposte... var rawDict = JsonConvert.DeserializeObject>(currArgs.newMessage); diff --git a/Test.UI/Components/Pages/Home.razor.cs b/Test.UI/Components/Pages/Home.razor.cs index 8229879..9efeaad 100644 --- a/Test.UI/Components/Pages/Home.razor.cs +++ b/Test.UI/Components/Pages/Home.razor.cs @@ -15,7 +15,7 @@ namespace Test.UI.Components.Pages { #region Public Properties - public Template SelTemplate { get; set; } = null; + public Template SelTemplate { get; set; } = new Template(0, "", "", "") ; #endregion Public Properties diff --git a/WebWindowComplex/Compo/CardFrame.razor b/WebWindowComplex/Compo/CardFrame.razor index f56bbb9..89ee7ca 100644 --- a/WebWindowComplex/Compo/CardFrame.razor +++ b/WebWindowComplex/Compo/CardFrame.razor @@ -52,7 +52,7 @@ @if (User) { Tipology - + } else diff --git a/WebWindowComplex/Compo/CardSashGroup.razor.cs b/WebWindowComplex/Compo/CardSashGroup.razor.cs index 4bf6f57..6848417 100644 --- a/WebWindowComplex/Compo/CardSashGroup.razor.cs +++ b/WebWindowComplex/Compo/CardSashGroup.razor.cs @@ -195,7 +195,7 @@ namespace WebWindowComplex.Compo protected async Task RemoveArea() { CurrSashGroup.Remove(); - FrameWindow.SetSelThresholdFromName(FrameWindow.ThresholdList.FirstOrDefault(x => x.Name != "Threshold").Name); + FrameWindow.SetSelThresholdFromName(FrameWindow.ThresholdList.FirstOrDefault(x => x.Name != "Threshold")?.Name); var args = new DataUpdateFrame() { currFrame = FrameWindow diff --git a/WebWindowComplex/Compo/CardSplit.razor.cs b/WebWindowComplex/Compo/CardSplit.razor.cs index 010c99e..f00e05d 100644 --- a/WebWindowComplex/Compo/CardSplit.razor.cs +++ b/WebWindowComplex/Compo/CardSplit.razor.cs @@ -204,7 +204,7 @@ namespace WebWindowComplex.Compo protected async Task UpdateDimension(DataUpdateSplitDimension updRec) { SplitDimension currSplitDim = updRec.currSplit; - SplitDimension currRec = null; + SplitDimension currRec = new SplitDimension(0, MeasureTypes.NULL, false, updRec.currSplit.Parent, false); // cerco il record if (currSplitDim.bIsVertListDim) currRec = CurrSplit.SplitVertList.ElementAt(updRec.index); @@ -233,7 +233,7 @@ namespace WebWindowComplex.Compo { foreach (Split s in SplitList) { - if (s.Equals(CurrSplit)) + if (s.Equals(CurrSplit) && e.Value != null) { s.SetSplitStartVert((bool)e.Value); } diff --git a/WebWindowComplex/Compo/EditElement.razor.cs b/WebWindowComplex/Compo/EditElement.razor.cs index 5d02e21..cd30edb 100644 --- a/WebWindowComplex/Compo/EditElement.razor.cs +++ b/WebWindowComplex/Compo/EditElement.razor.cs @@ -39,7 +39,7 @@ namespace WebWindowComplex.Compo if (CurrRec.ParentArea is Frame) nElement = ((Frame)CurrRec.ParentArea).ElementDimensionList.Count; else if(CurrRec.ParentArea is Sash) - nElement = ((Sash)CurrRec.ParentArea).SashList.FirstOrDefault().ElementDimensionList.Count; + nElement = ((Sash)CurrRec.ParentArea).SashList.FirstOrDefault()!.ElementDimensionList.Count; switch (nElement) { case 4: diff --git a/WebWindowComplex/Compo/EditOptionCombo.razor.cs b/WebWindowComplex/Compo/EditOptionCombo.razor.cs index 5809b31..bc64f3a 100644 --- a/WebWindowComplex/Compo/EditOptionCombo.razor.cs +++ b/WebWindowComplex/Compo/EditOptionCombo.razor.cs @@ -34,9 +34,9 @@ namespace WebWindowComplex.Compo get => CurrOpt.sValue.sValue; set { - if (CurrOpt.sValue.sValue != value) + if (CurrOpt.sValue.sValue != value && CurrOpt.ValueList.FirstOrDefault(x => x.sValue == value) != null) { - CurrOpt.sValue = CurrOpt.ValueList.FirstOrDefault(x => x.sValue == value); + CurrOpt.sValue = CurrOpt.ValueList.FirstOrDefault(x => x.sValue == value)!; _ = EC_Update.InvokeAsync(CurrOpt); } } diff --git a/WebWindowComplex/Compo/EditOptionText.razor.cs b/WebWindowComplex/Compo/EditOptionText.razor.cs index 52cfd38..ccd069e 100644 --- a/WebWindowComplex/Compo/EditOptionText.razor.cs +++ b/WebWindowComplex/Compo/EditOptionText.razor.cs @@ -38,8 +38,8 @@ namespace WebWindowComplex.Compo { if(CurrOpt.sName.Equals("HMan")) CurrOpt.sValue = value; - else - CurrOpt.sValue = CurrOpt.ValueList.FirstOrDefault(x => x == value); + else if (CurrOpt.ValueList.FirstOrDefault(x => x == value) != null) + CurrOpt.sValue = CurrOpt.ValueList.FirstOrDefault(x => x == value)!; _ = EC_Update.InvokeAsync(CurrOpt); } } diff --git a/WebWindowComplex/Json/JsonUtility.cs b/WebWindowComplex/Json/JsonUtility.cs index 48f4106..a2de8bb 100644 --- a/WebWindowComplex/Json/JsonUtility.cs +++ b/WebWindowComplex/Json/JsonUtility.cs @@ -100,7 +100,11 @@ namespace WebWindowComplex.Json sGlass = m_sGlass }; foreach (var Area in AreaList) - Window.AreaList.Add((Frame)Area.Deserialize(null, Window)); + { + JsonFrame jf = (JsonFrame)Area; + Frame frame = (Frame)jf.Deserialize(null, Window); + Window.AreaList.Add(frame ?? new(null, Window)); + } return Window; } } @@ -155,7 +159,7 @@ namespace WebWindowComplex.Json m_AreaType = AreaType; } - internal virtual Area? Deserialize(Area ParentArea, Window ParentWindow) + internal virtual Area? Deserialize(Area? ParentArea, Window ParentWindow) { return null; } @@ -281,7 +285,7 @@ namespace WebWindowComplex.Json base.GroupId = GroupId; } - internal override Area Deserialize(Area ParentArea, Window ParentWindow) + internal override Area Deserialize(Area? ParentArea, Window ParentWindow) { Frame newFrame = new Frame(null, ParentWindow); newFrame.SetGroupId(GroupId); @@ -1109,7 +1113,7 @@ namespace WebWindowComplex.Json var RawType = (string?)item["AreaType"]; AreaTypes Type = AreaTypes.NULL; Enum.TryParse(RawType, out Type); - JsonArea JsonArea = null; + JsonArea JsonArea = new JsonArea(AreaTypes.NULL); switch (Type) { case AreaTypes.FRAME: @@ -1143,12 +1147,8 @@ namespace WebWindowComplex.Json } } if (!Information.IsNothing(JsonArea)) - { - serializer.Populate(item.CreateReader(), JsonArea); - return JsonArea; - } - else - return null; + serializer.Populate(item.CreateReader(), JsonArea!); + return JsonArea!; } public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) diff --git a/WebWindowComplex/Models/AGBOptionText.cs b/WebWindowComplex/Models/AGBOptionText.cs index 85b7762..bcfbd30 100644 --- a/WebWindowComplex/Models/AGBOptionText.cs +++ b/WebWindowComplex/Models/AGBOptionText.cs @@ -54,9 +54,10 @@ namespace WebWindowComplex.Models { foreach (var Value in HdwOptionParam.Opzioni) m_ValueList.Add(Value.Valore); - m_sValue = m_ValueList.FirstOrDefault(x => x == HdwOptionParam.ValoreCorrente); + if(m_ValueList.FirstOrDefault(x => x == HdwOptionParam.ValoreCorrente) != null) + m_sValue = m_ValueList.FirstOrDefault(x => x == HdwOptionParam.ValoreCorrente)!; if (string.IsNullOrEmpty(m_sValue)) - m_sValue = m_ValueList.FirstOrDefault(); + m_sValue = m_ValueList.FirstOrDefault()!; } else { diff --git a/WebWindowComplex/Models/Area.cs b/WebWindowComplex/Models/Area.cs index 7e5220d..e01f3e4 100644 --- a/WebWindowComplex/Models/Area.cs +++ b/WebWindowComplex/Models/Area.cs @@ -470,72 +470,75 @@ namespace WebWindowComplex.Models /// public double CalculateWidthArea(Area area, double width) { - for (int i = 0; i < area.AreaList.Count; i++) + if(width > 0) { - double risultato = -1; - if (area.Equals(this)) - return width; - Area item = area.AreaList[i]; - if (area is Split) + for (int i = 0; i < area.AreaList.Count; i++) { - Split split = (Split)area; - if (split.SplitVertList.Count > 0) + double risultato = -1; + if (area.Equals(this)) + return width; + Area item = area.AreaList[i]; + if (area is Split) { - switch (split.SplitVertList.ElementAt(i).SelMeasureType) + Split split = (Split)area; + if (split.SplitVertList.Count > 0) + { + switch (split.SplitVertList.ElementAt(i).SelMeasureType) + { + case MeasureTypes.ABSOLUTE: + { + risultato = CalculateWidthArea(item, split.SplitVertList.ElementAt(i).dDimension); + break; + } + case MeasureTypes.PROPORTIONAL: + { + risultato = CalculateWidthArea(item, ConvertFromPropVal(split.SplitVertList, split.SplitVertList.ElementAt(i).dDimension, MeasureTypes.ABSOLUTE, width)); + break; + } + case MeasureTypes.PERCENTAGE: + { + risultato = CalculateWidthArea(item, split.SplitVertList.ElementAt(i).dDimension * width / 100); + break; + } + } + } + else + { + risultato = CalculateWidthArea(item, width); + } + if (risultato != -1) + return risultato; + } + else if (area is Sash) + { + Sash sash = (Sash)area; + switch (sash.SashList.ElementAt(i).SelMeasureType) { case MeasureTypes.ABSOLUTE: { - risultato = CalculateWidthArea(item, split.SplitVertList.ElementAt(i).dDimension); + risultato = CalculateWidthArea(item, sash.SashList.ElementAt(i).dDimension); break; } case MeasureTypes.PROPORTIONAL: { - risultato = CalculateWidthArea(item, ConvertFromPropVal(split.SplitVertList, split.SplitVertList.ElementAt(i).dDimension, MeasureTypes.ABSOLUTE, width)); + risultato = CalculateWidthArea(item, ConvertFromPropVal(sash, sash.SashList.ElementAt(i).dDimension, MeasureTypes.ABSOLUTE, width)); break; } case MeasureTypes.PERCENTAGE: { - risultato = CalculateWidthArea(item, split.SplitVertList.ElementAt(i).dDimension * width / 100); + risultato = CalculateWidthArea(item, sash.SashList.ElementAt(i).dDimension * width / 100); break; } } + if (risultato != -1) + return risultato; } else { risultato = CalculateWidthArea(item, width); + if (risultato != -1) + return risultato; } - if (risultato != -1) - return risultato; - } - else if (area is Sash) - { - Sash sash = (Sash)area; - switch (sash.SashList.ElementAt(i).SelMeasureType) - { - case MeasureTypes.ABSOLUTE: - { - risultato = CalculateWidthArea(item, sash.SashList.ElementAt(i).dDimension); - break; - } - case MeasureTypes.PROPORTIONAL: - { - risultato = CalculateWidthArea(item, ConvertFromPropVal(sash, sash.SashList.ElementAt(i).dDimension, MeasureTypes.ABSOLUTE, width)); - break; - } - case MeasureTypes.PERCENTAGE: - { - risultato = CalculateWidthArea(item, sash.SashList.ElementAt(i).dDimension * width / 100); - break; - } - } - if (risultato != -1) - return risultato; - } - else - { - risultato = CalculateWidthArea(item, width); - if (risultato != -1) - return risultato; } } return width; diff --git a/WebWindowComplex/Models/ElementDimension.cs b/WebWindowComplex/Models/ElementDimension.cs index 29e93cc..a42f9e1 100644 --- a/WebWindowComplex/Models/ElementDimension.cs +++ b/WebWindowComplex/Models/ElementDimension.cs @@ -136,7 +136,7 @@ namespace WebWindowComplex.Models private int m_nIndex; - private string m_sName; + private string m_sName = ""; private double m_dMin; diff --git a/WebWindowComplex/Models/Frame.cs b/WebWindowComplex/Models/Frame.cs index 95685ac..52fbd36 100644 --- a/WebWindowComplex/Models/Frame.cs +++ b/WebWindowComplex/Models/Frame.cs @@ -21,7 +21,7 @@ namespace WebWindowComplex.Models #region Public Constructors - public Frame(Area ParentArea, Window ParentWindow) : base(ParentArea, ParentWindow) + public Frame(Area? ParentArea, Window ParentWindow) : base(ParentArea, ParentWindow) { } @@ -443,7 +443,7 @@ namespace WebWindowComplex.Models public override Frame Copy(Area ParentArea) { - return null; + return new Frame(null, ParentWindow); } #endregion Public Methods @@ -465,7 +465,7 @@ namespace WebWindowComplex.Models newFrame.RefreshThresholdList(); if (m_AllThresholdList != null && m_AllThresholdList.Any()) { - newFrame.SetSelThresholdFromName(m_AllThresholdList.FirstOrDefault().Name ?? ""); + newFrame.SetSelThresholdFromName(m_AllThresholdList.FirstOrDefault()?.Name ?? ""); } //newFrame.FrameArcElem = null; return newFrame; @@ -679,12 +679,16 @@ namespace WebWindowComplex.Models /// internal double AvailArea() { - // larghezza - elementDim(1) - elementDim(last) + overlapDd + overlapSx - return DimensionList.FirstOrDefault(x => x.sName.Equals("Width")).dDimension - - ElementDimensionList.ElementAt(1).dDimension - - ElementDimensionList.Last().dDimension + - ElementDimensionList.ElementAt(1).dOverlap + - ElementDimensionList.Last().dOverlap; + if(DimensionList.Count> 0 && DimensionList.FirstOrDefault(x => x.sName.Equals("Width")) != null) + { + // larghezza - elementDim(1) - elementDim(last) + overlapDd + overlapSx + return DimensionList.FirstOrDefault(x => x.sName.Equals("Width"))!.dDimension - + ElementDimensionList.ElementAt(1).dDimension - + ElementDimensionList.Last().dDimension + + ElementDimensionList.ElementAt(1).dOverlap + + ElementDimensionList.Last().dOverlap; + } + return -1; //switch (m_Shape) //{ // case Shapes.RECTANGLE: @@ -742,7 +746,7 @@ namespace WebWindowComplex.Models private bool m_bBottomRail; - private Threshold m_SelThreshold; + private Threshold m_SelThreshold = new Threshold(1, ""); private List m_ThresholdList = new List(); diff --git a/WebWindowComplex/Models/FrameArcElement.cs b/WebWindowComplex/Models/FrameArcElement.cs index 6202099..c8e5dd9 100644 --- a/WebWindowComplex/Models/FrameArcElement.cs +++ b/WebWindowComplex/Models/FrameArcElement.cs @@ -14,8 +14,6 @@ namespace WebWindowComplex.Models { #region Public Constructors - public FrameArcElement() { } - public FrameArcElement(Area ParentArea, Window ParentWindow, double nSection, bool bCutEdge, bool bIsAlign) { m_ParentArea = ParentArea; diff --git a/WebWindowComplex/Models/Sash.cs b/WebWindowComplex/Models/Sash.cs index c08b2e5..f550ed6 100644 --- a/WebWindowComplex/Models/Sash.cs +++ b/WebWindowComplex/Models/Sash.cs @@ -276,7 +276,7 @@ namespace WebWindowComplex.Models if (value > 0) { double dLastDimension = 0; - SashDimension itemDelete = null; + SashDimension itemDelete = new SashDimension(0, MeasureTypes.NULL, this, 0); double deleteDim; for (var SplitIndex = m_SashList.Count - 1; SplitIndex >= value; SplitIndex += -1) { @@ -476,7 +476,7 @@ namespace WebWindowComplex.Models { get { - return m_SelHardware; + return m_SelHardware!; } set { @@ -492,7 +492,7 @@ namespace WebWindowComplex.Models { get { - return m_SelHardware.Id; + return m_SelHardware!.Id; } set { @@ -570,7 +570,7 @@ namespace WebWindowComplex.Models Area newArea = item.Copy(newSash); newSash.AreaList.Add(newArea); } - newSash.SetSelFamilyHardwareFromIndex(m_SelHardware.Id); + newSash.SetSelFamilyHardwareFromIndex(m_SelHardware!.Id); newSash.SetSelHardwareFromId(CustomHwId); //if (ParentWindow.AreaList.First().SelShapeIndex == (int)Shapes.ARC || // ParentWindow.AreaList.First().SelShapeIndex == (int)Shapes.DOUBLEARC || @@ -592,7 +592,7 @@ namespace WebWindowComplex.Models m_HardwareList.Clear(); Enums.OpeningTypes sOpeningType = ConvertOpeningType(); if (string.IsNullOrEmpty(m_SelFamilyHardware)) - m_SelFamilyHardware = s_FamilyHardwareList.FirstOrDefault(); + m_SelFamilyHardware = s_FamilyHardwareList.FirstOrDefault() ?? ""; int sashPosition = 1; if (nSashQty > 2 && !(SashList.First().bHasHandle || SashList.Last().bHasHandle)) sashPosition = 2; @@ -610,6 +610,7 @@ namespace WebWindowComplex.Models if(rawList.Count == 0 || rawList == null) { Hardware hw = new Hardware(CustomHwId, m_SelFamilyHardware, "Custom", sOpeningType, m_CurrShape, nSashQty, 1); + rawList = new List(); rawList.Add(hw); } m_HardwareList = new List(rawList); @@ -672,7 +673,7 @@ namespace WebWindowComplex.Models { RefreshHardwareList(); // se il vecchio hw selezionato non va più bene viene selezionato il primo della lista - if (!HardwareList.Contains(m_SelHardware) || m_SelHardware.Shape != m_CurrShape) + if (!HardwareList.Contains(m_SelHardware!) || m_SelHardware!.Shape != m_CurrShape) { SetFirstHardware(); ClearHardwareOptionList(); @@ -796,7 +797,7 @@ namespace WebWindowComplex.Models { if (nCounterGroup < GroupId) Area.nCounterGroup = GroupId; - string currHwId = hideHw ? CustomHwId : m_SelHardware.Id; + string currHwId = hideHw ? CustomHwId : m_SelHardware!.Id; JsonSash JsonSash = new JsonSash(m_bIsSashVertical, m_SashType, m_bSashBottomRail, m_nSashBottomRailQty, currHwId, GroupId); foreach (var SashDimension in SashList) JsonSash.SashList.Add(SashDimension.Serialize()); @@ -854,11 +855,11 @@ namespace WebWindowComplex.Models { if (!string.IsNullOrEmpty(OptionXml)) { - ParametriOpzioni HwOptions = null; + ParametriOpzioni HwOptions = new ParametriOpzioni(); XmlSerializer serializer = new XmlSerializer(typeof(ParametriOpzioni)); StringReader reader = new StringReader(OptionXml); HwOptions = (ParametriOpzioni)serializer.Deserialize(reader); - if (HwOptions.Items != null) + if (HwOptions!.Items != null) { m_HwOptionList.Clear(); foreach (var HwOption in HwOptions.Items) @@ -1031,7 +1032,7 @@ namespace WebWindowComplex.Models private List m_SashList = new List(); private SashTypes m_SashType; private string m_SelFamilyHardware = ""; - private Hardware m_SelHardware; + private Hardware? m_SelHardware = null; private OrientationSash m_SelOrientationSashType; //private SashArcElement m_SashArcElement; diff --git a/WebWindowComplex/Models/SashArcElement.cs b/WebWindowComplex/Models/SashArcElement.cs index 175524d..7284e0c 100644 --- a/WebWindowComplex/Models/SashArcElement.cs +++ b/WebWindowComplex/Models/SashArcElement.cs @@ -14,8 +14,6 @@ namespace WebWindowComplex.Models { #region Public Constructors - public SashArcElement() { } - public SashArcElement(Area ParentArea, Window ParentWindow, double nSection, bool bCutEdge) { m_ParentArea = ParentArea; diff --git a/WebWindowComplex/Models/SashDimension.cs b/WebWindowComplex/Models/SashDimension.cs index c708f3e..a0209eb 100644 --- a/WebWindowComplex/Models/SashDimension.cs +++ b/WebWindowComplex/Models/SashDimension.cs @@ -149,168 +149,171 @@ namespace WebWindowComplex.Models } set { - double widthTot = CalculateWidthSashGroup(m_Parent.ParentWindow.AreaList.FirstOrDefault(), m_Parent.ParentWindow.AreaList.FirstOrDefault().DimensionList.Where(x => x.sName == "Width").First().dDimension); - //double widthTot = ((Frame)m_Parent.ParentArea).AvailArea(); - double valMinAbsolute = 100; - double valMaxAbsolute = widthTot - valMinAbsolute * (m_Parent.SashList.Count - 1); - bool valueAccept = false; - switch (MeasureType) + if(m_Parent.ParentWindow.AreaList.FirstOrDefault() != null) { - case MeasureTypes.ABSOLUTE: - { - valueAccept = (value < valMaxAbsolute && value > valMinAbsolute) ? true : false; - break; - } - case MeasureTypes.PROPORTIONAL: - { - valMaxAbsolute = 20; - valueAccept = (value >= 1) ? true : false; - break; - } - case MeasureTypes.PERCENTAGE: - { - valMaxAbsolute = valMaxAbsolute / widthTot * 100; - valMinAbsolute = valMinAbsolute / widthTot * 100; - valueAccept = (value < valMaxAbsolute && value > valMinAbsolute) ? true : false; - break; - } - } - if (valueAccept) - { - List dimensions = m_Parent.SashList; - List absoluteValList = new List(); - AreaDimension ad = new AreaDimension(m_dDimension, SelMeasureType); - List adList = new List(); - foreach (var it in m_Parent.SashList) + double widthTot = CalculateWidthSashGroup(m_Parent.ParentWindow.AreaList.FirstOrDefault()!, m_Parent.ParentWindow.AreaList.FirstOrDefault()!.DimensionList.Where(x => x.sName == "Width").First().dDimension); + //double widthTot = ((Frame)m_Parent.ParentArea).AvailArea(); + double valMinAbsolute = 100; + double valMaxAbsolute = widthTot - valMinAbsolute * (m_Parent.SashList.Count - 1); + bool valueAccept = false; + switch (MeasureType) { - adList.Add(new AreaDimension(it.m_dDimension, it.SelMeasureType)); + case MeasureTypes.ABSOLUTE: + { + valueAccept = (value < valMaxAbsolute && value > valMinAbsolute) ? true : false; + break; + } + case MeasureTypes.PROPORTIONAL: + { + valMaxAbsolute = 20; + valueAccept = (value >= 1) ? true : false; + break; + } + case MeasureTypes.PERCENTAGE: + { + valMaxAbsolute = valMaxAbsolute / widthTot * 100; + valMinAbsolute = valMinAbsolute / widthTot * 100; + valueAccept = (value < valMaxAbsolute && value > valMinAbsolute) ? true : false; + break; + } } - int index = 0; - foreach (var item in m_Parent.SashList) + if (valueAccept) { - absoluteValList.Add(adList.ElementAt(index).CalculateAbsoluteValue(adList, widthTot)); - index++; - } - int nIndex = dimensions.IndexOf(this); - int proportionalCount = dimensions.Where(x => x.MeasureType.Equals(MeasureTypes.PROPORTIONAL)).ToList().Count; - int percentageCount = dimensions.Where(x => x.MeasureType.Equals(MeasureTypes.PERCENTAGE)).ToList().Count; - // Le dimensioni sono solo in proporzionale - if (proportionalCount == absoluteValList.Count || SelMeasureType.Equals(MeasureTypes.PROPORTIONAL) || - (SelMeasureType.Equals(MeasureTypes.ABSOLUTE) && proportionalCount == absoluteValList.Count -1)) - { - m_dDimension = value; - } - // Le dimensioni sono solo in percentuale - else if (percentageCount == dimensions.Count) - { - if (value < m_dDimension) + List dimensions = m_Parent.SashList; + List absoluteValList = new List(); + AreaDimension ad = new AreaDimension(m_dDimension, SelMeasureType); + List adList = new List(); + foreach (var it in m_Parent.SashList) { - // L'anta modificata non è l'ultima - if (nIndex < dimensions.Count - 1) - dimensions[nIndex + 1].SetDimension(dimensions[nIndex + 1].m_dDimension + (m_dDimension - value)); - else if (dimensions.Count > 1) - dimensions[nIndex - 1].SetDimension(dimensions[nIndex - 1].m_dDimension + (m_dDimension - value)); - else - { - m_dDimension = 100; - return; - } + adList.Add(new AreaDimension(it.m_dDimension, it.SelMeasureType)); } - else + int index = 0; + foreach (var item in m_Parent.SashList) { - double dRes = value; - // se non ultima anta - if (nIndex < dimensions.Count - 1) - { - for (var nInd = 0; nInd <= nIndex - 1; nInd++) - dRes += dimensions[nInd].m_dDimension; - dRes = (100 - dRes) / (dimensions.Count - nIndex - 1); - for (var Ind = nIndex + 1; Ind <= dimensions.Count - 1; Ind++) - dimensions[Ind].SetDimension(dRes); - } - // se ultima anta - else if (dimensions.Count > 1) - { - if (dimensions.Count > 2) - { - for (var Ind = 0; Ind <= nIndex - 2; Ind++) - dRes += dimensions[Ind].m_dDimension; - } - dRes = (100 - dRes); - dimensions[nIndex - 1].SetDimension(dRes); - } - else - { - m_dDimension = 100; - return; - } + absoluteValList.Add(adList.ElementAt(index).CalculateAbsoluteValue(adList, widthTot)); + index++; } - m_dDimension = value; - } - // Le dimensioni sono miste o solo in assoluto - else - { - double valueInAbsolute = 0; - switch (MeasureType) + int nIndex = dimensions.IndexOf(this); + int proportionalCount = dimensions.Where(x => x.MeasureType.Equals(MeasureTypes.PROPORTIONAL)).ToList().Count; + int percentageCount = dimensions.Where(x => x.MeasureType.Equals(MeasureTypes.PERCENTAGE)).ToList().Count; + // Le dimensioni sono solo in proporzionale + if (proportionalCount == absoluteValList.Count || SelMeasureType.Equals(MeasureTypes.PROPORTIONAL) || + (SelMeasureType.Equals(MeasureTypes.ABSOLUTE) && proportionalCount == absoluteValList.Count -1)) { - case MeasureTypes.ABSOLUTE: - { - valueInAbsolute = value; - break; - } - case MeasureTypes.PROPORTIONAL: - { - var pesi = value + dimensions.Where(x => x.MeasureType.Equals(MeasureTypes.PROPORTIONAL) && !x.Equals(this)) - .Sum(x => x.m_dDimension); - valueInAbsolute = widthTot / pesi * value; - break; - } - case MeasureTypes.PERCENTAGE: - { - valueInAbsolute = (value / 100) * widthTot; - break; - } - } - if (value < m_dDimension) - { - // L'anta modificata non è l'ultima - if (nIndex < absoluteValList.Count - 1) - { - absoluteValList[nIndex + 1] = absoluteValList[nIndex + 1] + (absoluteValList[nIndex] - valueInAbsolute); - absoluteValList[nIndex] = valueInAbsolute; - } - // L'anta modificata è l'ultima - else if (dimensions.Count > 1) - { - absoluteValList[nIndex - 1] = absoluteValList[nIndex - 1] + (absoluteValList[nIndex] - valueInAbsolute); - absoluteValList[nIndex] = valueInAbsolute; - } - } - else - { - // L'anta modificata non è l'ultima - if (nIndex < absoluteValList.Count - 1) - { - absoluteValList[nIndex + 1] = absoluteValList[nIndex + 1] - (valueInAbsolute - absoluteValList[nIndex]); - absoluteValList[nIndex] = valueInAbsolute; - } - // L'anta modificata è l'ultima - else if (dimensions.Count > 1) - { - absoluteValList[nIndex - 1] = absoluteValList[nIndex - 1] - (valueInAbsolute - absoluteValList[nIndex]); - absoluteValList[nIndex] = valueInAbsolute; - } - } - if (MeasureType.Equals(MeasureTypes.PROPORTIONAL)) m_dDimension = value; - for (int i = 0; i < absoluteValList.Count; i++) - { - var item = m_Parent.SashList.ElementAt(i); - item.SetDimension(ad.ConvertIn(adList, absoluteValList[i], (MeasureTypes)item.SelMeasureTypeIndex, widthTot)); } + // Le dimensioni sono solo in percentuale + else if (percentageCount == dimensions.Count) + { + if (value < m_dDimension) + { + // L'anta modificata non è l'ultima + if (nIndex < dimensions.Count - 1) + dimensions[nIndex + 1].SetDimension(dimensions[nIndex + 1].m_dDimension + (m_dDimension - value)); + else if (dimensions.Count > 1) + dimensions[nIndex - 1].SetDimension(dimensions[nIndex - 1].m_dDimension + (m_dDimension - value)); + else + { + m_dDimension = 100; + return; + } + } + else + { + double dRes = value; + // se non ultima anta + if (nIndex < dimensions.Count - 1) + { + for (var nInd = 0; nInd <= nIndex - 1; nInd++) + dRes += dimensions[nInd].m_dDimension; + dRes = (100 - dRes) / (dimensions.Count - nIndex - 1); + for (var Ind = nIndex + 1; Ind <= dimensions.Count - 1; Ind++) + dimensions[Ind].SetDimension(dRes); + } + // se ultima anta + else if (dimensions.Count > 1) + { + if (dimensions.Count > 2) + { + for (var Ind = 0; Ind <= nIndex - 2; Ind++) + dRes += dimensions[Ind].m_dDimension; + } + dRes = (100 - dRes); + dimensions[nIndex - 1].SetDimension(dRes); + } + else + { + m_dDimension = 100; + return; + } + } + m_dDimension = value; + } + // Le dimensioni sono miste o solo in assoluto + else + { + double valueInAbsolute = 0; + switch (MeasureType) + { + case MeasureTypes.ABSOLUTE: + { + valueInAbsolute = value; + break; + } + case MeasureTypes.PROPORTIONAL: + { + var pesi = value + dimensions.Where(x => x.MeasureType.Equals(MeasureTypes.PROPORTIONAL) && !x.Equals(this)) + .Sum(x => x.m_dDimension); + valueInAbsolute = widthTot / pesi * value; + break; + } + case MeasureTypes.PERCENTAGE: + { + valueInAbsolute = (value / 100) * widthTot; + break; + } + } + if (value < m_dDimension) + { + // L'anta modificata non è l'ultima + if (nIndex < absoluteValList.Count - 1) + { + absoluteValList[nIndex + 1] = absoluteValList[nIndex + 1] + (absoluteValList[nIndex] - valueInAbsolute); + absoluteValList[nIndex] = valueInAbsolute; + } + // L'anta modificata è l'ultima + else if (dimensions.Count > 1) + { + absoluteValList[nIndex - 1] = absoluteValList[nIndex - 1] + (absoluteValList[nIndex] - valueInAbsolute); + absoluteValList[nIndex] = valueInAbsolute; + } + } + else + { + // L'anta modificata non è l'ultima + if (nIndex < absoluteValList.Count - 1) + { + absoluteValList[nIndex + 1] = absoluteValList[nIndex + 1] - (valueInAbsolute - absoluteValList[nIndex]); + absoluteValList[nIndex] = valueInAbsolute; + } + // L'anta modificata è l'ultima + else if (dimensions.Count > 1) + { + absoluteValList[nIndex - 1] = absoluteValList[nIndex - 1] - (valueInAbsolute - absoluteValList[nIndex]); + absoluteValList[nIndex] = valueInAbsolute; + } + } + if (MeasureType.Equals(MeasureTypes.PROPORTIONAL)) + m_dDimension = value; + for (int i = 0; i < absoluteValList.Count; i++) + { + var item = m_Parent.SashList.ElementAt(i); + item.SetDimension(ad.ConvertIn(adList, absoluteValList[i], (MeasureTypes)item.SelMeasureTypeIndex, widthTot)); + } + } + foreach(var item in m_Parent.AreaList) + item.SearchAreaList(item, dDimension, "Width"); } - foreach(var item in m_Parent.AreaList) - item.SearchAreaList(item, dDimension, "Width"); } } } @@ -405,16 +408,18 @@ namespace WebWindowComplex.Models if(SelMeasureType != (MeasureTypes)value) { MeasureTypes newType = (MeasureTypes)value; - double widthTot = CalculateWidthSashGroup(m_Parent.ParentWindow.AreaList.FirstOrDefault(), m_Parent.ParentWindow.AreaList.FirstOrDefault().DimensionList.Where(x => x.sName == "Width").First().dDimension); - AreaDimension ad = new AreaDimension(m_dDimension, SelMeasureType); - List adList = new List(); - foreach (var it in m_Parent.SashList) + if (m_Parent.ParentWindow.AreaList.FirstOrDefault() != null) { - adList.Add(new AreaDimension(it.m_dDimension, it.SelMeasureType)); + double widthTot = CalculateWidthSashGroup(m_Parent.ParentWindow.AreaList.FirstOrDefault()!, m_Parent.ParentWindow.AreaList.FirstOrDefault()!.DimensionList.Where(x => x.sName == "Width").First().dDimension); + AreaDimension ad = new AreaDimension(m_dDimension, SelMeasureType); + List adList = new List(); + foreach (var it in m_Parent.SashList) + { + adList.Add(new AreaDimension(it.m_dDimension, it.SelMeasureType)); + } + m_dDimension = ad.ConvertDimension(adList, SelMeasureType, newType, widthTot, nSashId-1); + SelMeasureType = (MeasureTypes)value; } - m_dDimension = ad.ConvertDimension(adList, SelMeasureType, newType, widthTot, nSashId-1); - //m_dDimension = Convert.ConvertDimension(this, m_SelMeasureType, newType, m_dDimension, widthTot); - SelMeasureType = (MeasureTypes)value; } } } @@ -458,6 +463,8 @@ namespace WebWindowComplex.Models /// internal double CalculateWidthSashGroup(Area area, double width) { + if (width < 1) + return width; for(int i = 0; i < area.AreaList.Count; i++) { double risultato = -1; @@ -577,20 +584,23 @@ namespace WebWindowComplex.Models if (SelMeasureType != (MeasureTypes)value) { MeasureTypes newType = (MeasureTypes)value; - double widthTot = CalculateWidthSashGroup(m_Parent.ParentWindow.AreaList.FirstOrDefault(), m_Parent.ParentWindow.AreaList.FirstOrDefault().DimensionList.Where(x => x.sName == "Width").First().dDimension); - AreaDimension ad = new AreaDimension(dDimension, SelMeasureType); - List newDimensions = new List(); - foreach(var item in m_Parent.SashList) + if(m_Parent.ParentWindow.AreaList.FirstOrDefault() != null) { - newDimensions.Add(new AreaDimension(item.dDimension, item.SelMeasureType)); + double widthTot = CalculateWidthSashGroup(m_Parent.ParentWindow.AreaList.FirstOrDefault()!, m_Parent.ParentWindow.AreaList.FirstOrDefault()!.DimensionList.Where(x => x.sName == "Width").First().dDimension); + AreaDimension ad = new AreaDimension(dDimension, SelMeasureType); + List newDimensions = new List(); + foreach(var item in m_Parent.SashList) + { + newDimensions.Add(new AreaDimension(item.dDimension, item.SelMeasureType)); + } + m_dDimension = ad.ConvertDimension(newDimensions, SelMeasureType, newType, widthTot, indexSash); + if(newType is MeasureTypes.PROPORTIONAL) + { + for (int i = 0; i < newDimensions.Count; i++) + m_Parent.SashList.ElementAt(i).SetDimension(newDimensions.ElementAt(i).dDimension); + } + SelMeasureType = (MeasureTypes)value; } - m_dDimension = ad.ConvertDimension(newDimensions, SelMeasureType, newType, widthTot, indexSash); - if(newType is MeasureTypes.PROPORTIONAL) - { - for (int i = 0; i < newDimensions.Count; i++) - m_Parent.SashList.ElementAt(i).SetDimension(newDimensions.ElementAt(i).dDimension); - } - SelMeasureType = (MeasureTypes)value; } } diff --git a/WebWindowComplex/Models/Split.cs b/WebWindowComplex/Models/Split.cs index d5b4140..d77a156 100644 --- a/WebWindowComplex/Models/Split.cs +++ b/WebWindowComplex/Models/Split.cs @@ -152,81 +152,84 @@ namespace WebWindowComplex.Models } else { - double widthTot = CalculateWidthArea(ParentWindow.AreaList.First(), ParentWindow.AreaList.FirstOrDefault().DimensionList.Where(x => x.sName == "Width").First().dDimension); - // Ricalcolo dimensioni aggiungendo split - if (value > m_SplitVertList.Count - 1) + if(ParentWindow.AreaList.FirstOrDefault() != null) { - // recupero larghezza ultimo - double dLastDimension = widthTot; - double dNewDimension = widthTot; - if (m_SplitVertList.Count > 0) + double widthTot = CalculateWidthArea(ParentWindow.AreaList.First(), ParentWindow.AreaList.FirstOrDefault()!.DimensionList.Where(x => x.sName == "Width").First().dDimension); + // Ricalcolo dimensioni aggiungendo split + if (value > m_SplitVertList.Count - 1) { - dLastDimension = m_SplitVertList[m_SplitVertList.Count - 1].dDimension; - dNewDimension = dLastDimension / (value + 1 - nSplitQtyVert); - if (m_SplitVertList[m_SplitVertList.Count - 1].MeasureType.Equals(MeasureTypes.PROPORTIONAL)) - dNewDimension = 1; - m_SplitVertList[m_SplitVertList.Count - 1].SetDimension(dNewDimension); - } - else - dNewDimension = dLastDimension / (value + 1 - nSplitQtyVert); - // aggiungo area Split di default - for (var SplitIndex = m_SplitVertList.Count; SplitIndex <= value; SplitIndex++) - m_SplitVertList.Add(new SplitDimension(dNewDimension, m_SplitVertList[m_SplitVertList.Count - 1].MeasureType, true, this, true)); - } - else if (value == 0) - { - m_SplitVertList.RemoveAt(1); - m_SplitVertList.RemoveAt(0); - } - // Ricalcolo dimensioni rimuovendo split - else - { - int countProportional = m_SplitVertList.Count(x => x.MeasureType.Equals(MeasureTypes.PROPORTIONAL)); - if(m_SplitVertList.Last().MeasureType.Equals(MeasureTypes.PROPORTIONAL) && countProportional - 1 == 1) - { - m_SplitVertList.RemoveAt(m_SplitVertList.Count() - 1); - m_SplitVertList.Where(x => x.MeasureType.Equals(MeasureTypes.PROPORTIONAL)).FirstOrDefault().SetDimension(1); - } - else - { - double dLastDimension = 0; - for (var SplitIndex = m_SplitVertList.Count - 1; SplitIndex >= value + 1; SplitIndex += -1) + // recupero larghezza ultimo + double dLastDimension = widthTot; + double dNewDimension = widthTot; + if (m_SplitVertList.Count > 0) { - dLastDimension += m_SplitVertList[SplitIndex].dDimension; - m_SplitVertList.RemoveAt(SplitIndex); + dLastDimension = m_SplitVertList[m_SplitVertList.Count - 1].dDimension; + dNewDimension = dLastDimension / (value + 1 - nSplitQtyVert); + if (m_SplitVertList[m_SplitVertList.Count - 1].MeasureType.Equals(MeasureTypes.PROPORTIONAL)) + dNewDimension = 1; + m_SplitVertList[m_SplitVertList.Count - 1].SetDimension(dNewDimension); } - dLastDimension += m_SplitVertList[m_SplitVertList.Count - 1].dDimension; - m_SplitVertList[m_SplitVertList.Count - 1].SetDimension(dLastDimension); + else + dNewDimension = dLastDimension / (value + 1 - nSplitQtyVert); + // aggiungo area Split di default + for (var SplitIndex = m_SplitVertList.Count; SplitIndex <= value; SplitIndex++) + m_SplitVertList.Add(new SplitDimension(dNewDimension, m_SplitVertList[m_SplitVertList.Count - 1].MeasureType, true, this, true)); } - ElemDimVertList.RemoveAt(ElemDimVertList.Count - 1); - - } - // Controllo quanti split orizzontali ci sono - int nHoriz = m_SplitHorizList.Count > 0 ? m_SplitHorizList.Count : 1; - // Se aggiungo split devo aggiungere vetro nell'area splitted aggiunta - for (var SplitIndex = AreaList.Count; SplitIndex <= (m_SplitVertList.Count * nHoriz) - 1; SplitIndex++) - { - AreaList.Add(Splitted.CreateSplitted(this)); - Fill newFill = Fill.CreateFill(AreaList[SplitIndex], FillTypes.GLASS); - newFill.SetAreaType(AreaTypes.FILL); - AreaList[AreaList.Count - 1].AreaList.Add(newFill); - } - // Se ho più di uno split, elimino l'ultimo - if (AreaList.Count > 2) - { - int nAreaList = AreaList.Count - 1; - for (var SplitIndex = (m_SplitVertList.Count * nHoriz); SplitIndex <= nAreaList; SplitIndex++) + else if (value == 0) { - AreaList.Remove(AreaList[AreaList.Count - 1]); + m_SplitVertList.RemoveAt(1); + m_SplitVertList.RemoveAt(0); + } + // Ricalcolo dimensioni rimuovendo split + else + { + int countProportional = m_SplitVertList.Count(x => x.MeasureType.Equals(MeasureTypes.PROPORTIONAL)); + if(m_SplitVertList.Last().MeasureType.Equals(MeasureTypes.PROPORTIONAL) && countProportional - 1 == 1) + { + m_SplitVertList.RemoveAt(m_SplitVertList.Count() - 1); + m_SplitVertList.Where(x => x.MeasureType.Equals(MeasureTypes.PROPORTIONAL)).FirstOrDefault()?.SetDimension(1); + } + else + { + double dLastDimension = 0; + for (var SplitIndex = m_SplitVertList.Count - 1; SplitIndex >= value + 1; SplitIndex += -1) + { + dLastDimension += m_SplitVertList[SplitIndex].dDimension; + m_SplitVertList.RemoveAt(SplitIndex); + } + dLastDimension += m_SplitVertList[m_SplitVertList.Count - 1].dDimension; + m_SplitVertList[m_SplitVertList.Count - 1].SetDimension(dLastDimension); + } + ElemDimVertList.RemoveAt(ElemDimVertList.Count - 1); + + } + // Controllo quanti split orizzontali ci sono + int nHoriz = m_SplitHorizList.Count > 0 ? m_SplitHorizList.Count : 1; + // Se aggiungo split devo aggiungere vetro nell'area splitted aggiunta + for (var SplitIndex = AreaList.Count; SplitIndex <= (m_SplitVertList.Count * nHoriz) - 1; SplitIndex++) + { + AreaList.Add(Splitted.CreateSplitted(this)); + Fill newFill = Fill.CreateFill(AreaList[SplitIndex], FillTypes.GLASS); + newFill.SetAreaType(AreaTypes.FILL); + AreaList[AreaList.Count - 1].AreaList.Add(newFill); + } + // Se ho più di uno split, elimino l'ultimo + if (AreaList.Count > 2) + { + int nAreaList = AreaList.Count - 1; + for (var SplitIndex = (m_SplitVertList.Count * nHoriz); SplitIndex <= nAreaList; SplitIndex++) + { + AreaList.Remove(AreaList[AreaList.Count - 1]); + } + } + // Se elimino l'unico split presente + else + { + Splitted s = (Splitted)AreaList[0]; + s.SetParentArea(ParentArea); + ParentArea.AreaList.Add(s); + ParentArea.AreaList.Remove(this); } - } - // Se elimino l'unico split presente - else - { - Splitted s = (Splitted)AreaList[0]; - s.SetParentArea(ParentArea); - ParentArea.AreaList.Add(s); - ParentArea.AreaList.Remove(this); } } if(SplitHorizList.Count > 0) @@ -418,7 +421,7 @@ namespace WebWindowComplex.Models { foreach (var areaSplitted in AreaList) { - if (!(areaSplitted.AreaList.FirstOrDefault().AreaType is AreaTypes.SASH)) + if (!(areaSplitted.AreaList.FirstOrDefault()?.AreaType is AreaTypes.SASH)) return false; } return true; @@ -427,7 +430,7 @@ namespace WebWindowComplex.Models { foreach (var areaSplitted in AreaList) { - if (areaSplitted.AreaList.FirstOrDefault().AreaType is AreaTypes.SASH) + if (areaSplitted.AreaList.FirstOrDefault()?.AreaType is AreaTypes.SASH) return true; } return false; @@ -436,7 +439,7 @@ namespace WebWindowComplex.Models { foreach (var areaSplitted in AreaList) { - if (areaSplitted.AreaList.FirstOrDefault().AreaType is AreaTypes.SASH) + if (areaSplitted.AreaList.FirstOrDefault()?.AreaType is AreaTypes.SASH) return true; } return false; @@ -577,19 +580,19 @@ namespace WebWindowComplex.Models case (int)Shapes.TRIANGLE: case (int)Shapes.ARC_FULL: { - return ParentWindow.AreaList.FirstOrDefault().DimensionList.Where(x => x.sName == "Height").First().dDimension; + return ParentWindow.AreaList.FirstOrDefault()!.DimensionList.Where(x => x.sName == "Height").First().dDimension; } case (int)Shapes.RIGHTCHAMFER: { - return ParentWindow.AreaList.FirstOrDefault().DimensionList.Where(x => x.sName == "Left Height").First().dDimension; + return ParentWindow.AreaList.FirstOrDefault()!.DimensionList.Where(x => x.sName == "Left Height").First().dDimension; } case (int)Shapes.LEFTCHAMFER: { - return ParentWindow.AreaList.FirstOrDefault().DimensionList.Where(x => x.sName == "Right Height").First().dDimension; + return ParentWindow.AreaList.FirstOrDefault()!.DimensionList.Where(x => x.sName == "Right Height").First().dDimension; } default: { - return ParentWindow.AreaList.FirstOrDefault().DimensionList.Where(x => x.sName == "Full Height").First().dDimension; + return ParentWindow.AreaList.FirstOrDefault()!.DimensionList.Where(x => x.sName == "Full Height").First().dDimension; } } } @@ -598,7 +601,7 @@ namespace WebWindowComplex.Models #region Private Fields - private bool m_bIsPercentage = true; + //private bool m_bIsPercentage = true; private bool m_bSplitStartVert = true; private SplitShapes m_SelSplitShape; diff --git a/WebWindowComplex/Models/SplitDimension.cs b/WebWindowComplex/Models/SplitDimension.cs index f51736f..15e1c5a 100644 --- a/WebWindowComplex/Models/SplitDimension.cs +++ b/WebWindowComplex/Models/SplitDimension.cs @@ -50,8 +50,8 @@ namespace WebWindowComplex.Models set { double dimensionTot = 0; - List dimensions = null; - Frame frame = m_Parent.ParentWindow.AreaList.FirstOrDefault(); + List dimensions = new List(); + Frame frame = m_Parent.ParentWindow.AreaList.FirstOrDefault()?? new Frame(null, Parent.ParentWindow); if (bIsVertListDim) { dimensions = m_Parent.SplitVertList; @@ -252,27 +252,30 @@ namespace WebWindowComplex.Models if (m_SelMeasureType != (MeasureTypes)value) { MeasureTypes newType = (MeasureTypes)value; - List splitList = null; - Frame frame = m_Parent.ParentWindow.AreaList.FirstOrDefault(); - double tot = 0; - if (bIsVertListDim) + List splitList = new List(); + if(m_Parent.ParentWindow.AreaList.FirstOrDefault() != null) { - splitList = m_Parent.SplitVertList; - tot = CalculateWidthSplitGroup(frame, frame.DimensionList.Where(x => x.sName == "Width").First().dDimension, new AreaFound(-1, false)).m_Dimension; + Frame frame = m_Parent.ParentWindow.AreaList.FirstOrDefault()!; + double tot = 0; + if (bIsVertListDim) + { + splitList = m_Parent.SplitVertList; + tot = CalculateWidthSplitGroup(frame, frame.DimensionList.Where(x => x.sName == "Width").First().dDimension, new AreaFound(-1, false)).m_Dimension; + } + else + { + splitList = m_Parent.SplitHorizList; + tot = (CalculateHeightSplitGroup(frame, frame.HeightFrame(), new AreaFound(-1, false))).m_Dimension; + } + AreaDimension ad = new AreaDimension(dDimension, SelMeasureType); + List adList = new List(); + foreach (var it in splitList) + { + adList.Add(new AreaDimension(it.dDimension, it.SelMeasureType)); + } + m_dDimension = ad.ConvertDimension(adList, m_SelMeasureType, newType, tot, splitList.IndexOf(this)); + m_SelMeasureType = (MeasureTypes)value; } - else - { - splitList = m_Parent.SplitHorizList; - tot = (CalculateHeightSplitGroup(frame, frame.HeightFrame(), new AreaFound(-1, false))).m_Dimension; - } - AreaDimension ad = new AreaDimension(dDimension, SelMeasureType); - List adList = new List(); - foreach (var it in splitList) - { - adList.Add(new AreaDimension(it.dDimension, it.SelMeasureType)); - } - m_dDimension = ad.ConvertDimension(adList, m_SelMeasureType, newType, tot, splitList.IndexOf(this)); - m_SelMeasureType = (MeasureTypes)value; } } } @@ -490,45 +493,48 @@ namespace WebWindowComplex.Models if (m_SelMeasureType != (MeasureTypes)value) { MeasureTypes newType = (MeasureTypes)value; - Frame frame = m_Parent.ParentWindow.AreaList.FirstOrDefault(); - double dimSplitGroup = 0; - if (bIsVertListDim) + if(m_Parent.ParentWindow.AreaList.FirstOrDefault() != null) { - dimSplitGroup = (CalculateWidthSplitGroup(frame, frame.DimensionList.Where(x => x.sName == "Width").First().dDimension, new AreaFound(-1, false))).m_Dimension; - AreaDimension ad = new AreaDimension(dDimension, SelMeasureType); - List newDimensions = new List(); - foreach (var item in m_Parent.SplitVertList) + Frame frame = m_Parent.ParentWindow.AreaList.FirstOrDefault()!; + double dimSplitGroup = 0; + if (bIsVertListDim) { - newDimensions.Add(new AreaDimension(item.dDimension, item.SelMeasureType)); - } - m_dDimension = ad.ConvertDimension(newDimensions, m_SelMeasureType, newType, dimSplitGroup, m_Parent.SplitVertList.IndexOf(this)); - if (newType is MeasureTypes.PROPORTIONAL) - { - for (int i = 0; i < m_Parent.SplitVertList.Count; i++) + dimSplitGroup = (CalculateWidthSplitGroup(frame, frame.DimensionList.Where(x => x.sName == "Width").First().dDimension, new AreaFound(-1, false))).m_Dimension; + AreaDimension ad = new AreaDimension(dDimension, SelMeasureType); + List newDimensions = new List(); + foreach (var item in m_Parent.SplitVertList) { - m_Parent.SplitVertList.ElementAt(i).SetDimension(newDimensions.ElementAt(i).dDimension); + newDimensions.Add(new AreaDimension(item.dDimension, item.SelMeasureType)); } - } } - else - { - //tot = (CalculateHeightSplitGroup(m_Parent, HeightTot(), new AreaFound(-1, false))).m_Dimension; - dimSplitGroup = (CalculateHeightSplitGroup(frame, frame.HeightFrame(), new AreaFound(-1, false))).m_Dimension; - AreaDimension ad = new AreaDimension(dDimension, SelMeasureType); - List newDimensions = new List(); - foreach (var item in m_Parent.SplitHorizList) - { - newDimensions.Add(new AreaDimension(item.dDimension, item.SelMeasureType)); - } - m_dDimension = ad.ConvertDimension(newDimensions, m_SelMeasureType, newType, dimSplitGroup, m_Parent.SplitHorizList.IndexOf(this)); - if(newType is MeasureTypes.PROPORTIONAL) - { - for(int i = 0; i < m_Parent.SplitHorizList.Count; i++) + m_dDimension = ad.ConvertDimension(newDimensions, m_SelMeasureType, newType, dimSplitGroup, m_Parent.SplitVertList.IndexOf(this)); + if (newType is MeasureTypes.PROPORTIONAL) { - m_Parent.SplitHorizList.ElementAt(i).SetDimension(newDimensions.ElementAt(i).dDimension); + for (int i = 0; i < m_Parent.SplitVertList.Count; i++) + { + m_Parent.SplitVertList.ElementAt(i).SetDimension(newDimensions.ElementAt(i).dDimension); + } + } } + else + { + //tot = (CalculateHeightSplitGroup(m_Parent, HeightTot(), new AreaFound(-1, false))).m_Dimension; + dimSplitGroup = (CalculateHeightSplitGroup(frame, frame.HeightFrame(), new AreaFound(-1, false))).m_Dimension; + AreaDimension ad = new AreaDimension(dDimension, SelMeasureType); + List newDimensions = new List(); + foreach (var item in m_Parent.SplitHorizList) + { + newDimensions.Add(new AreaDimension(item.dDimension, item.SelMeasureType)); + } + m_dDimension = ad.ConvertDimension(newDimensions, m_SelMeasureType, newType, dimSplitGroup, m_Parent.SplitHorizList.IndexOf(this)); + if(newType is MeasureTypes.PROPORTIONAL) + { + for(int i = 0; i < m_Parent.SplitHorizList.Count; i++) + { + m_Parent.SplitHorizList.ElementAt(i).SetDimension(newDimensions.ElementAt(i).dDimension); + } } } + m_SelMeasureType = (MeasureTypes)value; } - m_SelMeasureType = (MeasureTypes)value; } } diff --git a/WebWindowComplex/Models/Window.cs b/WebWindowComplex/Models/Window.cs index d4a59cd..d77d8ab 100644 --- a/WebWindowComplex/Models/Window.cs +++ b/WebWindowComplex/Models/Window.cs @@ -143,10 +143,10 @@ namespace WebWindowComplex.Models #region Private Fields private List m_AreaList = new List(); - private string m_sColorMaterial; - private string m_sGlass; - private string m_sMaterial; - private string m_sProfilePath; + private string? m_sColorMaterial; + private string? m_sGlass; + private string? m_sMaterial; + private string? m_sProfilePath; #endregion Private Fields } diff --git a/WebWindowComplex/TableComp.razor.cs b/WebWindowComplex/TableComp.razor.cs index 26ad4d7..59cb6bc 100644 --- a/WebWindowComplex/TableComp.razor.cs +++ b/WebWindowComplex/TableComp.razor.cs @@ -622,7 +622,7 @@ namespace WebWindowComplex }; //FrameArcElement ae = new FrameArcElement(frame, window, 10, true, true); JsonWindow jsonWindow = new JsonWindow("Profilo78", "Pino", "Black", "Vetro BE 2S 4T/16/4T"); - JsonFrame jsonFrame = new JsonFrame(Shapes.RECTANGLE, null, false, 0, 1); + JsonFrame jsonFrame = new JsonFrame(Shapes.RECTANGLE, "Bottom", false, 0, 1); jsonWindow.AreaList.Add(jsonFrame); //jsonFrame.ArcElement = ae.Serialize(); foreach (var Dimension in DimensionList) @@ -764,7 +764,7 @@ namespace WebWindowComplex // Inserisco i profili ricevuti nei rispettivi Element foreach (var item in LiveData.ProfElementList) { - UpdateProfileElement(item.Profiles, item.GroupId, item.SashId); + UpdateProfileElement(item.Profiles, item.GroupId, item.SashId < 1 ? -1: item.SashId); } } } @@ -792,8 +792,8 @@ namespace WebWindowComplex { //Frame.m_AllThresholdList = ListPayload.Threshold; string profile = WindowFromJson.ProfilePath; - Window.m_ParameterList = ListPayload.ProfileList.FirstOrDefault(x => x.ProfileName.Equals(profile)).ParameterDict; - Frame.m_AllThresholdList = ListPayload.ProfileList.FirstOrDefault(x => x.ProfileName.Equals(profile)).ThresholdList; + Window.m_ParameterList = ListPayload.ProfileList?.FirstOrDefault(x => x.ProfileName.Equals(profile))?.ParameterDict ?? new(); + Frame.m_AllThresholdList = ListPayload.ProfileList?.FirstOrDefault(x => x.ProfileName.Equals(profile))?.ThresholdList ?? new(); Sash.m_HardwareCompleteList = ListPayload.Hardware; Sash.s_FamilyHardwareList = ListPayload.FamilyHardware; } @@ -1078,7 +1078,7 @@ namespace WebWindowComplex /// Area che si sta analizzando /// Id Area che si sta cercando /// - private Area SearchAreaFromGroupId(Area currentArea, int idSearch) + private Area? SearchAreaFromGroupId(Area currentArea, int idSearch) { if (currentArea.GroupId == idSearch) { @@ -1086,7 +1086,7 @@ namespace WebWindowComplex } foreach (Area child in currentArea.AreaList) { - Area found = SearchAreaFromGroupId(child, idSearch); + Area? found = SearchAreaFromGroupId(child, idSearch); if (found != null) { return found; @@ -1102,7 +1102,7 @@ namespace WebWindowComplex /// Id Area che si sta cercando /// Id dell'anta (se -1 non usare) /// - private void UpdateProfileElement(List profileNameList, int GroupIdSearch, int SashIdSearch = -1) + private void UpdateProfileElement(List profileNameList, int GroupIdSearch, int SashIdSearch) { // Cerco area corrispondente al GroupId Area found = SearchAreaFromGroupId(FrameWindow, SashIdSearch); @@ -1266,7 +1266,7 @@ namespace WebWindowComplex if (newFrame != null) { // cerco il record - var currRec = m_CurrWindow.AreaList.FirstOrDefault(x => x.GroupId == newFrame.GroupId); + var currRec = m_CurrWindow?.AreaList.FirstOrDefault(x => x.GroupId == newFrame.GroupId); // lo aggiorno currRec = newFrame; if (forceSvgNoHw) @@ -1286,7 +1286,7 @@ namespace WebWindowComplex if (newFrame != null) { // cerco il record - var currRec = m_CurrWindow.AreaList.FirstOrDefault(x => x.GroupId == newFrame.GroupId); + var currRec = m_CurrWindow?.AreaList.FirstOrDefault(x => x.GroupId == newFrame.GroupId); // lo aggiorno currRec = newFrame; // resetto hw lst @@ -1312,7 +1312,7 @@ namespace WebWindowComplex if (newFrame != null) { // cerco il record - var currRec = m_CurrWindow.AreaList.FirstOrDefault(x => x.GroupId == newFrame.GroupId); + var currRec = m_CurrWindow?.AreaList.FirstOrDefault(x => x.GroupId == newFrame.GroupId); // lo aggiorno currRec = newFrame; // richiedo update element del frame diff --git a/WebWindowComplex/WebWindowComplex.csproj b/WebWindowComplex/WebWindowComplex.csproj index d765ef4..23352db 100644 --- a/WebWindowComplex/WebWindowComplex.csproj +++ b/WebWindowComplex/WebWindowComplex.csproj @@ -6,7 +6,7 @@ net8.0 enable enable - 2.8.1.2715 + 2.8.1.2811 Annamaria Sassi Egalware Componente gestione Configurazioni avanzate Window per LUX @@ -119,6 +119,13 @@ + + + + + + + diff --git a/WebWindowConfigurator/WebWindowConfigurator.csproj b/WebWindowConfigurator/WebWindowConfigurator.csproj index 0bb6e8a..2911eae 100644 --- a/WebWindowConfigurator/WebWindowConfigurator.csproj +++ b/WebWindowConfigurator/WebWindowConfigurator.csproj @@ -6,7 +6,7 @@ net8.0 enable enable - 2.8.1.2715 + 2.8.1.2811 Annamaria Sassi Egalware Componente gestione JWD per LUX @@ -158,6 +158,19 @@ + + + + + + + + + + + + + diff --git a/WebWindowConfigurator/Window.cs b/WebWindowConfigurator/Window.cs index c35b778..7e0f9c0 100644 --- a/WebWindowConfigurator/Window.cs +++ b/WebWindowConfigurator/Window.cs @@ -1729,14 +1729,14 @@ namespace WebWindowConfigurator } } - private Visibility m_OptVisibility; - public Visibility OptVisibility - { - get - { - return m_OptVisibility; - } - } + //private Visibility m_OptVisibility; + //public Visibility OptVisibility + //{ + // get + // { + // return m_OptVisibility; + // } + //} //public AGBOption(ParametriOpzioniParametri HdwOptionParam) //{ From f4762f402a0f7a06d274612b85d1ff4b43abfc6f Mon Sep 17 00:00:00 2001 From: Annamaria Sassi Date: Wed, 28 Jan 2026 16:07:00 +0100 Subject: [PATCH 2/3] Aggiornato AreaProfiles --- WebWindowComplex/AreaProfiles.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/WebWindowComplex/AreaProfiles.cs b/WebWindowComplex/AreaProfiles.cs index 9bf14f7..2433f66 100644 --- a/WebWindowComplex/AreaProfiles.cs +++ b/WebWindowComplex/AreaProfiles.cs @@ -16,17 +16,17 @@ namespace WebWindowComplex /// /// Numero di anta (se è una sash) /// - public int SashId { get; set; } + public int EntId { get; set; } /// /// Lista profili /// public List Profiles { get; set; } - public AreaProfiles(int groupId, int sashId, List profiles) + public AreaProfiles(int groupId, int entityId, List profiles) { GroupId = groupId; - SashId = sashId; + EntId = entityId; Profiles = profiles; } } From 955b9cd6b2ff2908928d97ab5f3f6940bd94ad9a Mon Sep 17 00:00:00 2001 From: Annamaria Sassi Date: Wed, 28 Jan 2026 16:07:34 +0100 Subject: [PATCH 3/3] Gestita risposta ProfElement --- Test.UI/Components/Pages/EditJWD.razor.cs | 9 +- Test.UI/appsettings.json | 1 + WebWindowComplex/Compo/AreaSash.razor.cs | 39 +++++- WebWindowComplex/Compo/CardFrame.razor.cs | 6 +- WebWindowComplex/Compo/CardSashGroup.razor.cs | 15 ++- WebWindowComplex/TableComp.razor | 3 +- WebWindowComplex/TableComp.razor.cs | 127 +++++++++++------- WebWindowComplex/WebWindowComplex.csproj | 24 +++- .../WebWindowConfigurator.csproj | 10 +- 9 files changed, 173 insertions(+), 61 deletions(-) diff --git a/Test.UI/Components/Pages/EditJWD.razor.cs b/Test.UI/Components/Pages/EditJWD.razor.cs index 86fc4a0..adf65ad 100644 --- a/Test.UI/Components/Pages/EditJWD.razor.cs +++ b/Test.UI/Components/Pages/EditJWD.razor.cs @@ -350,7 +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.PipeAreaProfile.EA_NewMessage += PipeAreaProfile_EA_NewMessage; + DLService.PipeProfElement.EA_NewMessage += PipeProfElement_EA_NewMessage; } #endregion Protected Methods @@ -384,7 +384,8 @@ namespace Test.UI.Components.Pages private string channelHwOpt = ""; private string channelShape = ""; - private string chProfElem = ""; + private string channelProfList = ""; + private string channelProfElem = ""; private string channelSvg = ""; #endregion Private Fields @@ -410,6 +411,8 @@ namespace Test.UI.Components.Pages channelSvg = Config.GetValue("ServerConf:ChannelSvg") ?? ""; channelShape = Config.GetValue("ServerConf:ChannelShape") ?? ""; channelHwOpt = Config.GetValue("ServerConf:ChannelHwOpt") ?? ""; + channelProfElem = Config.GetValue("ServerConf:ChannelProfElem") ?? ""; + channelProfList = Config.GetValue("ServerConf:ChannelProfList") ?? ""; } /// @@ -516,7 +519,7 @@ namespace Test.UI.Components.Pages // conversione on-the-fly SVG da mostrare if (!string.IsNullOrEmpty(currArgs.newMessage) && currArgs.newMessage.Length > 2) { - if (currArgs.msgUid.StartsWith($"{chProfElem}:{windowUid}")) + if (currArgs.msgUid.StartsWith($"{channelProfElem}:{windowUid}")) { // deserializzo il dizionario delle risposte... var rawDict = JsonConvert.DeserializeObject>(currArgs.newMessage); diff --git a/Test.UI/appsettings.json b/Test.UI/appsettings.json index 92e2391..fcc297e 100644 --- a/Test.UI/appsettings.json +++ b/Test.UI/appsettings.json @@ -17,6 +17,7 @@ "ChannelShape": "lux:shape:curr", "ChannelHwList": "lux:hw:list", "ChannelHwOpt": "lux:hw:opt", + "ChannelProfElem": "lux:prof:elem", "ChannelProfList": "lux:prof:list", "ChannelBom": "lux:bom", "ChannelUpdate": "lux:update", diff --git a/WebWindowComplex/Compo/AreaSash.razor.cs b/WebWindowComplex/Compo/AreaSash.razor.cs index 96899dd..05fa97e 100644 --- a/WebWindowComplex/Compo/AreaSash.razor.cs +++ b/WebWindowComplex/Compo/AreaSash.razor.cs @@ -56,7 +56,7 @@ namespace WebWindowComplex.Compo /// Evento per aggiornare sash /// [Parameter] - public EventCallback EC_UpdateSash { get; set; } + public EventCallback EC_UpdateSash { get; set; } /// /// Evento per cambiare modalità di visualizzazione @@ -209,6 +209,7 @@ namespace WebWindowComplex.Compo await EC_UpdateSashDim.InvokeAsync(CurrSashDim); } } + /// /// Aggiornamento element /// @@ -225,6 +226,7 @@ namespace WebWindowComplex.Compo await EC_UpdateSashDim.InvokeAsync(CurrSashDim); } } + /// /// Metodo per cambiare l'anta su cui è presente la maniglia /// @@ -270,7 +272,12 @@ namespace WebWindowComplex.Compo } CurrSashGroup.RefreshHardwareList(); CurrSashGroup.SetFirstHardware(); - await EC_UpdateSash.InvokeAsync(CurrSashGroup); + DataUpdateProfile args = new DataUpdateProfile() + { + sash = CurrSashGroup, + reqProfile = true + }; + await EC_UpdateSash.InvokeAsync(args); } /// @@ -294,7 +301,11 @@ namespace WebWindowComplex.Compo CurrSashDim.ElementDimensionList.ElementAt(1).dDimension + CurrSashDim.ElementDimensionList.ElementAt(3).dDimension; } - await EC_UpdateSash.InvokeAsync(CurrSashGroup); + DataUpdateProfile args = new DataUpdateProfile() + { + sash = CurrSashGroup + }; + await EC_UpdateSash.InvokeAsync(args); } } @@ -312,8 +323,13 @@ namespace WebWindowComplex.Compo // Creo la copia dell'anta scelta Area a = CurrSashGroup.AreaList[IndexCopy].AreaList.First().Copy(sashSplitted); // Aggiungo copia all'anta selezionata - CurrSashGroup.AreaList[IndexModify].AreaList.Add(a); - await EC_UpdateSash.InvokeAsync(CurrSashGroup); + CurrSashGroup.AreaList[IndexModify].AreaList.Add(a); + DataUpdateProfile args = new DataUpdateProfile() + { + sash = CurrSashGroup, + reqProfile = true + }; + await EC_UpdateSash.InvokeAsync(args); } /// @@ -323,7 +339,12 @@ namespace WebWindowComplex.Compo private async Task AddSplitToSash() { CurrAnta.AddSplit(); - await EC_UpdateSash.InvokeAsync(CurrSashGroup); + DataUpdateProfile args = new DataUpdateProfile() + { + sash = CurrSashGroup, + reqProfile = true + }; + await EC_UpdateSash.InvokeAsync(args); } private bool isOpen = false; @@ -390,4 +411,10 @@ namespace WebWindowComplex.Compo public int IndexSashClose { get; set; } } + public class DataUpdateProfile + { + public Sash sash { get; set; } + public bool reqProfile { get; set; } = false; + } + } \ No newline at end of file diff --git a/WebWindowComplex/Compo/CardFrame.razor.cs b/WebWindowComplex/Compo/CardFrame.razor.cs index e7ce2f2..eb8b167 100644 --- a/WebWindowComplex/Compo/CardFrame.razor.cs +++ b/WebWindowComplex/Compo/CardFrame.razor.cs @@ -33,7 +33,7 @@ namespace WebWindowComplex.Compo public EventCallback EC_UpdateFrame { get; set; } /// - /// Evento per richiesta Element + /// Evento per richiesta profili degli Element /// [Parameter] public EventCallback EC_ReqElement { get; set; } @@ -161,6 +161,7 @@ namespace WebWindowComplex.Compo svgNoHw = true }; await EC_UpdateFrame.InvokeAsync(args); + await EC_ReqElement.InvokeAsync(CurrFrameWindow); } /// @@ -178,6 +179,8 @@ namespace WebWindowComplex.Compo await EC_ReqResetDict.InvokeAsync(new DataUpdateRes { req=LayoutConst.DataAction.ResetDictShape}); await EC_ReqOptionHw.InvokeAsync(CurrFrameWindow); await EC_UpdateFrame.InvokeAsync(args); + await EC_ReqElement.InvokeAsync(CurrFrameWindow); + } /// @@ -228,6 +231,7 @@ namespace WebWindowComplex.Compo }; await EC_ReqResetDict.InvokeAsync(new DataUpdateRes { req = LayoutConst.DataAction.ResetDictShape }); await EC_UpdateFrame.InvokeAsync(args); + await EC_ReqElement.InvokeAsync(CurrFrameWindow); } } diff --git a/WebWindowComplex/Compo/CardSashGroup.razor.cs b/WebWindowComplex/Compo/CardSashGroup.razor.cs index 6848417..7bf630b 100644 --- a/WebWindowComplex/Compo/CardSashGroup.razor.cs +++ b/WebWindowComplex/Compo/CardSashGroup.razor.cs @@ -57,6 +57,12 @@ namespace WebWindowComplex.Compo [Parameter] public EventCallback EC_UpdateSashGroup { get; set; } + /// + /// Evento per richiesta profili degli Element + /// + [Parameter] + public EventCallback EC_ReqElement { get; set; } + /// /// Lista di sash /// @@ -89,8 +95,10 @@ namespace WebWindowComplex.Compo currSash = CurrSashGroup, svgNoHw = true }; + _ = EC_UpdateSashGroup.InvokeAsync(args); _ = EC_ReqOptionHw.InvokeAsync(CurrSashGroup); + _ = EC_ReqElement.InvokeAsync(CurrSashGroup); } } } @@ -242,6 +250,7 @@ namespace WebWindowComplex.Compo currSash = CurrSashGroup }; await EC_UpdateSashGroup.InvokeAsync(args); + await EC_ReqElement.InvokeAsync(CurrSashGroup); } } @@ -250,16 +259,18 @@ namespace WebWindowComplex.Compo /// /// /// - protected async Task UpdateSash(Sash updateS) + protected async Task UpdateSash(DataUpdateProfile updateS) { if (updateS != null) { - CurrSashGroup = updateS; + CurrSashGroup = updateS.sash; var args = new DataUpdateSash { currSash = CurrSashGroup }; await EC_UpdateSashGroup.InvokeAsync(args); + if (updateS.reqProfile) + await EC_ReqElement.InvokeAsync(CurrSashGroup); } } diff --git a/WebWindowComplex/TableComp.razor b/WebWindowComplex/TableComp.razor index f150904..f6200f6 100644 --- a/WebWindowComplex/TableComp.razor +++ b/WebWindowComplex/TableComp.razor @@ -93,7 +93,7 @@ @@ -141,6 +141,7 @@ EC_ReqResetDict="ReqResetDict" EC_ReqOptionHw="UpdateHwOptionsSash" EC_ReqFirstOptionHw="ReqFirstOptionHw" + EC_ReqElement="UpdateElementSash" EC_ReqClose="ReturnTree"> diff --git a/WebWindowComplex/TableComp.razor.cs b/WebWindowComplex/TableComp.razor.cs index 59cb6bc..a236cfa 100644 --- a/WebWindowComplex/TableComp.razor.cs +++ b/WebWindowComplex/TableComp.razor.cs @@ -764,7 +764,7 @@ namespace WebWindowComplex // Inserisco i profili ricevuti nei rispettivi Element foreach (var item in LiveData.ProfElementList) { - UpdateProfileElement(item.Profiles, item.GroupId, item.SashId < 1 ? -1: item.SashId); + UpdateProfileElement(item.Profiles, item.GroupId, item.EntId); } } } @@ -1100,55 +1100,60 @@ namespace WebWindowComplex /// /// Lista dei profili /// Id Area che si sta cercando - /// Id dell'anta (se -1 non usare) + /// Id dell'anta (se -1 non usare) /// - private void UpdateProfileElement(List profileNameList, int GroupIdSearch, int SashIdSearch) + private void UpdateProfileElement(List profileNameList, int GroupIdSearch, int EntityIdSearch) { // Cerco area corrispondente al GroupId - Area found = SearchAreaFromGroupId(FrameWindow, SashIdSearch); - switch (found.AreaType) + Area? found = SearchAreaFromGroupId(FrameWindow, GroupIdSearch); + if(found != null) { - case AreaTypes.FRAME: - { - Frame frame = (Frame)found; - for(int i = 0; i < frame.ElementDimensionList.Count; i++) + switch (found.AreaType) + { + case AreaTypes.FRAME: { - frame.ElementDimensionList.ElementAt(i).SetNameElement(profileNameList.ElementAt(i)); + Frame frame = (Frame)found; + for(int i = 0; i < frame.ElementDimensionList.Count; i++) + { + frame.ElementDimensionList.ElementAt(i).SetNameElement(profileNameList.ElementAt(i)); + } + break; } - break; - } - case AreaTypes.SASH: - { - Sash sash = (Sash)found; - SashDimension anta = sash.SashList.ElementAt(SashIdSearch); - for(int index = anta.ElementDimensionList.Count; index < profileNameList.Count; index++) + case AreaTypes.SASH: { - double valStd = Window.m_ParameterList.GetValueOrDefault(profileNameList.ElementAt(index) + "_DimStd"); - anta.ElementDimensionList.Add(new ElementDimension(sash, index + 1, valStd)); + Sash sash = (Sash)found; + SashDimension anta = sash.SashList.ElementAt(EntityIdSearch - 1); + for(int index = anta.ElementDimensionList.Count; index < profileNameList.Count; index++) + { + double valStd = Window.m_ParameterList.GetValueOrDefault(profileNameList.ElementAt(index) + "_DimStd"); + anta.ElementDimensionList.Add(new ElementDimension(sash, index + 1, valStd)); + } + for (int i = 0; i < anta.ElementDimensionList.Count; i++) + { + anta.ElementDimensionList.ElementAt(i).SetNameElement(profileNameList.ElementAt(i)); + } + break; } - for (int i = 0; i < anta.ElementDimensionList.Count; i++) + case AreaTypes.SPLIT: { - anta.ElementDimensionList.ElementAt(i).SetNameElement(profileNameList.ElementAt(i)); + Split split = (Split)found; + if (split.bSplitStartVert) + { + for (int i = 0; i < split.ElemDimVertList.Count; i++) + { + split.ElemDimVertList.ElementAt(i).SetNameElement(profileNameList.ElementAt(i)); + } + } + else + { + for (int i = 0; i < split.ElemDimHorizList.Count; i++) + { + split.ElemDimHorizList.ElementAt(i).SetNameElement(profileNameList.ElementAt(i)); + } + } + break; } - break; - } - case AreaTypes.SPLIT: - { - Split split = (Split)found; - for (int i = 0; i < split.ElemDimVertList.Count; i++) - { - split.ElemDimVertList.ElementAt(i).SetNameElement(profileNameList.ElementAt(i)); - } - for (int i = split.ElemDimVertList.Count; i < split.ElemDimHorizList.Count; i++) - { - split.ElemDimHorizList.ElementAt(i).SetNameElement(profileNameList.ElementAt(i)); - } - break; - } - } - foreach (Area child in found.AreaList) - { - UpdateProfileElement(profileNameList, GroupIdSearch, SashIdSearch); + } } } @@ -1301,7 +1306,33 @@ namespace WebWindowComplex } } } - + + private async Task UpdateElementSash(Sash newSash) + { + if (newSash != null) + { + Sash currRec = (Sash)SearchAreaFromGroupId(FrameWindow, newSash.GroupId)!; + currRec = newSash; + await UpdateElement(FrameWindow); + } + } + /// + /// Aggiornamento Element della Window + /// + /// nuovo frame + /// + private async Task UpdateElementFrame(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 + await UpdateElement(FrameWindow); + } + } /// /// Aggiornamento Element della Window /// @@ -1311,14 +1342,10 @@ namespace WebWindowComplex { 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) + // richiedo update element della sash (se presenti) if(SashList.Count > 0) { foreach(var item in SashList) @@ -1326,6 +1353,14 @@ namespace WebWindowComplex reqList.Add(item.GroupId); } } + // richiedo update element degli split (se presenti) + if (SplitList.Count > 0) + { + foreach (var item in SplitList) + { + reqList.Add(item.GroupId); + } + } await DoReqElement(reqList); } } diff --git a/WebWindowComplex/WebWindowComplex.csproj b/WebWindowComplex/WebWindowComplex.csproj index 23352db..268bbde 100644 --- a/WebWindowComplex/WebWindowComplex.csproj +++ b/WebWindowComplex/WebWindowComplex.csproj @@ -6,7 +6,7 @@ net8.0 enable enable - 2.8.1.2811 + 2.8.1.2816 Annamaria Sassi Egalware Componente gestione Configurazioni avanzate Window per LUX @@ -114,6 +114,28 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/WebWindowConfigurator/WebWindowConfigurator.csproj b/WebWindowConfigurator/WebWindowConfigurator.csproj index 2911eae..c263807 100644 --- a/WebWindowConfigurator/WebWindowConfigurator.csproj +++ b/WebWindowConfigurator/WebWindowConfigurator.csproj @@ -6,7 +6,7 @@ net8.0 enable enable - 2.8.1.2811 + 2.8.1.2816 Annamaria Sassi Egalware Componente gestione JWD per LUX @@ -176,6 +176,14 @@ + + + + + + + +