1 Star 0 Fork 48

Raven / EChartsAnnotation

forked from zaoying / EChartsAnnotation 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

ECharts的Java注解框架 EChartsAnnotation

用原生Java注解来映射ECharts的Option类,提供Annotation到JSON的转换功能。

思路 How it works

1在后台使用Annotation来标注Bean类
2注解处理器转换成JSON树
3使用JSON系列化工具包(fastjson/gson)输出到前端页面

注解 Annotation

基于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且不等于默认值的情况下,注解处理器会优先输出被注解元素的值。

注解处理器 AnnotationProcessor

######注解处理器专用的注解:
SingleChartDuplexChart用来标记需要被转换成JSON的Java Bean类,
这两个注解不同之处在于处理seriesdataZoomvisualMap下面的注解时,
同一个类多次同个注解文件,前者把重复出现的注解合并处理;
后者通过AddSeriesAddDataZoomAddVisualMap三种注解提取被SingleChart标记的Java文件中的
seriesdataZoomvisualmap,并添加到当前被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

如何使用 Get Started

phraseSingleChartphraseDuplexChart已合并到parseChart,不用再区分两者。
1添加EChartsAnnotation到项目
maven

<dependency>
  <groupId>cn.edu.gdut.zaoying</groupId>
  <artifactId>EChartsAnnotation</artifactId>
  <version>1.0.1</version>
  <type>pom</type>
</dependency>

gradle

compile('cn.edu.gdut.zaoying:EChartsAnnotation:1.0.1')

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调用图表处理器

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.parseChart(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.parseChart(new CombinedChart("组合图表"));
        System.out.print(JSON.toJSONString(json));
    }
}

6使用继承 ######编写view.json

{
  "title":{"text":"组合图表"},
  "backgroundColor":"#fff"
}

######修改CombinedChart.java

@DuplexChart(extendFrom = "view.json")//view.json放在同一个目录,不然要加上完整路径
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;//使用view.json提供的值
        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});
    }
}

######调用图表处理器

public class EChartsTest {
    public static void main(String[] args) {
        Object json=EChartsAnnotationProcessor.parseChart(new CombinedChart("组合图表"));
        System.out.print(JSON.toJSONString(json));
    }
}

7导出json文件
导出json文件供其它图表继承

@DuplexChart(exportTo = "templates/view.json")//调用图表处理器解析的同时,导出json文件
@SingleChart(exportTo = "templates/view.json")//不建议和DuplexChart注解在同一个类中使用

##写在最后 项目进度已基本完成,后期除了bug fix,不会再有大修改。请放心集成! 另外,会推出对应taglib项目,可以尽量不让你写javascript就尽量不让你写!

The MIT License (MIT) Copyright (c) 2016 zaoying Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

ECharts的Java注解框架:用原生Java注解来映射ECharts的Option类,提供Annotation到JSON的转换功能。 展开 收起
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/lzx2005/EChartsAnnotation.git
git@gitee.com:lzx2005/EChartsAnnotation.git
lzx2005
EChartsAnnotation
EChartsAnnotation
master

搜索帮助

14c37bed 8189591 565d56ea 8189591