Aggiunto arc element per Frame e Sash (da rivedere)

This commit is contained in:
Annamaria Sassi
2025-12-02 16:44:01 +01:00
parent 5a7987d02b
commit dfe4ecd9d1
28 changed files with 1075 additions and 78 deletions
@@ -0,0 +1,66 @@
<div class="col-sm-6 my-2">
<div class="d-flex justify-content-between align-items-center">
<h6 class="fw-bold">Frame</h6>
</div>
</div>
<div class="card-body py-2">
<div class="row">
<div class="col-sm-6">
<div class="d-flex justify-content-start fs-5 mb-2">
<div class="px-1">
<input class="form-check-input ml-auto" type="checkbox" name="NumTrochetti" checked="@insertQty" @onclick="() => IsCheckedQty()">
</div>
<div class="px-2">
<div class="input-group mb-2">
<span class="input-group-text">Qty element</span>
@if (insertQty)
{
<input type="number" class="form-control" @bind="@ArcElementQty">
}
else
{
<input type="number" class="form-control" disabled>
}
</div>
</div>
</div>
<div class="d-flex justify-content-start fs-5 mb-2">
<div class="px-1">
<input class="form-check-input ml-auto" type="checkbox" name="Estremità" checked="@CurrFrame.FrameArcElem.bCutEdge" @onclick="() => IsCheckCutEdge()">
</div>
<div class="px-2">
<label class="form-check-label fs-6 text-dark">Taglio estremità</label>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="d-flex justify-content-start fs-5 mb-2">
<div class="px-1">
<input class="form-check-input ml-auto" type="checkbox" name="Sezione" checked="@(!insertQty)" @onclick="() => IsCheckedQty()">
</div>
<div class="px-2">
<div class="input-group mb-2">
<span class="input-group-text">Section</span>
@if (!insertQty)
{
<input type="number" class="form-control" @bind="@ArcSection">
}
else
{
<input type="number" class="form-control" disabled>
}
</div>
</div>
</div>
<div class="d-flex justify-content-start fs-5 mb-2">
<div class="px-1">
<input class="form-check-input ml-auto" type="checkbox" name="Allineamento" checked="@CurrFrame.FrameArcElem.bIsAlign" @onclick="() => IsCheckAlign()">
</div>
<div class="px-2">
<label class="form-check-label fs-6 text-dark">Allineamento</label>
</div>
</div>
</div>
</div>
</div>
@@ -0,0 +1,81 @@
using Microsoft.AspNetCore.Components;
using System.Runtime.CompilerServices;
using WebWindowComplex.DTO;
using WebWindowComplex.Models;
namespace WebWindowComplex.Compo
{
public partial class AreaFrameArcElem
{
#region Public Properties
[Parameter]
public Frame CurrFrame { get; set; } = null!;
[Parameter]
public EventCallback<Frame> EC_UpdatePreview { get; set; }
#endregion Public Properties
#region Protected Properties
protected int ArcElementQty
{
get => CurrFrame.FrameArcElem.nQty;
set
{
CurrFrame.FrameArcElem.nQty = value;
_ = EC_UpdatePreview.InvokeAsync(CurrFrame);
}
}
protected double ArcSection
{
get => CurrFrame.FrameArcElem.nSection;
set
{
CurrFrame.FrameArcElem.nSection = value;
_ = EC_UpdatePreview.InvokeAsync(CurrFrame);
}
}
#endregion Protected Properties
#region Protected Methods
protected void IsCheckedQty()
{
insertQty = !insertQty;
}
protected void IsCheckCutEdge()
{
CurrFrame.FrameArcElem.bCutEdge = !CurrFrame.FrameArcElem.bCutEdge;
_ = EC_UpdatePreview.InvokeAsync(CurrFrame);
}
protected void IsCheckAlign()
{
CurrFrame.FrameArcElem.bIsAlign = !CurrFrame.FrameArcElem.bIsAlign;
_ = EC_UpdatePreview.InvokeAsync(CurrFrame);
}
protected string IsUsedQty()
{
if (insertQty)
return "form-control";
else
return "form-control disabled";
}
#endregion Protected Methods
#region Private Fields
private bool insertQty = false;
#endregion Private Fields
}
}
+21 -18
View File
@@ -4,26 +4,29 @@
<div class="col-sm-6 my-2">
<div class="d-flex justify-content-between align-items-center">
<h6 class="fw-bold">Sash @(CurrSashGroup.SashList.Count == 1 ? "" : (IndexSash + 1))</h6>
<div class="dropdown">
<button class="btn btn-outline-secondary dropdown-toggle btn-sm" type="button" @onclick="ToggleDropdown">
Copy content
</button>
<ul class="dropdown-menu @(isOpen ? "show" : "")" style="min-width:5rem; max-width:10rem">
@for (int k = 0; k <= CurrSashGroup.SashList.Count - 1; k++)
{
@if (k != IndexSash)
@if(CurrSashGroup.SashList.Count > 1)
{
<div class="dropdown">
<button class="btn btn-outline-secondary dropdown-toggle btn-sm" type="button" @onclick="ToggleDropdown">
Copy content
</button>
<ul class="dropdown-menu @(isOpen ? "show" : "")" style="min-width:5rem; max-width:10rem">
@for (int k = 0; k <= CurrSashGroup.SashList.Count - 1; k++)
{
int IndexCopy = k;
int IndexModify = IndexSash;
<li>
<button class="dropdown-item" @onclick="() => CopyContentSash(IndexCopy, IndexModify)">
Sash @(k + 1)
</button>
</li>
@if (k != IndexSash)
{
int IndexCopy = k;
int IndexModify = IndexSash;
<li>
<button class="dropdown-item" @onclick="() => CopyContentSash(IndexCopy, IndexModify)">
Sash @(k + 1)
</button>
</li>
}
}
}
</ul>
</div>
</ul>
</div>
}
<button class="btn btn-primary btn-sm" type="button" @onclick="() => doEdit(IndexSash)">Edit</button>
</div>
<div class="input-group mb-2 mt-2">
+1 -1
View File
@@ -84,7 +84,7 @@ namespace WebWindowComplex.Compo
{
switch (CurrSashDim.MeasureType)
{
case Json.WindowConst.MeasureTypes.ABSOLUT:
case Json.WindowConst.MeasureTypes.ABSOLUTE:
{
return 2;
}
@@ -0,0 +1,58 @@
<div class="col-sm-6 my-2">
<div class="d-flex justify-content-between align-items-center">
<h6 class="fw-bold">Sash</h6>
</div>
</div>
<div class="card-body py-2">
<div class="row">
<div class="col-sm-6">
<div class="d-flex justify-content-start fs-5 mb-2">
<div class="px-1">
<input class="form-check-input ml-auto" type="checkbox" name="NumTrochetti" checked="@insertQty" @onclick="() => IsCheckedQty()">
</div>
<div class="px-2">
<div class="input-group mb-2">
<span class="input-group-text">Qty element</span>
@if (insertQty)
{
<input type="number" class="form-control" @bind="@ArcElementQty">
}
else
{
<input type="number" class="form-control" disabled>
}
</div>
</div>
</div>
<div class="d-flex justify-content-start fs-5 mb-2">
<div class="px-1">
<input class="form-check-input ml-auto" type="checkbox" name="Estremità" checked="@CurrSashGroup.SashArcElem.bCutEdge" @onclick="() => IsCheckCutEdge()">
</div>
<div class="px-2">
<label class="form-check-label fs-6 text-dark">Taglio estremità</label>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="d-flex justify-content-start fs-5 mb-2">
<div class="px-1">
<input class="form-check-input ml-auto" type="checkbox" name="Sezione" checked="@(!insertQty)" @onclick="() => IsCheckedQty()">
</div>
<div class="px-2">
<div class="input-group mb-2">
<span class="input-group-text">Section</span>
@if (!insertQty)
{
<input type="number" class="form-control" @bind="@ArcSection">
}
else
{
<input type="number" class="form-control" disabled>
}
</div>
</div>
</div>
</div>
</div>
</div>
@@ -0,0 +1,75 @@
using Microsoft.AspNetCore.Components;
using System.Runtime.CompilerServices;
using WebWindowComplex.DTO;
using WebWindowComplex.Models;
namespace WebWindowComplex.Compo
{
public partial class AreaSashArcElem
{
#region Public Properties
[Parameter]
public Sash CurrSashGroup { get; set; } = null!;
[Parameter]
public EventCallback<Sash> EC_UpdatePreview { get; set; }
#endregion Public Properties
#region Protected Properties
protected int ArcElementQty
{
get => CurrSashGroup.SashArcElem.nQty;
set
{
CurrSashGroup.SashArcElem.nQty = value;
_ = EC_UpdatePreview.InvokeAsync(CurrSashGroup);
}
}
protected double ArcSection
{
get => CurrSashGroup.SashArcElem.nSection;
set
{
CurrSashGroup.SashArcElem.nSection = value;
_ = EC_UpdatePreview.InvokeAsync(CurrSashGroup);
}
}
#endregion Protected Properties
#region Protected Methods
protected void IsCheckedQty()
{
insertQty = !insertQty;
}
protected void IsCheckCutEdge()
{
CurrSashGroup.SashArcElem.bCutEdge = !CurrSashGroup.SashArcElem.bCutEdge;
_ = EC_UpdatePreview.InvokeAsync(CurrSashGroup);
}
protected string IsUsedQty()
{
if (insertQty)
return "form-control";
else
return "form-control disabled";
}
#endregion Protected Methods
#region Private Fields
private bool insertQty = false;
#endregion Private Fields
}
}
@@ -0,0 +1,27 @@
<div class="card shadow-sm rounded">
<div class="card-header bg-light bg-opacity-25">
<div class="d-flex justify-content-between align-items-center">
<div class="px-2">
<h5>Arc Element</h5>
</div>
<div class="px-2">
<button class="btn btn-close" @onclick="ReqClose"></button>
</div>
</div>
</div>
<div class="card-body py-2">
<div class="row">
<AreaFrameArcElem CurrFrame="CurrFrame"
EC_UpdatePreview ="UpdatePreview">
</AreaFrameArcElem>
@foreach (var sashGroup in SashList)
{
<hr />
<AreaSashArcElem CurrSashGroup="sashGroup"
EC_UpdatePreview="UpdatePreviewSash">
</AreaSashArcElem>
}
</div>
</div>
</div>
@@ -0,0 +1,60 @@
using Microsoft.AspNetCore.Components;
using WebWindowComplex.DTO;
using WebWindowComplex.Models;
namespace WebWindowComplex.Compo
{
public partial class CardArcElement
{
#region Public Properties
/// <summary>
/// Finestra corrente
/// </summary>
[Parameter]
public Frame CurrFrame { get; set; } = null!;
/// <summary>
/// Lista sash group
/// </summary>
[Parameter]
public List<Sash> SashList { get; set; } = null!;
[Parameter]
public EventCallback<DataUpdateFrame> EC_UpdatePreview { get; set; }
[Parameter]
public EventCallback<bool> EC_ReqClose { get; set; }
#endregion Public Properties
private async Task UpdatePreview()
{
var args = new DataUpdateFrame
{
currFrame = CurrFrame
};
await EC_UpdatePreview.InvokeAsync(args);
}
private async Task UpdatePreviewSash(Sash CurrSashGRoup)
{
var currRec = SashList.First(x => x.GroupId == CurrSashGRoup.GroupId);
if (currRec != null)
{
currRec = CurrSashGRoup;
var args = new DataUpdateFrame
{
currFrame = CurrFrame
};
await EC_UpdatePreview.InvokeAsync(args);
}
}
private void ReqClose()
{
_ = EC_ReqClose.InvokeAsync(true);
}
}
}
+1 -1
View File
@@ -110,7 +110,7 @@
</button>
<ul class="dropdown-menu @(isOpen ? "show" : "")" style="min-width:5rem; max-width:10rem">
<li>
<button class="dropdown-item" @onclick="() => SetMeasureType(MeasureTypes.ABSOLUT)">
<button class="dropdown-item" @onclick="() => SetMeasureType(MeasureTypes.ABSOLUTE)">
Absolute
</button>
</li>
+1 -1
View File
@@ -29,7 +29,7 @@
</button>
<ul class="dropdown-menu @(isOpen ? "show" : "")" style="min-width:5rem; max-width:10rem">
<li>
<button class="dropdown-item" @onclick="() => SetMeasureType(MeasureTypes.ABSOLUT)">
<button class="dropdown-item" @onclick="() => SetMeasureType(MeasureTypes.ABSOLUTE)">
Absolute
</button>
</li>