spring boot动态加载Echart饼状图

本文实例为大家分享了spring boot动态加载Echart饼状图的具体代码,供大家参考,具体内容如下

先从Echart官网上根据需要下载所需Echart版本,在页面中用script标签引入,这些在Echart官网上有教程。官网上有异步加载和更新Echart图,知道了是动态把查询到的结果按格式拼接到饼状图series里面的data中。

尝试一:在springboot的controller中把查询到的结果拼接好放在map里,跳转到页面, 然后在前台javascript中获取完成动态加载,发现饼状图中data是数组类型,后台拼接的String类型传到javascript中,然后在页面中显示会出现单引号解析错误。

尝试二:使用ajax,后台跳转到页面后自动执行ajax查询出饼状图所需的data数据,返回json格式数据

1.饼状图的data数据格式为[{value:235, name:'视频广告'},{value:274, name:'联盟广告'},{value:310, name:'邮件营销'} ]

构造data实体

public class EchartData {
  private String name;
  private Float value;

  public EchartData(){}
  public EchartData(String name, Float value){
    this.value = value;
    this.name = name;
  }
  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public Float getValue() {
    return value;
  }

  public void setValue(Float value) {
    this.value = value;
  }
}

2.后台查询出数据并放入EchartData的list并转化为json数组返回到ajax

@RequestMapping("/dwcb")
  @ResponseBody
  private String dwcb(@RequestParam("scrq1") String scrq1,@RequestParam("scrq2") String scrq2,
            @RequestParam("dwmc") String dwmc,Map map) throws ParseException {
    List lis = new ArrayList();
    List<ViewNyRxhmx> list = rcbService.findSearchRcb(scrq1,scrq2,dwmc);
    //查询出所有的单位信息
    Float total = Float.valueOf(0);
    Float F01 = Float.valueOf(0);
    Float F02 = Float.valueOf(0);
    Float F03 = Float.valueOf(0);
    Float F04 = Float.valueOf(0);
    Float F05 = Float.valueOf(0);
    Float F06 = Float.valueOf(0);
    Float F07 = Float.valueOf(0);
    for(ViewNyRxhmx item : list){

      if(item.getDwdm().equals("F01") && item.getRcb()!=null){
        F01 += Float.valueOf(item.getRcb());
      }
      if(item.getDwdm().equals("F02") && item.getRcb()!=null){
        F02 += Float.valueOf(item.getRcb());
      }
      if(item.getDwdm().equals("F03") && item.getRcb()!=null){
        F03 += Float.valueOf(item.getRcb());
      }
      if(item.getDwdm().equals("F04") && item.getRcb()!=null){
        F04 += Float.valueOf(item.getRcb());
      }
      if(item.getDwdm().equals("F05") && item.getRcb()!=null){
        F05 += Float.valueOf(item.getRcb());
      }
      if(item.getDwdm().equals("F06") && item.getRcb()!=null){
        F06 += Float.valueOf(item.getRcb());
      }
      if(item.getDwdm().equals("F07") && item.getRcb()!=null){
        F07 += Float.valueOf(item.getRcb());
      }
    }

    EchartData echartData1 = new EchartData("第一备煤分厂",F01);
    EchartData echartData2 = new EchartData("第二备煤分厂",F02);
    EchartData echartData3 = new EchartData("第一炼焦分厂",F03);
    EchartData echartData4 = new EchartData("第二炼焦分厂",F04);
    EchartData echartData5 = new EchartData("第三炼焦分厂",F05);
    EchartData echartData6 = new EchartData("能源分厂",F06);
    EchartData echartData7 = new EchartData("综合保障分厂",F07);

    lis.add(echartData1);
    lis.add(echartData2);
    lis.add(echartData3);
    lis.add(echartData4);
    lis.add(echartData5);
    lis.add(echartData6);
    lis.add(echartData7);
    String data = JSON.toJSONString(lis);
    System.out.println("data:"+data);

    return data;
  }

3.  加载饼状图的series中的data直接使用ajax返回的data即可

 $(function () {
  // 基于准备好的dom,初始化echarts图表
  var pie_data = echarts.init(document.getElementById('pie_data'));
  //显示加载动画
  pie_data.showLoading();
  var scrq1 = document.getElementById('scrq1').value;
  var scrq2 = document.getElementById('scrq2').value;
  var dwmc = document.getElementById('dwmc').value;
  $.ajax({
    type:"POST",
    cache:false,
    url:"/dwcb",
    data:{"scrq1": scrq1,"scrq2": scrq2,"dwmc": dwmc},
    dataType: "json",
    success:function (result) {
      $('#mytable').html("<thead><tr><th align='center'>单位名称</th><th align='center'>总成本</th></tr></thead>");

      <!--向表中填写数据-->
      var item;
      $.each(result,function(i,res){
        item = "<tr><td align='center'>"+res['name']+"</td><td align='center'>"+res['value']+"</td></tr>";

        $('#mytable').append(item);
      });
      // $("#mytable").table("refresh");
      //隐藏加载动画
      pie_data.hideLoading();
      pie_data.setOption({
        tooltip : {
          formatter: "{b} : {c} ({d}%)"
        },
        series: [{
          // 根据名字对应到相应的系列
          name: '访问来源',
          type: 'pie',
          radius: '55%',
          data: result
        }]
      })
    }
  })
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • SpringBoot+Echarts实现请求后台数据显示饼状图

    场景 SpringBoot搭建后台获取数据,前端可视化使用echarts的饼状图. Echarts3官网 获取Echarts 从官网下载界面选择你需要的版本下载,根据开发者功能和体积上的需求,我们提供了不同打包的下载,如果你在体积上没有要求,可以直接下载完整版本.开发环境建议下载源代码版本,包含了常见的错误提示和警告. 在 ECharts 的 GitHub 上下载最新的 release 版本,解压出来的文件夹里的 dist 目录里可以找到最新版本的 echarts 库. 通过 npm 获取 ec

  • spring boot动态加载Echart饼状图

    本文实例为大家分享了spring boot动态加载Echart饼状图的具体代码,供大家参考,具体内容如下 先从Echart官网上根据需要下载所需Echart版本,在页面中用script标签引入,这些在Echart官网上有教程.官网上有异步加载和更新Echart图,知道了是动态把查询到的结果按格式拼接到饼状图series里面的data中. 尝试一:在springboot的controller中把查询到的结果拼接好放在map里,跳转到页面, 然后在前台javascript中获取完成动态加载,发现饼状

  • Spring Boot热加载jar实现动态插件的思路

    目录 一.背景 二.热加载 jar 包 三.动态注册 Bean 3.1. 启动时注册 Bean 3.2. 运行时注册 Bean 四.总结 五.完整 demo 一.背景 动态插件化编程是一件很酷的事情,能实现业务功能的 解耦 便于维护,另外也可以提升 可扩展性 随时可以在不停服务器的情况下扩展功能,也具有非常好的 开放性 除了自己的研发人员可以开发功能之外,也能接纳第三方开发商按照规范开发的插件. 常见的动态插件的实现方式有 SPI.OSGI 等方案,由于脱离了 Spring IOC 的管理在插件

  • 详解Spring Boot 配置加载顺序及属性加载顺序

    先给大家介绍下spring boot 配置加载顺序,具体内容如下所示: 使用 Spring Boot 会涉及到各种各样的配置,如开发.测试.线上就至少 3 套配置信息了.Spring Boot 可以轻松的帮助我们使用相同的代码就能使开发.测试.线上环境使用不同的配置. 在 Spring Boot 里面,可以使用以下几种方式来加载配置.本章内容基于 Spring Boot 2.0 进行详解. 1.properties文件: 2.YAML文件: 3.系统环境变量: 4.命令行参数: 等等-- 我们可

  • spring boot启动加载数据原理分析

    实际应用中,我们会有在项目服务启动的时候就去加载一些数据或做一些事情这样的需求. 为了解决这样的问题,spring Boot 为我们提供了一个方法,通过实现接口 CommandLineRunner 来实现. 创建实现接口 CommandLineRunner 的类,通过@Component注解,就可以实现启动时加载数据项.使用@Order 注解来定义执行顺序. IndexStartupRunner.Java类: import org.springframework.boot.CommandLine

  • 详解spring boot容器加载完后执行特定操作

    有时候我们需要在spring boot容器启动并加载完后,开一些线程或者一些程序来干某些事情.这时候我们需要配置ContextRefreshedEvent事件来实现我们要做的事情 1.ApplicationStartup类 public class ApplicationStartup implements ApplicationListener<ContextRefreshedEvent>{ public void onApplicationEvent(ContextRefreshedEve

  • Spring Boot容器加载时执行特定操作(推荐)

    某些情况下我们需要在 Spring Boot 容器启动加载完后执行一些操作,此时可以通过实现 ApplicationListener<E extends ApplicationEvent> 接口,并指定相应事件来执行操作,例如启动某些自定义守护线程 ApplicationContextEvent 是由 ApplicationContext 引发的事件基类,它有几个实现类: ContextRefreshedEvent :ApplicationContext 容器初始化或者刷新时触发该事件,执行一

  • 在Spring Boot中加载XML配置的完整步骤

    开篇 在SpringBoot中我们通常都是基于注解来开发的,实话说其实这个功能比较鸡肋,但是,SpringBoot中还是能做到的.所以用不用是一回事,会不会又是另外一回事. 涛锅锅在个人能力能掌握的范围之内,一般是会得越多越好,都是细小的积累,发生质的改变,所以今天和小伙伴们一起分享一下. 实践 1.首先我们新建一个SpringBoot Project ,工程名为 xml 2.添加web依赖,点击Finish完成构建 3.我们新建一个类 SayHello 不做任何配置 package org.t

  • Echarts动态加载多条折线图的实现代码

    背景:动态加载多条折线图,折线图条数不确定 页面效果: 页面代码 //气象数据 function serchQx(beginTime, endTime, str, parameter) { $("#rr").html("");//将循环拼接的字符串插入下拉列表 var t = $("#imageParameter").val(); $ .ajax({ type : "POST", data : { "str"

  • Spring Boot 启动加载数据 CommandLineRunner的使用

    实际应用中,我们会有在项目服务启动的时候就去加载一些数据或做一些事情这样的需求. 为了解决这样的问题,spring Boot 为我们提供了一个方法,通过实现接口 CommandLineRunner 来实现. 很简单,只需要一个类就可以,无需其他配置. 创建实现接口 CommandLineRunner 的类 package org.springboot.sample.runner; import org.springframework.boot.CommandLineRunner; import

  • 谈谈Spring Boot 数据源加载及其多数据源简单实现(小结)

    业务需求 提供所有微服务数据源的图形化维护功能 代码生成可以根据选择的数据源加载表等源信息 数据源管理要支持动态配置,实时生效 附录效果图 实现思路 本文提供方法仅供类似简单业务场景,在生产环境和复杂的业务场景 请使用分库分表的中间件(例如mycat)或者框架 sharding-sphere (一直在用)等 先来看Spring 默认的数据源注入策略,如下代码默认的事务管理器在初始化时回去加载数据源实现.这里就是我们动态数据源的入口 // 默认的事务管理器 ppublic class DataSo

随机推荐