Files
Samuele Locatelli a42c62929e Update lib bootstrap
2024-02-23 16:37:29 +01:00

87 lines
2.1 KiB
C#

using Microsoft.AspNetCore.Components;
using Microsoft.JSInterop;
using System.Drawing;
using EgwCoreLib.Razor.Data;
using System.Net.NetworkInformation;
namespace EgwCoreLib.Razor
{
public partial class Chart
{
[Inject]
protected IJSRuntime JSR { get; set; } = null!;
#region Public Enums
public enum ChartType
{
Pie,
Bar,
doughnut
}
#endregion Public Enums
#region Public Properties
[Parameter]
public string[]? BackgroundColor { get; set; }
[Parameter]
public string[]? Data { get; set; }
[Parameter]
public string Id { get; set; } = "MyChart";
[Parameter]
public string[]? Labels { get; set; }
[Parameter]
public ChartType Type { get; set; }
#endregion Public Properties
#region Protected Methods
protected async Task InitDefault()
{
// Here we create an anonymous type with all the options that need to be sent to Chart.js
var config = new
{
type = Type.ToString().ToLower(),
options = new
{
responsive = true,
scales = new
{
yAxes = new
{
suggestedMin = 0
}
},
Animation = false
},
data = new
{
datasets = new[]
{
new { data = Data, backgroundColor = BackgroundColor}
},
labels = Labels
}
};
module = await JSR.InvokeAsync<IJSObjectReference>("import", "./_content/EgwCoreLib.Razor/Chart.razor.js");
await JSR.InvokeVoidAsync("setup", Id, config);
}
private IJSObjectReference? module;
protected override async Task OnAfterRenderAsync(bool firstRender)
{
await InitDefault();
}
#endregion Protected Methods
}
}