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 相关文章推荐
Open and Print a Word Document
Jun 15 Javascript
基于Arcgis for javascript实现百度地图ABCD marker的效果
Sep 12 Javascript
AngularJs中route的使用方法和配置
Feb 04 Javascript
ES6新特性八:async函数用法实例详解
Apr 21 Javascript
Vue中img的src属性绑定与static文件夹实例
May 18 Javascript
vue+webpack实现异步组件加载的方法
Feb 03 Javascript
详解vue-cli项目中的proxyTable跨域问题小结
Feb 09 Javascript
jQuery插件Validation表单验证详解
May 26 jQuery
详解keep-alive + vuex 让缓存的页面灵活起来
Apr 19 Javascript
更强大的vue ssr实现预取数据的方式
Jul 19 Javascript
Node 代理访问的实现
Sep 19 Javascript
通过angular CDK实现页面元素拖放的步骤详解
Jul 01 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
日本十大科幻动漫 宇宙骑士垫底,第一已成经典
2020/03/04 日漫
echo, print, printf 和 sprintf 区别
2006/12/06 PHP
php简单的会话类代码
2011/08/08 PHP
PHP采集静态页面并把页面css,img,js保存的方法
2014/12/23 PHP
浅谈PHP中单引号和双引号到底有啥区别呢?
2015/03/04 PHP
迪菲-赫尔曼密钥交换(Diffie?Hellman)算法原理和PHP实现版
2015/05/12 PHP
[原创]php正则删除img标签的方法示例
2017/05/27 PHP
CSS中一些@规则的用法小结
2021/03/09 HTML / CSS
jQuery选择器源码解读(二):select方法
2015/03/31 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
2017/11/10 Javascript
详解vue组件开发脚手架
2018/06/15 Javascript
微信小程序实现购物页面左右联动
2019/02/15 Javascript
微信小程序文字显示换行问题
2019/07/28 Javascript
layui表格 列自动适应大小失效的解决方法
2019/09/06 Javascript
微信小程序request请求封装,验签代码实例
2019/12/04 Javascript
python读写json文件的简单实现
2017/04/11 Python
Python中pandas模块DataFrame创建方法示例
2018/06/20 Python
Flask实现图片的上传、下载及展示示例代码
2018/08/03 Python
浅谈tensorflow中张量的提取值和赋值
2020/01/19 Python
Python3连接Mysql8.0遇到的问题及处理步骤
2020/02/17 Python
python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例
2020/03/06 Python
用python查找统一局域网下ip对应的mac地址
2021/01/13 Python
python-jwt用户认证食用教学的实现方法
2021/01/19 Python
html5中监听canvas内部元素点击事件的三种方法
2019/04/28 HTML / CSS
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
请用Python写一个获取用户输入数字,并根据数字大小输出不同信息的脚本
2014/05/20 面试题
养生餐厅创业计划书范文
2014/03/26 职场文书
《青蛙看海》教学反思
2014/04/23 职场文书
五好关工委申报材料
2014/05/31 职场文书
公司演讲稿开场白
2014/08/25 职场文书
职工小家建设活动方案
2014/08/25 职场文书
培训讲师开场白
2015/06/01 职场文书
工作计划范文之财务管理
2019/08/09 职场文书
Python 把两层列表展开平铺成一层(5种实现方式)
2021/04/07 Python
浅谈Redis在直播场景的实践方案
2021/04/27 Redis
python绘制云雨图raincloud plot
2022/08/05 Python