Files
webwindowconfigurator/WebWindowComplex/Compo/AreaSash.razor.cs
T
Annamaria Sassi 1fed423ab0 - Aggiornato passaggio parametri tra componenti
- Aggiornata interfaccia sash
- Aggiornato jwd di base nel caso di sbagliata deserializzazione
- Aggiornato readme
2025-11-24 14:50:32 +01:00

234 lines
6.6 KiB
C#

using EgwCoreLib.Razor;
using Microsoft.AspNetCore.Components;
using Newtonsoft.Json.Linq;
using System;
using WebWindowComplex.Models;
using static WebWindowComplex.Json.WindowConst;
namespace WebWindowComplex.Compo
{
public partial class AreaSash
{
/// <summary>
/// Sash group corrente
/// </summary>
[CascadingParameter(Name = "CurrSashGroup")]
public Sash CurrSashGroup { get; set; } = null!;
/// <summary>
/// Sash dimension corrente
/// </summary>
[Parameter]
public SashDimension CurrSashDim { get; set; } = null!;
/// <summary>
/// Sash dimension corrente
/// </summary>
[Parameter]
public bool EditMode { get; set; } = false;
/// <summary>
/// Indice della sash corrente
/// </summary>
[Parameter]
public int IndexSash { get; set; } = 0;
/// <summary>
/// Evento per cambiare l'anta su cui presente la maniglia
/// </summary>
[Parameter]
public EventCallback<DataChangeHandle> EC_ChangeHandle { get; set; }
/// <summary>
/// Evento per aggiornare sash dimension
/// </summary>
[Parameter]
public EventCallback<SashDimension> EC_UpdateSashDim { get; set; }
/// <summary>
/// Evento per cambiare l'anta su cui presente la maniglia
/// </summary>
[Parameter]
public EventCallback<DataCopyContentSash> EC_CopyContentSash { get; set; }
/// <summary>
/// Evento per cambiare modalit di visualizzazione
/// </summary>
[Parameter]
public EventCallback<DataChangeMode> EC_EditView { get; set; }
/// <summary>
/// Anta corrente
/// </summary>
public Area CurrAnta
{
get
{
if (CurrSashGroup.AreaList[IndexSash] is Splitted)
{
return CurrSashGroup.AreaList[IndexSash];
}
else
{
return CurrSashGroup;
}
}
set
{
CurrAnta = value;
}
}
public int CssDecimals()
{
switch (CurrSashDim.MeasureType)
{
case Json.WindowConst.MeasureTypes.ABSOLUT:
{
return 2;
}
case Json.WindowConst.MeasureTypes.PROPORTIONAL:
{
return 0;
}
case Json.WindowConst.MeasureTypes.PERCENTAGE:
{
return 1;
}
}
return 0;
}
/// <summary>
/// Sollevo evento richiesta per cambiare tutti i Joint
/// </summary>
/// <returns></returns>
private async Task ChangeAllJoints(Json.WindowConst.Joints JointType)
{
foreach (var item in CurrSashDim.JointList)
item.SetSelJointType(JointType);
await EC_UpdateSashDim.InvokeAsync(CurrSashDim);
}
/// <summary>
/// Report aggiornamento joint
/// </summary>
/// <param name="updRec"></param>
/// <returns></returns>
private async Task UpdateJoint(Joint updRec)
{
// cerco il record
var currRec = CurrSashDim.JointList.FirstOrDefault(x => x.ParentArea == updRec.ParentArea && x.nIndex == updRec.nIndex);
// lo aggiorno
if (updRec != null)
{
currRec = updRec;
await EC_UpdateSashDim.InvokeAsync(CurrSashDim);
}
}
/// <summary>
/// Sollevo evento per cambiare l'anta su cui presente la maniglia
/// </summary>
/// <returns></returns>
private async Task RaiseChangeHandle(SashDimension sashDim, Sash currSash)
{
var Args = new DataChangeHandle
{
currSashDimension = sashDim,
currItem = currSash,
};
await EC_ChangeHandle.InvokeAsync(Args);
}
/// <summary>
/// Sollevo evento per cambiare l'anta su cui presente la maniglia
/// </summary>
/// <returns></returns>
private async Task RaiseCopyContentSash(int indexC, int indexM)
{
isOpen = !isOpen;
var Args = new DataCopyContentSash
{
currItem = CurrSashGroup,
indexCopy = indexC,
indexModify = indexM,
};
await EC_CopyContentSash.InvokeAsync(Args);
}
private bool isOpen = false;
private void ToggleDropdown()
{
isOpen = !isOpen;
}
private string ButtonJointCss(WebWindowComplex.Json.WindowConst.Joints type)
{
foreach (var item in CurrSashDim.JointList)
{
if (!item.SelJointType.Equals(type))
return "btn btn-outline-secondary btn-sm";
}
return "btn btn-secondary btn-sm";
}
private enum ModeView
{
NULL = 0,
View = 1,
Edit = 2
}
protected override void OnParametersSet()
{
if (EditMode)
mode = ModeView.Edit;
else
mode = ModeView.View;
}
private ModeView mode { get; set; } = ModeView.View;
private void doEdit(int index)
{
var args = new DataChangeMode
{
Edit = true,
IndexSashEdit = index,
IndexSashClose = -1
};
_ = EC_EditView.InvokeAsync(args);
}
protected void ClosePopup(int index)
{
var args = new DataChangeMode
{
Edit = false,
IndexSashEdit = -1,
IndexSashClose = index
};
_ = EC_EditView.InvokeAsync(args);
}
}
public class DataChangeMode {
public bool Edit { get; set; }
public int IndexSashEdit { get; set; }
public int IndexSashClose { get; set; }
}
public class DataChangeHandle
{
public SashDimension currSashDimension { get; set; } = null!;
public Sash currItem { get; set; } = null!;
}
public class DataCopyContentSash
{
public Sash currItem { get; set; } = null!;
public int indexCopy { get; set; } = 0;
public int indexModify { get; set; } = 0;
}
}