• 技术文章 >web前端 >js教程

    ExtJs整合的Echarts

    php中世界最好的语言php中世界最好的语言2018-03-17 13:29:26原创1040

    这次给大家带来ExtJs整合的Echarts,使用ExtJs整合Echarts的注意事项有哪些,下面就是实战案例,一起来看一下。

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

    ExtJs整合Echarts

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

    initPanel : function() {
     if (this.panel) {
      return
     }
     
     var panel = new Ext.Panel({
      id : 'echart',
      html :   '<p id="mainEchart" style="height:50%;border:1px solid #ccc;padding:10px;"></p>'
            + '<p 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 p = document.getElementById("mainEchart");
     var myChart = echarts.init(p);
     // 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 = '<p 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></p>';
     document.getElementById('mainTable').innerHTML = html;
    }

    相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

    推荐阅读:

    javascript模块加载器是怎么运行的

    怎样实现微信web端后退强制刷新

    以上就是ExtJs整合的Echarts的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:javascript Echarts ExtJs
    上一篇:redux-saga中的take应该怎么使用 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 一文聊聊Angular中的依赖注入• Node实战学习:浏览器预览项目所有图片• react native路由跳转怎么实现• 一起聊聊var、let以及const的区别(代码示例)• 深入详解React中的ref
    1/1

    PHP中文网