RobotNet/RobotNet.WebApp/Charts/Core/RobotNetChart.cs
2025-10-15 15:15:53 +07:00

80 lines
2.2 KiB
C#

using Microsoft.AspNetCore.Components;
using RobotNet.WebApp.Charts.Enums;
using System.Globalization;
namespace RobotNet.WebApp.Charts.Core;
public class RobotNetChart : BlazorComponentBase, IDisposable, IAsyncDisposable
{
internal ChartType chartType;
/// <inheritdoc />
public new virtual void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
/// <inheritdoc />
public new virtual async ValueTask DisposeAsync()
{
await DisposeAsyncCore(true);
Dispose(false);
GC.SuppressFinalize(this);
}
private string GetChartContainerSizeAsStyle()
{
var style = "";
if (Width > 0)
style += $"width:{Width.Value.ToString(CultureInfo.InvariantCulture)}{WidthUnit.ToCssString()};";
if (Height > 0)
style += $"height:{Height.Value.ToString(CultureInfo.InvariantCulture)}{HeightUnit.ToCssString()};";
return style;
}
internal string ContainerStyle => GetChartContainerSizeAsStyle();
/// <summary>
/// Gets or sets chart container height.
/// The default unit of measure is <see cref="Unit.Px" />.
/// To change the unit of measure see <see cref="HeightUnit" />.
/// </summary>
/// <remarks>
/// Default value is null.
/// </remarks>
[Parameter]
public int? Height { get; set; }
/// <summary>
/// Gets or sets chart container height unit of measure.
/// </summary>
/// <remarks>
/// Default value is <see cref="Unit.Px" />.
/// </remarks>
[Parameter]
public Unit HeightUnit { get; set; } = Unit.Px;
/// <summary>
/// Get or sets chart container width.
/// The default unit of measure is <see cref="Unit.Px" />.
/// To change the unit of measure see <see cref="WidthUnit" />.
/// </summary>
/// <remarks>
/// Default value is null.
/// </remarks>
[Parameter]
public int? Width { get; set; }
/// <summary>
/// Gets or sets chart container width unit of measure.
/// </summary>
/// <remarks>
/// Default value is <see cref="Unit.Px" />.
/// </remarks>
[Parameter]
public Unit WidthUnit { get; set; } = Unit.Px;
}