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 数组操作代码集锦
Apr 28 Javascript
JQuery实现点击div以外的位置隐藏该div窗口
Sep 13 Javascript
JavaScript中的变量作用域介绍
Dec 31 Javascript
jQuery搜索同辈元素方法
Feb 10 Javascript
jQuery实现可高亮显示的二级CSS菜单效果
Sep 01 Javascript
Javascript技术难点之apply,call与this之间的衔接
Dec 04 Javascript
基于JavaScript实现快速转换文本语言(繁体中文和简体中文)
Mar 07 Javascript
JQuery控制DIV的选取实现方法
Sep 18 Javascript
原生js实现瀑布流布局
Mar 08 Javascript
微信小程序使用npm包的方法步骤
Aug 13 Javascript
JS数组方法reverse()用法实例分析
Jan 18 Javascript
浅谈vue权限管理实现及流程
Apr 23 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在线打包程序源码
2008/07/27 PHP
PHP实现数据分页显示的简单实例
2016/05/26 PHP
PHP全功能无变形图片裁剪操作类与用法示例
2017/01/10 PHP
在 PHP 和 Laravel 中使用 Traits的方法
2019/11/13 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
用Javascript评估用户输入密码的强度(Knockout版)
2011/11/30 Javascript
jQuery版仿Path菜单效果
2011/12/15 Javascript
利用div+jquery自定义滚动条样式的2种方法
2013/07/18 Javascript
javascript 树形导航菜单实例代码
2013/08/13 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
2015/03/03 Javascript
AngularJS模块管理问题的非常规处理方法
2015/04/29 Javascript
jquery通过扩展select控件实现支持enter或focus选择的方法
2015/11/19 Javascript
AngularJs定时器$interval 和 $timeout详解
2017/05/25 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
JavaScript生成指定范围的时间列表
2018/03/19 Javascript
Angular 如何使用第三方库的方法
2018/04/18 Javascript
Vue Cli3 创建项目的方法步骤
2018/10/15 Javascript
Angular事件之不同组件间传递数据的方法
2018/11/15 Javascript
JavaScript学习笔记之DOM操作实例分析
2019/01/08 Javascript
vue中组件的3种使用方式详解
2019/03/23 Javascript
layui动态加载多表头的实例
2019/09/05 Javascript
VUE 解决mode为history页面为空白的问题
2019/11/01 Javascript
vue路由的配置和页面切换详解
2020/09/09 Javascript
pandas 将索引值相加的方法
2018/11/15 Python
python实现logistic分类算法代码
2020/02/28 Python
python数据处理——对pandas进行数据变频或插值实例
2020/04/22 Python
物业经理求职自我评价
2013/09/22 职场文书
毕业证丢失证明
2014/01/15 职场文书
学生宿舍管理制度
2014/01/30 职场文书
捐书倡议书
2014/08/29 职场文书
年检委托书
2014/08/30 职场文书
中华在我心中演讲稿
2014/09/13 职场文书
授权收款委托书
2014/09/23 职场文书
python实现黄金分割法的示例代码
2021/04/28 Python
springboot+VUE实现登录注册
2021/05/27 Vue.js