EChart在SpringMVC框架中的运用,封装折线图和饼图统计图框架

最近把EChart集成到SpringMVC框架中,分享给大家。

大致思路如下:

1.后端封装EChart的折线图和饼图实现EChartOptionUtil.java

public class EChartOptionUtil {
    public static String getLineOption(String showType, String legend,
            String xData, String yData) {
        String str = "{tooltip: {show: true},legend: {data:['"
                + legend
                + "']},xAxis : [{type : 'category',data : ["
                + xData
                + "]}],yAxis : [{type : 'value'}],series : [{'name':'工单数','type':'"
                + showType + "','data':[" + yData + "]}]}";
        return str;
    }

    public static String getPieOption(String title, 
            String xData, String yData) {
        String str = "{title : {text: '"+title+"',x:'center'},";
        str = str
                + "tooltip : {trigger: 'item',formatter: '{a} <br/>{b} : {c} ({d}%)'},";
        str = str
                + "legend: {orient : 'vertical',x : 'left',data:["+xData+"]},";
        str = str
                + "toolbox: {show : true,feature : {mark : {show: true},dataView : {show: true, readOnly: false},magicType : {show: true,type: ['pie', 'funnel'],option: {funnel: {x: '25%',width: '50%',funnelAlign: 'left',max: 1548}}},restore : {show: true},saveAsImage : {show: true}}},";
        str = str + "calculable : true,";
        str = str
                + "series : [{name:'"+title+"',type:'pie',selectedMode: 'single',radius : '55%',center: ['50%', '60%'],data:["+yData+"]";
        str = str + "}]};";
        return str;
    }
}
 

2.SpringMVC框架的Controll中把数据,传入封装的EChartOptionUtil.java中的方法中

            mv.addObject("line",EChartOptionUtil.getLineOption("line","工单", StringUtils.join(titles.toArray(),","), StringUtils.join(datas.toArray(),",")));
            mv.addObject("bar",EChartOptionUtil.getLineOption("bar","工单", StringUtils.join(titles.toArray(),","), StringUtils.join(datas.toArray(),",")));

3.前端展现折线图和饼图

<script src="http://echarts.baidu.com/build/dist/echarts-all.js"></script>    

<div id="line" style="height:400px;display:block;"></div>    
<div id="bar" style="height:400px;display:block;"></div>

    <script type="text/javascript">    document.onreadystatechange = subSomething;//当页面加载状态改变的时候执行这个方法. 
    function subSomething() 
    { 
        if(document.readyState == "complete"){ //当页面加载状态 
            // 基于准备好的dom,初始化echarts图表
            var myChart = echarts.init(document.getElementById('line'));     
            var option = ${line};            
            myChart.setOption(option); 
            
            var myChartbar = echarts.init(document.getElementById('bar'));            
            var optionbar = ${bar};            
            myChartbar.setOption(optionbar); 
        }     
    }     
    </script>    

下载源码,源码是基于MyEclipse的完整项目,导入到MyEclipse,运行就能看到如下效果:

EChart在SpringMVC框架中的运用,封装折线图和饼图统计图框架