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 相关文章推荐
Extjs列表详细信息窗口新建后自动加载解决方法
Apr 02 Javascript
javascript修改表格背景色实例代码分享
Dec 10 Javascript
JS调试必备的5个debug技巧
Mar 07 Javascript
JavaScript实现级联菜单的方法
Jun 29 Javascript
javascript性能优化之DOM交互操作实例分析
Dec 12 Javascript
JavaScript事件代理和委托详解
Apr 08 Javascript
JavaScript必知必会(三) String .的方法来自何方
Jun 08 Javascript
JS弹出窗口的运用与技巧大全
Nov 01 Javascript
Bootstrap响应式导航由768px变成992px的实现代码
Jun 15 Javascript
浅析Vue中method与computed的区别
Mar 06 Javascript
微信小程序自定义多列选择器使用详解
Jun 21 Javascript
解决Layui数据表格显示无数据提示的问题
Nov 14 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
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
2006/12/06 PHP
PHP自定义序列化接口Serializable用法分析
2017/12/29 PHP
PHP一个简单的无需刷新爬虫
2019/01/05 PHP
Laravel第三方包报class not found的解决方法
2019/10/13 PHP
围观tangram js库
2010/12/28 Javascript
Extjs中通过Tree加载右侧TabPanel具体实现
2013/05/05 Javascript
DEDECMS如何为文章添加HOT NEW标志图片
2015/08/14 Javascript
详解JavaScript的表达式与运算符
2015/11/30 Javascript
JavaScript正则表达式匹配 div  style标签
2016/03/15 Javascript
js+css3实现旋转效果
2017/01/20 Javascript
jquery拼接ajax 的json和字符串拼接的方法
2017/03/11 Javascript
Three.js获取鼠标点击的三维坐标示例代码
2017/03/24 Javascript
详谈jQuery.load()和Jsp的include的区别
2017/04/12 jQuery
Vue实现动态响应数据变化
2017/04/28 Javascript
jquery DataTable实现前后台动态分页
2017/06/17 jQuery
Vue formData实现图片上传
2019/08/20 Javascript
原生javascript中this几种常见用法总结
2020/02/24 Javascript
使用JavaScript实现贪吃蛇游戏
2020/09/29 Javascript
Python获取服务器信息的最简单实现方法
2015/03/05 Python
python导出hive数据表的schema实例代码
2018/01/22 Python
Odoo中如何生成唯一不重复的序列号详解
2018/02/10 Python
Appium Python自动化测试之环境搭建的步骤
2019/01/23 Python
PyQt5 实现字体大小自适应分辨率的方法
2019/06/18 Python
python3发送邮件需要经过代理服务器的示例代码
2019/07/25 Python
django2.2安装错误最全的解决方案(小结)
2019/09/24 Python
利用matplotlib为图片上添加触发事件进行交互
2020/04/23 Python
美国时尚孕妇装品牌:A Pea in the Pod
2017/07/16 全球购物
酒店应聘自荐信
2013/11/09 职场文书
医学专业毕业生个人的求职信
2013/12/04 职场文书
大学生优秀团员事迹材料
2014/01/30 职场文书
工作决心书
2014/03/11 职场文书
细节决定成败演讲稿
2014/05/12 职场文书
2014教师教育实践活动对照检查材料思想汇报
2014/09/21 职场文书
2014年新教师工作总结
2014/11/08 职场文书
MySQL创建管理LIST分区
2022/04/13 MySQL
MySQL数据库事务的四大特性
2022/04/20 MySQL