Files
2023-06-29 09:59:11 +02:00

208 lines
5.0 KiB
C#

using Microsoft.AspNetCore.Components;
namespace WebDoorCreator.UI.Components.SvgComp
{
public partial class HwSvgObj
{
#region Public Enums
/// <summary>
/// Enum delle azioni associate al controllo
/// </summary>
public enum ActionReq
{
Minus,
Plus,
Select
}
#endregion Public Enums
#region Public Properties
[Parameter]
public EventCallback<ActionReq> EC_ExeFunct { get; set; }
/// <summary>
/// Path img da mostrare
/// </summary>
[Parameter]
public string ImagePath { get; set; } = "";
[Parameter]
public int ItemCount { get; set; } = 0;
[Parameter]
public string ItemName { get; set; } = "";
[Parameter]
public string LineColor { get; set; } = "#00838F";
[Parameter]
public int LineWidth { get; set; } = 8;
[Parameter]
public int ObjH { get; set; } = 204;
[Parameter]
public string ObjId { get; set; } = "0";
[Parameter]
public int ObjW { get; set; } = 450;
[Parameter]
public string PlusColor { get; set; } = "#69FF69";
[Parameter]
public bool ShowPlus { get; set; } = false;
[Parameter]
public bool Disabled { get; set; } = false;
[Parameter]
public string TextStyle { get; set; } = "font-size: 2.5em;";
[Parameter]
public string TextCss { get; set; } = "";
[Parameter]
public string PlusOpacity { get; set; } = "30%";
[Parameter]
public string BgColorFrom { get; set; } = "#AFCFD1";
[Parameter]
public string BgColorTo { get; set; } = "#92B2C4";
[Parameter]
public bool ImageBig { get; set; } = false;
#endregion Public Properties
#region Protected Properties
protected string cardClass
{
get => ItemCount > 0 ? "bg-primary text-light" : "bg-inactive";
}
protected CircleData CircleImg { get; set; } = null!;
protected CircleData CircleLine { get; set; } = null!;
protected int LineDist { get; set; } = 20;
protected int TextAreaHeight
{
get => (ObjH / 2 * 110 / 100);
}
protected int TextAreaWidth
{
get => ObjW - (ObjH * 90 / 100);
}
#endregion Protected Properties
#region Protected Methods
/// <summary>
/// Invia evento principale
/// </summary>
/// <param name="action">Azione richiesta</param>
/// <param name="forceSend">
/// se true manda sempre EC_ExeFunct, altrimenti NON invia se showPlus attivo...
/// </param>
protected void doExecFunc(ActionReq action, bool forceSend)
{
// invia la chiamata richiesta secondo configurazione...
if (forceSend || !ShowPlus)
{
EC_ExeFunct.InvokeAsync(action);
}
}
protected override void OnParametersSet()
{
setupGraphParams();
}
#endregion Protected Methods
#region Protected Classes
protected class CircleData
{
#region Public Constructors
public CircleData(int px, int py, int radius)
{
cx = px;
cy = py;
rad = radius;
}
#endregion Public Constructors
#region Public Properties
public int cx { get; set; } = 0;
public int cy { get; set; } = 0;
public int rad { get; set; } = 100;
#endregion Public Properties
}
protected class LineData
{
#region Public Constructors
public LineData(PointData pA, PointData pB)
{
p1 = pA;
p2 = pB;
}
#endregion Public Constructors
#region Public Properties
public PointData p1 { get; set; }
public PointData p2 { get; set; }
#endregion Public Properties
}
protected class PointData
{
#region Public Constructors
public PointData(int valx, int valy)
{
px = valx;
py = valy;
}
#endregion Public Constructors
#region Public Properties
public int px { get; set; } = 0;
public int py { get; set; } = 0;
#endregion Public Properties
}
#endregion Protected Classes
#region Private Methods
private void setupGraphParams()
{
// calcolo i dati del cerchi...
CircleLine = new CircleData(ObjW - LineWidth - (ObjH / 2), ObjH / 2, (ObjH - LineWidth) / 2);
CircleImg = new CircleData(ObjW - LineWidth - (ObjH / 2), ObjH / 2, (ObjH - 2 * LineWidth) / 2);
LineDist = ObjH / 4;
}
#endregion Private Methods
}
}