# TagEChartsBlazor
**Repository Path**: draculakkk/TagEChartsBlazor
## Basic Information
- **Project Name**: TagEChartsBlazor
- **Description**: 一款基于ECharts的blazor组件,主要以层级标签的方式来使用,所有属性说明可参考echarts官网api说明文档,版本5.1.1
- **Primary Language**: C#
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 3
- **Forks**: 1
- **Created**: 2021-06-02
- **Last Updated**: 2021-11-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 一款基于ECharts的blazor组件,主要以层级标签的方式来使用,所有属性说明可参考echarts官网api说明文档,版本5.1.1
## 简要说明:
### 1:nuget 搜索 TagEChartsBlazor安装类库
### 2:Program.cs(WebAssembly)或Startup.cs(BlazorServer)注入services.AddECharts();
### 3:wwwroot/index.html(WebAssembly)或_Host.cshtml(BlazorServer)添加
```html
```
### 4:_Imports.razor 添加 @using TagEChartsBlazor.Components
### 5:标签的层级结构和顺序同echarts option对象完全匹配,具体可参考 [echarts官方配置项](https://echarts.apache.org/zh/option.html)
### 6:所有标签属性在VS中自动识别,并自带官方中文注释
### 7:由于echarts部分属性属于混合类型(如既可以是字符串也可以是数组甚至是函数),这部分属性在组件中会用dynamic类型替代,可根据具体echarts中的类型设置对应C#类型
## 顶层ECharts标签自带的属性说明:
|属性|说明|
|:---|:---|
|Style|标签style样式|
|ClassName|类名|
|AutoRender|图表上的任何属性有变动会自动刷新图表,默认关闭|
|debugModel|启用后浏览器控台会输出图表的option项|
|OnRenderComplete|OnAfterRender执行完的委托|
|OnRenderBefore|OnAfterRender执行前的委托|
|theme|配置当前echarts图表的主题|
|RefreshForce()|强制刷新当前echarts图表的实例方法|
### 示例1:标准用法,所有标签支持razor动态控制,目前所有formatter属性如需设置函数,需要填写js字符串
```razor
@foreach (var item in new[] { "衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子" })
{
}
```
### 示例2:data属性支持匿名对象,也可以使用Data标签显示创建
```razor
```
### 示例3:顶层ECharts标签支持鼠标委托事件,极少对象没有标签,需要用类生成,如此例的colorStops渐变类
```razor
```
### 示例4:演示使用主题和外部资源,由于异步加载可能会执行2次render,且echarts会默认缓存首次加载信息,这里手动控制了外部资源加载完再输出标签,EChartsHelper对应echarts的全局类
```razor
@inject EChartsHelper echartHelper
@inject HttpClient Http
@if (initSuccess)
{
}
@code {
private bool initSuccess;
protected async override Task OnInitializedAsync()
{
string mapsvg = await Http.GetStringAsync("asset/Veins_Medical_Diagram_clip_art.svg");
await echartHelper.RegisterMapAsync(new RegisterMapOption("organ_diagram", opt: new MapOpt(svg: mapsvg)));
string json = await Http.GetStringAsync("json/chalk.json");
await echartHelper.RegisterThemeAsync("wyy", json);
initSuccess = true;
}
}
```