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 相关文章推荐
JavaScript脚本性能的优化方法
Feb 02 Javascript
js 小数取整的函数
May 10 Javascript
jQuery中each()方法用法实例
Dec 27 Javascript
javascript最基本的函数汇总
Jun 25 Javascript
JavaScript中判断数据类型的方法总结
May 24 Javascript
利用angularjs1.4制作的简易滑动门效果
Feb 28 Javascript
JS实现按钮添加背景音乐示例代码
Oct 17 Javascript
使用FileReader API创建Vue文件阅读器组件
Apr 03 Javascript
vue中前进刷新、后退缓存用户浏览数据和浏览位置的实例讲解
Sep 21 Javascript
vue swipe自定义组件实现轮播效果
Jul 03 Javascript
一文看懂如何简单实现节流函数和防抖函数
Sep 05 Javascript
一文了解JavaScript用Element Traversal新属性遍历子元素
Nov 27 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
用文本文件制作留言板提示(上)
2006/10/09 PHP
php中sql注入漏洞示例 sql注入漏洞修复
2014/01/24 PHP
PHP Ajax实现无刷新附件上传
2016/08/17 PHP
jQuery示例收集
2010/11/05 Javascript
圣诞节Merry Christmas给博客添加浪漫的下雪效果基于jquery实现
2012/12/27 Javascript
javascript内存管理详细解析
2013/11/11 Javascript
在JavaScript里防止事件函数高频触发和高频调用的方法
2014/09/06 Javascript
node.js下when.js 的异步编程实践
2014/12/03 Javascript
js图片模糊切换显示特效的方法
2015/02/17 Javascript
JQuery限制复选框checkbox可选中个数的方法
2015/04/20 Javascript
js实现键盘上下左右键选择文字并显示在文本框的方法
2015/05/07 Javascript
微信支付如何实现内置浏览器的H5页面支付
2015/09/25 Javascript
AngularJS中处理多个promise的方式
2016/02/02 Javascript
node.js从数据库获取数据
2016/05/08 Javascript
无法获取隐藏元素宽度和高度的解决方案
2017/03/07 Javascript
浅谈JavaScript 代码整洁之道
2018/10/23 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
2018/11/06 Javascript
element-ui组件table实现自定义筛选功能的示例代码
2019/03/15 Javascript
Node.js系列之连接DB的方法(3)
2019/08/30 Javascript
Vue实现省市区三级联动
2020/12/27 Vue.js
使用python调用浏览器并打开一个网址的例子
2014/06/05 Python
Python3 修改默认环境的方法
2019/02/16 Python
pycharm设置python文件模板信息过程图解
2020/03/10 Python
python 如何调用远程接口
2020/09/11 Python
Python使用pycharm导入pymysql教程
2020/09/16 Python
让IE6支持css3,让 IE7、IE8 都支持CSS3
2011/10/09 HTML / CSS
毕业自我鉴定
2013/11/05 职场文书
CNC数控操作工岗位职责
2013/11/19 职场文书
建筑项目策划书
2014/01/13 职场文书
幼儿园教学管理制度
2014/02/04 职场文书
教师党员个人自我剖析材料
2014/09/29 职场文书
工作业绩不及格检讨书
2014/10/28 职场文书
六一儿童节开幕词
2015/01/29 职场文书
2015年社区卫生工作总结
2015/04/21 职场文书
自定义函数实现单词排序并运用于PostgreSQL(实现代码)
2021/04/22 PostgreSQL
SpringBoot全局异常处理方案分享
2022/05/25 Java/Android