ExtJs整合Echarts的示例代码


Posted in Javascript onFebruary 27, 2018

由于Echarts不提供表格功能,想要实现上图下表,需要自己增加一个table标签。

ExtJs整合Echarts

从Echarts官网下载js文件通过import引用 新建一个页面,通过竖直放置的两个div排版,上方预留给Echarts,下方预留给table标签

initPanel : function() {
 if (this.panel) {
  return
 }
 
 var panel = new Ext.Panel({
  id : 'echart',
  html :   '<div id="mainEchart" style="height:50%;border:1px solid #ccc;padding:10px;"></div>'
        + '<div id="mainTable" style="position:relative;text-align:center;padding:10px;">'
        +'<label for="mainTable"><h1>档案调用次数表</h1></label>'
        +'<table id="content-table" border="1" style="width:100%;text-align:center;">'
        + '<tr><th>月份</th><th>调用次数</th></tr>',
  buttonAlign : 'center',
  autoScroll : true,//允许滚动
  bodyStyle : 'overflow-x:hidden; overflow-y:scroll'
  //开启竖直滚动条,关闭水平滚动条
 });
 
 this.panel = panel;
 return this.panel; 
}

Echarts初始化和数据加载

官方声明一次性只能生成一个echarts,定义相关的样式,并且从后台查询数据提供给echarts

initData : function(id, personName, year) {
 this.id = id;
 var div = document.getElementById("mainEchart");
 var myChart = echarts.init(div);
 // myChart.showLoading({
 // text: "图表数据正在努力加载..."
 // });
 this.myChart = myChart;
 // 初始化数据
 var data = [];
 var yearStr = "";
 var flag = false;
 var monthData = [];
 
 var res = QueryData();//调用数据查询,涉及项目名,略
 
 for (var i = 0; i < res.json.body.length; i++) {
  var map = res.json.body[i];
  monthData.push(map.MM);//月份
  data.push(map.DYCS);//调用次数
 }
 var options = {
  arg : {
   id : this.id
  },
  noDataLoadingOption : {
   text : '暂无数据',
   effect : 'bubble',
   effectOption : {
    effect : {
     n : 0
    }
   }
  },
  title : {
   text : personName + "的档案调用情况",
   x : 'west'
  },
  tooltip : {
   trigger : 'axis'
  },
  legend : {
   data : ['调用次数']
  },
  toolbox : {
   show : true,
   feature : {
    mark : {
     show : true
    },
    dataView : {
    //重写dataView
    //在切换视图的时候能够以<table>的形式显示
     show : true,
     readOnly : true,
     optionToContent : function(opt) {
      var axisData = opt.xAxis[0].data;
      var series = opt.series;
      var table = '<table style="width:100%;text-align:center" border="1"><tbody><tr>'
        + '<td>时间</td>'
        + '<td>'
        + series[0].name + '</td>'
        // + '<td>'
        // + series[1].name
        // + '</td>'
        + '</tr>';
      for (var i = 0, l = axisData.length; i < l; i++) {
       table += '<tr>' + '<td>' + axisData[i]
         + '</td>' + '<td>'
         + series[0].data[i] + '</td>'
         // + '<td>' + series[1].data[i]
         // + '</td>'
         + '</tr>';
      }
      table += '</tbody></table>';
      return table;
     }
    },
    magicType : {
     show : true,
     type : ['line', 'bar']
    },
    restore : {
     show : true
    },
    saveAsImage : {
     show : true
    }
   }
  },
  calculable : true,
  xAxis : [{
     type : 'category',
     data : monthData
    }],
  yAxis : [{
     type : 'value',
     splitArea : {
      show : true
     }
    }],
  series : [{
   name : '调用次数',
   type : 'bar',
   barWidth : 35,
   data : data,
   itemStyle : {//修改柱状图的颜色并在顶部显示数值
    normal : {
     color : '#3575a8', 
     label : {
      show : true,
      position : 'top',
      formatter : '{c}'//'{b}\n{c}'
     }
    }
   }
  }]
 };
 myChart.setOption(options, true);
 myChart.on('click', function eConsole(param) {
   });
 this.tableData(personName, monthData, data)
 //表格的加载
}

表格数据的赋值

表格部分就是简单的html赋值,没什么好多讲的,注意拼接完后刷新一下html即可。 代码如下:

tableData : function(personName, monthData, data) {
 // 表格部分
 var html = '<div id="mainTable" style="position:relative;text-align:center;padding:10px;">'
   +'<label for="mainTable"><h1>'
   + personName
   + '档案调用情况表</h1></label>'
   +'<table id="content-table" border="1" style="width: 100%;text-align: center;">'
   + '<tr style="height: 30px;text-align:center;"><th>月份</th><th>调用次数</th></tr>';
 // if(monthData.length != data.length)
 // throw new Error("数据条数不对,请检查!");
 for (var i = 0; i < data.length; i++) {
  html += '<tr style="height: 30px;text-align: center;">'
     +'<td id="data-month-'+i+'">'
     + monthData[i]
     + '</td><td id="data-value-'+i+'">'
     + data[i]
     + '</td></tr>'
 }
 html += '</table></div>';
 document.getElementById('mainTable').innerHTML = html;
}

以上就可完成数据的联动,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
代码精简的可以实现元素圆角的js函数
Jul 21 Javascript
javascript Object与Function使用
Jan 11 Javascript
神奇!js+CSS+DIV实现文字颜色渐变效果
Mar 16 Javascript
js动态添加的DIV中的onclick事件简单实例
Jul 25 Javascript
Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定示例
Jan 22 Javascript
基于LayUI实现前端分页功能的方法
Jul 22 Javascript
javascript字体颜色控件的开发 JS实现字体控制
Nov 27 Javascript
详解ES6中的代理模式——Proxy
Jan 08 Javascript
微信小程序实现人脸识别
May 25 Javascript
JavaScript实现仿Clock ISO时钟
Jun 29 Javascript
vue vant中picker组件的使用
Nov 03 Javascript
三剑客:offset、client和scroll还傻傻分不清?
Dec 04 Javascript
angularJS实现动态添加,删除div方法
Feb 27 #Javascript
浅谈React中的元素、组件、实例和节点
Feb 27 #Javascript
AngularJS动态添加数据并删除的实例
Feb 27 #Javascript
JS严格模式知识点总结
Feb 27 #Javascript
总结js函数相关知识点
Feb 27 #Javascript
详解jQuery中的isPlainObject()使用方法
Feb 27 #jQuery
详解Vue Elememt-UI构建管理后台
Feb 27 #Javascript
You might like
PHP关联数组的10个操作技巧
2013/01/21 PHP
解析php5配置使用pdo
2013/07/03 PHP
微信公众号开发之微信公共平台消息回复类实例
2014/11/14 PHP
php根据日期或时间戳获取星座信息和生肖等信息
2015/10/20 PHP
php项目开发中用到的快速排序算法分析
2016/06/25 PHP
用JavaScript实现UrlEncode和UrlDecode的脚本代码
2008/07/23 Javascript
JavaScript中将一个值转换为字符串的方法分析[译]
2012/09/21 Javascript
Javascript和HTML5利用canvas构建Web五子棋游戏实现算法
2013/07/17 Javascript
jQuery团购倒计时特效实现方法
2015/05/07 Javascript
jQuery实现默认是闭合的FAQ展开效果菜单
2015/09/14 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
2015/12/24 Javascript
AngularJS 如何在控制台进行错误调试
2016/06/07 Javascript
简单实现Vue的observer和watcher
2016/12/21 Javascript
微信小程序 五星评价功能的实现
2017/03/09 Javascript
vue2.0嵌套路由实现豆瓣电影分页功能(附demo)
2017/03/13 Javascript
vue使用axios跨域请求数据问题详解
2017/10/18 Javascript
JS去掉字符串末尾的标点符号及删除最后一个字符的方法
2017/10/24 Javascript
vue-cli项目优化方法- 缩短首屏加载时间
2018/04/01 Javascript
vue项目部署到Apache服务器中遇到的问题解决
2018/08/24 Javascript
使用angular-cli webpack创建多个包的方法
2018/10/16 Javascript
Openlayers测量距离与面积的实现方法
2020/09/25 Javascript
Python中实现结构相似的函数调用方法
2015/03/10 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
2017/12/20 Python
python模块hashlib(加密服务)知识点讲解
2019/11/25 Python
Python远程linux执行命令实现
2020/11/11 Python
Numpy中np.max的用法及np.maximum区别
2020/11/27 Python
Europcar比利时:租车
2019/08/26 全球购物
财务总经理岗位职责
2014/02/16 职场文书
《我不是最弱小的》教学反思
2014/02/23 职场文书
学雷锋志愿服务月活动总结
2014/03/09 职场文书
2014年银行员工工作总结
2014/11/12 职场文书
2015年中秋节演讲稿
2015/03/20 职场文书
增值税发票丢失证明
2015/06/19 职场文书
领导莅临指导欢迎词
2015/09/30 职场文书
2016年第16个全民国防教育日宣传活动总结
2016/04/05 职场文书
MySQL中EXPLAIN语句及用法
2022/05/20 MySQL