Preparata nuova domanda per ricevere i profili degli Element

This commit is contained in:
Annamaria Sassi
2026-01-26 10:55:47 +01:00
parent d650a30091
commit 73f790378a
7 changed files with 188 additions and 238 deletions
@@ -32,6 +32,12 @@ namespace WebWindowComplex.Compo
[Parameter]
public EventCallback<DataUpdateFrame> EC_UpdateFrame { get; set; }
/// <summary>
/// Evento per richiesta Element
/// </summary>
[Parameter]
public EventCallback<Frame> EC_ReqElement { get; set; }
/// <summary>
/// Frame corrente
/// </summary>
@@ -82,6 +88,7 @@ namespace WebWindowComplex.Compo
currFrame = CurrFrameWindow,
svgNoHw = true
};
_ = EC_ReqElement.InvokeAsync(CurrFrameWindow);
_ = EC_UpdateFrame.InvokeAsync(args);
}
}
+5
View File
@@ -34,6 +34,11 @@ namespace WebWindowComplex.DTO
/// </summary>
public Dictionary<int, string> DictOptionsXml { get; set; } = new Dictionary<int, string>();
/// <summary>
/// Dizionario Element
/// </summary>
public Dictionary<int, string> DictElement { get; set; } = new Dictionary<int, string>();
#endregion Public Properties
#region Public Methods
+1
View File
@@ -93,6 +93,7 @@
<CascadingValue Value="m_SplitList" Name="SplitList">
<CardFrame EC_ReqResetDict="ReqResetDict"
EC_ReqOptionHw="UpdateHwOptionsFrame"
EC_ReqElement="UpdateElement"
EC_UpdateFrame="UpdatePreviewFrame"
EC_ReqClose="ReturnTree">
</CardFrame>
+121 -236
View File
@@ -35,7 +35,12 @@ namespace WebWindowComplex
/// <summary>
/// Richiesta shape sash group
/// </summary>
ReqShape
ReqShape,
/// <summary>
/// Richiesta element
/// </summary>
ReqElement
}
#endregion Public Enums
@@ -322,224 +327,6 @@ namespace WebWindowComplex
}
}
/// <summary>
/// Metodo per popolare i parametri relativi al profilo
/// </summary>
/// <param name="node"> Area che si considera</param>
protected void PopolateParamElement(Area node)
{
if (node != null)
{
switch (node.AreaType)
{
case AreaTypes.FRAME:
{
Frame frame = (Frame)node;
switch (node.AreaList.FirstOrDefault().AreaType)
{
case AreaTypes.SASH:
{
frame.ElementDimensionList.FirstOrDefault().SetNameElement("Frame_Sash_Bottom_Dim");
for(int i = 1; i <4; i++)
frame.ElementDimensionList.ElementAt(i).SetNameElement("Frame_Sash_Top_Dim");
foreach(var elem in frame.ElementDimensionList)
{
elem.SetMinDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Min"));
elem.SetMaxDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Max"));
}
break;
}
case AreaTypes.SPLIT:
{
Split split = (Split)node.AreaList.FirstOrDefault();
switch(split.SelSplitShape)
{
case SplitShapes.VERTICAL:
{
// in tutte le aree splittate ho ante
if (split.OnlySashChild())
{
frame.ElementDimensionList.ElementAt(0).SetNameElement("Frame_Mixed_Bottom_Dim");
frame.ElementDimensionList.ElementAt(1).SetNameElement("Frame_Sash_Top_Dim");
frame.ElementDimensionList.ElementAt(2).SetNameElement("Frame_Mixed_Bottom_Dim");
frame.ElementDimensionList.ElementAt(3).SetNameElement("Frame_Sash_Top_Dim");
foreach (var elem in frame.ElementDimensionList)
{
elem.SetMinDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Min"));
elem.SetMaxDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Max"));
}
}
// cambio profilo
else if (split.MinOneSashChild())
{
frame.ElementDimensionList.ElementAt(0).SetNameElement("Frame_Mixed_Bottom_Dim");
if(split.AreaList.FirstOrDefault().AreaList.FirstOrDefault().AreaType is AreaTypes.SASH)
frame.ElementDimensionList.ElementAt(1).SetNameElement("Frame_Sash_Top_Dim");
else
frame.ElementDimensionList.ElementAt(1).SetNameElement("Frame_Fixed_Top_Dim");
frame.ElementDimensionList.ElementAt(2).SetNameElement("Frame_Mixed_Bottom_Dim");
if (split.AreaList.Last().AreaList.FirstOrDefault().AreaType is AreaTypes.SASH)
frame.ElementDimensionList.ElementAt(3).SetNameElement("Frame_Sash_Top_Dim");
else
frame.ElementDimensionList.ElementAt(3).SetNameElement("Frame_Fixed_Top_Dim");
foreach (var elem in frame.ElementDimensionList)
{
elem.SetMinDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Min"));
elem.SetMaxDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Max"));
}
}
// solo vetri fissi
else
{
frame.ElementDimensionList.ElementAt(0).SetNameElement("Frame_Frame_Split_Dim");
frame.ElementDimensionList.ElementAt(1).SetNameElement("Frame_Fixed_Top_Dim");
frame.ElementDimensionList.ElementAt(2).SetNameElement("Frame_Frame_Split_Dim");
frame.ElementDimensionList.ElementAt(3).SetNameElement("Frame_Fixed_Top_Dim");
foreach (var elem in frame.ElementDimensionList)
{
elem.SetMinDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Min"));
elem.SetMaxDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Max"));
}
}
break;
}
case SplitShapes.HORIZONTAL:
{
// in tutte le aree splittate ho ante
if (split.OnlySashChild())
{
frame.ElementDimensionList.ElementAt(0).SetNameElement("Frame_Sash_Bottom_Dim");
frame.ElementDimensionList.ElementAt(1).SetNameElement("Frame_Mixed_Top_Dim");
frame.ElementDimensionList.ElementAt(2).SetNameElement("Frame_Sash_Top_Dim");
frame.ElementDimensionList.ElementAt(3).SetNameElement("Frame_Mixed_Top_Dim");
foreach (var elem in frame.ElementDimensionList)
{
elem.SetMinDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Min"));
elem.SetMaxDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Max"));
}
}
// cambio profilo
else if (split.MinOneSashChild())
{
if (split.AreaList.FirstOrDefault().AreaList.FirstOrDefault().AreaType is AreaTypes.SASH)
frame.ElementDimensionList.ElementAt(0).SetNameElement("Frame_Sash_Bottom_Dim");
else
frame.ElementDimensionList.ElementAt(0).SetNameElement("Frame_Fixed_Bottom_Dim");
frame.ElementDimensionList.ElementAt(1).SetNameElement("Frame_Mixed_Top_Dim");
if (split.AreaList.ElementAt(2).AreaList.FirstOrDefault().AreaType is AreaTypes.SASH)
frame.ElementDimensionList.ElementAt(2).SetNameElement("Frame_Sash_Top_Dim");
else
frame.ElementDimensionList.ElementAt(2).SetNameElement("Frame_Fixed_Top_Dim");
frame.ElementDimensionList.ElementAt(3).SetNameElement("Frame_Mixed_Top_Dim");
foreach (var elem in frame.ElementDimensionList)
{
elem.SetMinDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Min"));
elem.SetMaxDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Max"));
}
}
// solo vetri fissi
else
{
frame.ElementDimensionList.ElementAt(0).SetNameElement("Frame_Fixed_Top_Dim");
frame.ElementDimensionList.ElementAt(1).SetNameElement("Frame_Frame_Split_Dim");
frame.ElementDimensionList.ElementAt(2).SetNameElement("Frame_Fixed_Top_Dim");
frame.ElementDimensionList.ElementAt(3).SetNameElement("Frame_Frame_Split_Dim");
foreach (var elem in frame.ElementDimensionList)
{
elem.SetMinDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Min"));
elem.SetMaxDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Max"));
}
}
break;
}
case SplitShapes.GRID:
{
for (int i = 0; i < 4; i++)
frame.ElementDimensionList.ElementAt(i).SetNameElement("Frame_Frame_Split_Dim");
foreach (var elem in frame.ElementDimensionList)
{
elem.SetMinDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Min"));
elem.SetMaxDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Max"));
}
break;
}
}
break;
}
}
break;
}
case AreaTypes.SASH:
{
break;
}
case AreaTypes.SPLIT:
{
Split split = (Split)node;
switch (split.ParentArea.AreaType)
{
case AreaTypes.SASH:
{
for (int i = 0; i < split.ElemDimVertList.Count - 1; i++)
split.ElemDimVertList.ElementAt(i).SetNameElement("Sash_Sash_Split_Dim");
for (int i = 0; i < split.ElemDimHorizList.Count - 1; i++)
split.ElemDimHorizList.ElementAt(i).SetNameElement("Sash_Sash_Split_Dim");
foreach (var elem in split.ElemDimVertList)
{
elem.SetMinDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Min"));
elem.SetMaxDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Max"));
}
foreach (var elem in split.ElemDimHorizList)
{
elem.SetMinDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Min"));
elem.SetMaxDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Max"));
}
break;
}
case AreaTypes.FRAME:
{
if (split.MinOneSashChild())
{
for (int i = 0; i < split.ElemDimVertList.Count - 1; i++)
split.ElemDimVertList.ElementAt(i).SetNameElement("Frame_Mixed_Split_Dim");
for (int i = 0; i < split.ElemDimHorizList.Count - 1; i++)
split.ElemDimHorizList.ElementAt(i).SetNameElement("Frame_Mixed_Split_Dim");
}
else
{
for (int i = 0; i < split.ElemDimVertList.Count - 1; i++)
split.ElemDimVertList.ElementAt(i).SetNameElement("Frame_Frame_Split_Dim");
for (int i = 0; i < split.ElemDimHorizList.Count - 1; i++)
split.ElemDimHorizList.ElementAt(i).SetNameElement("Frame_Frame_Split_Dim");
}
foreach (var elem in split.ElemDimVertList)
{
elem.SetMinDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Min"));
elem.SetMaxDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Max"));
}
foreach (var elem in split.ElemDimHorizList)
{
elem.SetMinDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Min"));
elem.SetMaxDimension(Window.m_ParameterList.GetValueOrDefault(elem.sName + "Max"));
}
break;
}
}
break;
}
default:
{
break;
}
}
foreach (var item in node.AreaList)
{
PopolateParamElement(item);
}
}
}
/// <summary>
/// Metodo per riempire le liste Sash, Split, Splitted e Fill
/// </summary>
@@ -701,6 +488,35 @@ namespace WebWindowComplex
}
}
/// <summary>
/// Richiesta Profili Element da JWD
/// </summary>
/// <returns></returns>
protected async Task DoReqElement(List<int> groupIdList)
{
if (m_CurrWindow != null)
{
#if DEBUG
var CurrJwd = JsonConvert.SerializeObject(m_CurrWindow.Serialize(), Formatting.Indented);
#else
var CurrJwd = JsonConvert.SerializeObject(m_CurrWindow.Serialize());
#endif
// verifico variazione JWD
if (!prevJwd.Equals(CurrJwd) || prevReq != (int)DataReq.ReqElement)
{
prevJwd = CurrJwd;
prevReq = (int)DataReq.ReqElement;
Dictionary<string, string> Args = new Dictionary<string, string>();
Args.Add("Mode", $"{(int)Enums.QuestionModes.HARDWARE}");
Args.Add("SubMode", $"{(int)Enums.QuestionHwSubModes.PROFILEDATAFROMAREA}");
Args.Add("SerializedData", CurrJwd);
string listGroupId = JsonConvert.SerializeObject(groupIdList);
Args.Add("GroupId", listGroupId);
await EC_DoUpdate.InvokeAsync(Args);
}
}
}
/// <summary>
/// Metodo di reset
/// </summary>
@@ -765,7 +581,6 @@ namespace WebWindowComplex
DictShape = LiveData.DictShape,
SvgPreview = LiveData.SvgPreview
};
// Aggiornati parametri di ingresso selezionati
UpdateSelParameter();
// provo a deserializzare SE necessario
@@ -847,14 +662,12 @@ namespace WebWindowComplex
List<int> reqList = SashList.Select(x => x.GroupId).ToList();
if (reqList.Count > 0)
{
//prevReq = (int)DataReq.ReqShape;
await DoReqShape(reqList);
}
}
else
{
// chiedo SVG
//prevReq = (int)DataReq.ReqSvg;
if (prevReq != (int)DataReq.ReqSvg || !prevLiveData.JwdEqual(LiveData.CurrJwd))
{
if (prevReq != (int)DataReq.ReqHwOpt)
@@ -947,6 +760,14 @@ namespace WebWindowComplex
}
}
}
if(LiveData.DictElement.Count > 0)
{
// Inserisco i profili ricevuti nei rispettivi Element
foreach (var item in LiveData.DictElement)
{
}
}
}
/// <summary>
@@ -954,7 +775,6 @@ namespace WebWindowComplex
/// </summary>
protected void UpdateLists()
{
PopolateParamElement((m_CurrWindow!).AreaList.First());
m_maxCol = 0;
m_maxRow = 0;
m_FillList = new List<Fill>();
@@ -999,24 +819,17 @@ namespace WebWindowComplex
#region Private Fields
private int currAntaIndex = 0;
private int currFillIndex = -1;
private int currSashIndex = -1;
private int currSplitIndex = -1;
private CompileStep currStep;
private bool editLock = false;
private bool firstDisplay = true;
/// <summary>
/// Booleana fase loading
/// </summary>
private bool isLoading = false;
private bool isRendered = false;
/// <summary>
@@ -1034,7 +847,6 @@ namespace WebWindowComplex
/// </summary>
private Dictionary<string, string> listWarnings = new Dictionary<string, string>();
private List<Fill> m_FillList = new List<Fill>();
private Frame? m_Frame;
@@ -1045,9 +857,8 @@ namespace WebWindowComplex
private int m_maxRow = 0;
private List<Sash> m_SashList = new List<Sash>();
private List<Split> m_SplitList = new List<Split>();
private List<Fill> m_FillList = new List<Fill>();
private List<Splitted> m_SplittedList = new List<Splitted>();
#endregion Private Fields
@@ -1238,6 +1049,13 @@ namespace WebWindowComplex
AdvStep(CompileStep.Tree);
}
/// <summary>
/// Metodo per cercare un area precisa
/// </summary>
/// <param name="currentArea"> Area che si sta analizzando </param>
/// <param name="idSearch"> Id Area che si sta cercando </param>
/// <param name="itemSearch"> Area che si sta cercando </param>
/// <returns></returns>
private Area SearchArea(Area currentArea, int idSearch, Area itemSearch)
{
if (currentArea.GroupId == idSearch && currentArea.AreaType.Equals(itemSearch.AreaType))
@@ -1255,6 +1073,47 @@ namespace WebWindowComplex
return null;
}
/// <summary>
/// Metodo per cercare un area precisa
/// </summary>
/// <param name="currentArea"> Area che si sta analizzando </param>
/// <param name="idSearch"> Id Area che si sta cercando </param>
/// <param name="index"> Indice che si sta cercando </param>
/// <returns></returns>
private Area UpdateIdElement(Area currentArea, int idSearch, int index)
{
switch (currentArea.AreaType)
{
case AreaTypes.FRAME:
{
Frame frame = (Frame)currentArea;
foreach(var item in frame.ElementDimensionList)
{
//if(item.nIndex == index)
}
break;
}
case AreaTypes.SASH:
{
break;
}
case AreaTypes.SPLIT:
{
break;
}
}
foreach (Area child in currentArea.AreaList)
{
Area found = UpdateIdElement(child, idSearch, index);
if (found != null)
{
return found;
}
}
return null;
}
/// <summary>
/// Metodo per aggiornare valori della sezione General
/// </summary>
@@ -1405,6 +1264,35 @@ namespace WebWindowComplex
}
}
/// <summary>
/// Aggiornamento Element della Window
/// </summary>
/// <param name="newFrame"> nuovo frame </param>
/// <returns></returns>
private async Task UpdateElement(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
List<int> reqList = new List<int>();
reqList.Add(FrameWindow.GroupId);
// richiedo update element della sash (se presente)
if(SashList.Count > 0)
{
foreach(var item in SashList)
{
reqList.Add(item.GroupId);
}
}
if (prevReq == (int)DataReq.ReqElement)
await DoReqElement(reqList);
}
}
/// <summary>
/// Aggiornamento opzioni data nuova sash group
/// </summary>
@@ -1420,9 +1308,6 @@ namespace WebWindowComplex
currRec = newSash;
// resetto hw lst
await EC_ActionReq.InvokeAsync(DataAction.ResetHwOpt);
//reqHwOpt++;
//if(prevReq == (int)DataReq.ReqShape)
//{
// richiesta calcolo opzioni hardware per la singola sash group
List<int> reqList = SashList.Select(x => x.GroupId).ToList();
// chiamo con gruppo della nuova sash
+7 -1
View File
@@ -6,7 +6,7 @@
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<Version>2.8.1.2309</Version>
<Version>2.8.1.2609</Version>
<Authors>Annamaria Sassi</Authors>
<Company>Egalware</Company>
<Description>Componente gestione Configurazioni avanzate Window per LUX</Description>
@@ -75,6 +75,12 @@