pax.BlazorChartJs
0.2.0
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package pax.BlazorChartJs --version 0.2.0
NuGet\Install-Package pax.BlazorChartJs -Version 0.2.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="pax.BlazorChartJs" Version="0.2.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add pax.BlazorChartJs --version 0.2.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: pax.BlazorChartJs, 0.2.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install pax.BlazorChartJs as a Cake Addin #addin nuget:?package=pax.BlazorChartJs&version=0.2.0 // Install pax.BlazorChartJs as a Cake Tool #tool nuget:?package=pax.BlazorChartJs&version=0.2.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Blazor dotnet wrapper library for ChartJs (v3.9.1)
Getting started
Prerequisites
dotnet 6
Installation
dotnet add package pax.BlazorChartJs
Program.cs:
builder.Services.AddChartJs();
Usage
Sample Project pax.BlazorChartJs.sample
<div class="btn-group">
<button type="button" class="btn btn-primary" @onclick="Randomize">Randomize</button>
<button type="button" class="btn btn-primary" @onclick="AddDataset">Add Dataset</button>
<button type="button" class="btn btn-primary" @onclick="AddData">Add Data</button>
<button type="button" class="btn btn-primary" @onclick="RemoveLastDataset">Remove Dataset</button>
<button type="button" class="btn btn-primary" @onclick="RemoveLastDataFromDatasets">Remove Data</button>
</div>
<div class="w-75">
<ChartComponent @ref="chartComponent" OnEventTriggered="LabelClicked" ChartJsConfig="chartJsConfig"></ChartComponent>
</div>
<div>
@if (!String.IsNullOrEmpty(labelClicked))
{
<p>
Label clicked: @labelClicked
</p>
}
</div>
@code {
ChartComponent? chartComponent;
ChartJsConfig chartJsConfig = null!;
private string? labelClicked;
protected override void OnInitialized()
{
chartJsConfig = new()
{
Type = ChartType.bar,
Data = new ChartJsData()
{
Labels = new List<string>()
{
"Red", "Blue", "Yellow", "Green", "Purple", "Orange"
},
Datasets = new List<object>()
{
new BarDataset()
{
Label = "# of Votes",
Data = new List<object>() { 12, 19, 3, 5, 2, 3 },
BackgroundColor = new List<string>()
{
"rgba(255, 99, 132, 0.2)",
"rgba(54, 162, 235, 0.2)",
"rgba(255, 206, 86, 0.2)",
"rgba(75, 192, 192, 0.2)",
"rgba(153, 102, 255, 0.2)",
"rgba(255, 159, 64, 0.2)",
},
BorderColor = new List<string>()
{
"rgba(255, 99, 132, 1)",
"rgba(54, 162, 235, 1)",
"rgba(255, 206, 86, 1)",
"rgba(75, 192, 192, 1)",
"rgba(153, 102, 255, 1)",
"rgba(255, 159, 64, 1)",
},
BorderWidth = 1
}
}
},
Options = new ChartJsOptions()
{
Responsive = true,
MaintainAspectRatio = true,
OnClickEvent = true,
Plugins = new Plugins()
{
Labels = new LabelsConfig()
{
Render = "image"
}
},
Scales = new ChartJsOptionsScales()
{
Y = new LinearAxis()
{
SuggestedMax = 25
}
}
}
};
base.OnInitialized();
}
private void LabelClicked(ChartJsEvent chartJsEvent)
{
var data = chartJsEvent.EventData as LabelEventData;
labelClicked = data?.Label;
}
private void AddData()
{
var dataAddEventArgs = ChartUtils.GetRandomData(chartJsConfig.Data.Datasets.Count);
chartJsConfig.AddData(dataAddEventArgs.Label, dataAddEventArgs.Data, dataAddEventArgs.BackgroundColors, dataAddEventArgs.BorderColors);
}
private void Randomize()
{
var data = ChartUtils.GetRandomData(chartJsConfig.Data.Datasets.Count, chartJsConfig.Data.Labels.Count, -100, 100);
Dictionary<object, IList<object>> chartData = new();
for (int i = 0; i < chartJsConfig.Data.Datasets.Count; i++)
{
var dataset = chartJsConfig.Data.Datasets.ElementAt(i);
var dataList = data.ElementAt(i);
chartData.Add(dataset, dataList);
}
chartJsConfig.SetData(chartData);
}
private void AddDataset()
{
var dataset = ChartUtils.GetRandomDataset(chartJsConfig.Type == null ? ChartType.bar : chartJsConfig.Type.Value, chartJsConfig.Data.Datasets.Count + 1, chartJsConfig.Data.Labels.Count);
chartJsConfig.AddDataset(dataset);
}
private void RemoveLastDataset()
{
if (chartJsConfig.Data.Datasets.Any())
{
chartJsConfig.RemoveDataset(chartJsConfig.Data.Datasets.Last());
}
}
private void RemoveLastDataFromDatasets()
{
chartJsConfig.RemoveData();
}
Supported Plugins
- chartjs-plugin-datalabels
- chartjs-plugin-labels
- ArbitraryLines (YouTube)
- Custom Plugins Sample
Known Limitations / ToDo
- Callbacks
- Objects to Interfaces & System.Text.Json
ChangeLog
<details open="open"><summary>v0.2.0</summary>
- Events
- Custom Plugin Sample
- ChartJs API calls
</details>
<details><summary>v0.1.3</summary>
- Nuget Package
</details>
<details><summary>v0.1.2</summary>
- RadarChart
</details>
<details><summary>v0.1.1</summary>
- Readme
</details>
<details><summary>v0.1.0</summary>
- Init
</details>
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net6.0
- Microsoft.AspNetCore.Components.Web (>= 6.0.8)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated | |
---|---|---|---|
0.8.5 | 256 | 10/19/2024 | |
0.8.4 | 428 | 8/24/2024 | |
0.8.3 | 1,626 | 3/4/2024 | |
0.8.3-rc1 | 89 | 2/29/2024 | |
0.8.2 | 1,198 | 12/6/2023 | |
0.8.1 | 207 | 11/28/2023 | |
0.8.0 | 143 | 11/28/2023 | |
0.8.0-rc2.0 | 82 | 11/15/2023 | |
0.8.0-rc1.0 | 91 | 10/17/2023 | |
0.6.3 | 220 | 11/28/2023 | |
0.6.2 | 139 | 11/28/2023 | |
0.6.1 | 1,489 | 9/11/2023 | |
0.6.0 | 600 | 8/28/2023 | |
0.5.2 | 142 | 8/25/2023 | |
0.5.1 | 1,470 | 4/28/2023 | |
0.5.0 | 4,059 | 2/4/2023 | |
0.5.0-rc2.0 | 109 | 2/3/2023 | |
0.5.0-rc1.0 | 105 | 2/3/2023 | |
0.4.1 | 635 | 1/8/2023 | |
0.4.0 | 640 | 11/4/2022 | |
0.3.5 | 492 | 10/13/2022 | |
0.3.4 | 1,557 | 9/30/2022 | |
0.3.3 | 419 | 9/28/2022 | |
0.3.2 | 460 | 9/15/2022 | |
0.3.1 | 405 | 9/10/2022 | |
0.3.0 | 408 | 9/6/2022 | |
0.2.0 | 407 | 9/5/2022 | |
0.1.3 | 421 | 8/31/2022 |