同步操作将从 zaoying/EChartsAnnotation 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
用原生Java注解来映射ECharts的Option
类,提供Annotation到JSON
的转换功能。
比ECharts Java
更高效、更快捷!扩展性更强!
1
在后台使用Annotation来标注Bean类
2
注解处理器转换成JSON树
3
使用JSON系列化工具包(fastjson/gson)输出到前端页面
基于ECharts3.0制作
Option定义
从上述URL得到JSON文件总体上可以解析成树,除了series、dataZoom和visualMap三个节点需要特殊处理,
其他非叶子节点均可映射成文件系统的文件夹,而叶子节点则映射成Java源文件即注解文件。
总共有3700+个注解!这里生成的注解只能用于标记Bean类的域Field
根据JSON树的叶子节点的Type属性中的不同类型,3700多注解分成6种不同类型:
JS类型 | Java类型 | 默认值 | 文件名后缀 | 备注 |
---|---|---|---|---|
boolean | boolean | false | Boolean | 布尔类型 |
Color | int | 0 | Hex | Web颜色映射成Java整型,由于常用16进制表示所以后缀是Hex |
number | Number | 0 | Number | 抽象类Number是int、double等基本类型的父类,一律转为double |
string | String | "" | String | 字符串类型 |
Array | List | 无 | Array | 数组类型一律转成泛型List |
Function | Object | 无 | Function | 由于Java不支持函数类型,所以需要重载Object的toString方法输出字符串的“函数” |
* | Object | 无 | All | 参考Function类型 |
按注解的参数个数分,可以分为两种:
######标记注解
标记注解没有参数。如果被标记的元素为null
或者等于默认值,注解处理器将不会输出任何东西
######单值注解
单值注解只有一个参数。该参数的类型跟注解名件名末尾的单词有关。
由于许多叶子节点有多种类型,所以一个叶子节点可能生成多个注解,但是注解处理器把这些注解当作同一个注解输出。
在单值注解的参数不为空和被标记的元素不为null
且不等于默认值的情况下,注解处理器会优先输出被注解元素的值。
######注解处理器专用的注解:
SingleChart
和DuplexChart
用来标记需要被转换成JSON的Java Bean类,
这两个注解不同之处在于处理series
、dataZoom
和visualMap
下面的注解时,
同一个类多次同个注解文件,前者把重复出现的注解合并处理;
后者通过AddSeries
、AddDataZoom
和AddVisualMap
三种注解提取被SingleChart
标记的Java文件中的
series
、dataZoom
和visualmap
,并添加到当前被DouplexChart
标记的文件中。
######SingleChart
参数 exportTo
默认值是"",不等于默认值时向本地磁盘写入"exportTo".json
参数 extendsFrom
默认值是"",不等于默认值时,将继承自"extendsFrom.json"
######DupelxChart
参数 exportTo
默认值是"",不等于默认值时向本地磁盘写入"exportTo".json
参数 extendsFrom
默认值是"",不等于默认值时,将继承自"extendsFrom.json"
######AddSeries
只能用于DuplexChart
的域Field
,若域不为null且域的类源文件被SingleChart
注解标记,
将会提取源文件中series
下的注解并添加到DuplexChart
######AddDataZoom
只能用于DuplexChart
的域Field
,若域不为null且域的类源文件被SingleChart
注解标记,
将会提取源文件中dataZoom
下的注解并添加到DuplexChart
######AddVisualMap
只能用于DuplexChart
的域Field
,若域不为null且域的类源文件被SingleChart
注解标记,
将会提取源文件中visualMap
下的注解并添加到DuplexChart
1
添加EChartsAnnotation到项目
2
增加LineChart折线图
import cn.edu.gdut.zaoying.Option.series.line.DataArray;
import cn.edu.gdut.zaoying.Option.series.line.NameString;
import cn.edu.gdut.zaoying.SingleChart;
@SingleChart(exportTo = "lineChart")
public class LineChart {
@NameString
String name;
@DataArray
double[] data;
}
3
调用简单图表处理器
import cn.edu.gdut.zaoying.Charts.CombinedChart;
public class EChartsTest {
public static void main(String[] args) {
LineChart lineChart=new LineChart();
lineChart.name="线性表一";
lineChart.data=new double[]{1,2,3,4};
Object json=EChartsAnnotationProcessor.phraseSingleChart(lineChart);
System.out.print(JSON.toJSONString(json));
}
}
4
编写更复杂的组合图表
####编写折线图二
import cn.edu.gdut.zaoying.Option.series.line.DataArray;
import cn.edu.gdut.zaoying.Option.series.line.NameString;
import cn.edu.gdut.zaoying.SingleChart;
@SingleChart
public class Line2Chart {
@NameString
String name;
@DataArray
double[] data;
}
####编写条形图
import cn.edu.gdut.zaoying.Option.series.bar.DataArray;
import cn.edu.gdut.zaoying.Option.series.bar.NameString;
import cn.edu.gdut.zaoying.SingleChart;
@SingleChart
public class BarChart {
@NameString
String name;
@DataArray
double[] data;
}
####CombinedChart组合图表
@DuplexChart
public class CombinedChart {
@TextString
String title;
@BackgroundColorHex(value = 0xfff)
int backgroundColor;
@AddSeries
LineChart lineChart;
@AddSeries
Line2Chart line2Chart;
@AddSeries
BarChart barChart;
public CombinedChart(String title) {
this.title = title;
lineChart = new LineChart();
lineChart.setName("折线图");
lineChart.setData(new double[]{1,2,3,4});
line2Chart = new Line2Chart();
line2Chart.setName("折线图二");
line2Chart.setData(new double[]{1,2,3,4});
barChart = new BarChart();
barChart.setName("条形图");
barChart.setData(new double[]{5,6,7,8});
}
}
5
调用组合图表处理器
public class EChartsTest {
public static void main(String[] args) {
Object json=EChartsAnnotationProcessor.phraseDuplexChart(new CombinedChart("组合图表"));
System.out.print(JSON.toJSONString(json));
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。