栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > JavaScript

extjs4图表绘制之折线图实现方法分析

JavaScript 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

extjs4图表绘制之折线图实现方法分析

本文实例讲述了extjs4图表绘制之折线图实现方法。分享给大家供大家参考,具体如下:

本篇文章将介绍extjs中自带的图表

在本次案例中,提供一下功能:

1.从后端请求数据并运用到图表中,形成动态数据。

2.查询出每年各个月中人数。

请看下面代码:

Ext.define('ChartLineTest', {
  extend: 'Ext.panel.Panel',
  autoScroll : true,
  selectYear:null,//定义年份
  initComponent: function () {//定义初始化组件
    var me = this;
    me.store = me.createStore();//定义数据
    me.grid = me.getGridPanel();
    me.mainPanel = Ext.create('Ext.panel.Panel',{
      layout:'fit',
      items:[me.grid],
      tbar:me.createQueryTbar(),//定义查询的组件
    });

    Ext.apply(me,{
      layout:'fit',
      items:[me.mainPanel]
    });
    me.callParent();
    me.mainPanel.down('chart').on('cellclick', function(grid, td, cellIndex, record, tr, rowIndex, e, eOpts) {
      me.onCellClick(cellIndex, record);
    });
  },

  getGridPanel:function(){
    var me = this;
    return {
      xtype:'chart',
      animate : true,// 是否支持动态数据变化
 legend: {// 图例
   display: "bottom",
   spacing: 2,
   padding: 5,
   font: {
     name: 'Tahoma',
     color: '#3366FF',
     size: 12,
     bold: true
   }
 },
      store:me.store,
      axes:me.createAxes(),//定义横竖轴数据
      series:me.createSeries(),//定义图表中的数据
    }
  },
  createQueryTbar: function(){
    var me=this;
    var tbar=[
      {
 xtype : 'combo',
 fieldLabel:'选择年份',
 name:'selectYear',
 queryMode : 'local',
 editable : true,
 readOnly:false,
 labelWidth: 60,
 width:200,
 store : new Ext.data.ArrayStore({
   fields : ['id','name'],

   data: []
 }),
 valueField : 'name',
 displayField : 'id',
 triggerAction : 'all',
 autoSelect : true,
 listeners : {
   beforerender : function(){
     var newyear = Ext.Date.format(new Date(),'Y');//这是为了取现在的年份数
     var yearlist = [];
     for(var i = newyear;i>=2015;i--){
yearlist.push([i,i]);
     }
     this.store.loadData(yearlist);
   }
 }
      },
      {xtype: 'button',text : '查找',
 listeners : {
   "click" : function() {
     var value = Ext.ComponentQuery.query('[name=selectYear]')["0"].value;
     me.selectYear = value;//赋值给selectYear属性
     me.store.load();
   }}}
    ];
    return tbar;
  },
  createStore: function () {
    //从后端请求数据
    var me = this;
    return Ext.create('Ext.data.JsonStore', {
      fields: [
 {name: 'id', mapping: 'id'},
 {name:'statTime',mapping:'statTime',type:'date',dateFormat:'time'},
 'activeCount', 'effectiveCount','effectiveProportion',
      ],
      proxy: {
 type: 'ajax',
 url: ctx+'/mvc/com/analyze/tblVwMonthUserStat',
 reader: {
   type: 'json',
   root: 'root',
   totalProperty: 'totalProperty'
 }
      },
      listeners: {
 'beforeload': function (store, operation, eOpts) {
   store.proxy.extraParams.selectYear = me.selectYear//赋值给selectYear属性
 }
      },
      autoLoad: true
    });
  },

  createAxes: function () {
    var me = this;
    var columns = [
      {
 type: 'Numeric',
 position: 'left',//定义位置
 minimum: 1000,
 maximum: 10000,

 label: {
   renderer: Ext.util.Format.numberRenderer('0,0')
 },
 title: '人数',
 grid: true,
      },
      {
 type: 'Numeric',
 position: 'right',
 minimum: 1000,
 maximum: 10000,

 label: {
   renderer: Ext.util.Format.numberRenderer('0,0')
 },
 title: '人数',
 grid: true,
      },
      {
 type: 'Time',
 position: 'bottom',
 fields: 'statTime',
 step: [Ext.Date.MONTH, 1],///定义间隔
 dateFormat: 'y-m',
 title: '日期',
 grid: false,

      }
    ];
    return columns;
  },
  createSeries: function () {
    var me = this;
    var columns = [
      {
 type: 'line',
 highlight: {
   size: 7,
   radius: 7
 },
 fill: false,
 // showInLegend:false,//要是为false 在坐标系中将不显示标记
 axis: 'left',
 xField: 'statTime',
 renderer: Ext.util.Format.dateRenderer('Y-m '),
 yField: 'activeCount',
 title :'活跃用户',
 //定义浮标(提示框) 显示想要显示的文字
 tips: {
   trackMouse: true,
   width: 200,
   height: 40,
   renderer: function(storeItem, item) {
     this.setTitle( "人数:"+storeItem.get('activeCount')+",占比:"+storeItem.get('effectiveProportion') );
   }
 },
 label: {
   display: 'insideEnd',
   field: 'activeCount',
   renderer: Ext.util.Format.numberRenderer('0'),
   orientation: 'vertical',
   font:'15px Helvetica, sans-serif',
   'text-anchor': 'end',
   color:'red',
 },
 markerConfig: {
   type: 'cross',
   size: 3,
   radius: 3,
   'stroke-width': 0
 }
      },
      {
 type: 'line',
 highlight: {
   size: 7,
   radius: 7
 },
 // selectionTolerance:0,

 axis: 'left',
 title :'有效用户',
 fill: false,
 xField: 'statTime',
 renderer: Ext.util.Format.dateRenderer('Y-m '),
 yField: 'effectiveCount',

 markerConfig: {
   type: 'circle',
   size: 3,
   radius: 3,
   'stroke-width': 0
 },
 
 style: {
   stroke: '#00ff00',
   
 },
     
 //定义坐标上的文字的属性
 label: {
   display: 'over',
   field: 'effectiveCount',
   renderer: Ext.util.Format.numberRenderer('0'),
   orientation: 'vertical',//数值显示的方式 ‘horizontal'水平显示
   font: '15px Helvetica, sans-serif',
   'text-anchor': 'start',
   color: 'red',//字体 颜色
   //对坐标上的文字进行操作,当数值大于5000的时候显示另一种颜色
   renderer: function(value, label, storeItem, item, i, display, animate, index) {

     if (value >= 5000) {
label.setAttributes({fill:'#080',});
value = value;
     }
     return value;
   }
 }
      },

    ];
    return columns;
  }

});

每一个图表必须要三个组成部分: 数据(data), 轴(axes)和系列(Series)。

数据 -  是图表用来展示的信息,在Ext 中使用标准的Model 或是 Store.

 - 提供数据的来源,范围,规模和单位。组成图表的基本架构。 轴可以是笛卡尔坐标(x,y), 极性(或径向),或轨距(用于仪表盘图表的一维轴)。尽管一个结合多个类型系列的图表需要额外的轴定义,但大多数的图表还是使用一组轴。

系列- 这个属于是用于数据的图形渲染的。换句话说,就是一个图标的基本图形项目,像 线图,柱状图,栏位或饼图。一个图形可以包含多个系列。 例如: 在一个图形的中有三个线状图就包含有三个独立的线系列。

可以添加标签,标记和图例说明到图上;还可以设置动画效果或是放大某一个区块。

label(标签) -- 对一个轴或是系统的解释性标题。

marker(标记) -- 用来在一个系列中绘制数据点的一个符号,形状或是图片。

legend(说明) -- 提供图的说明,解释各变量在图形中代表的意义。(图例)

listeners(监听器)--等待某个事件并作出一些动作像鼠标事件等

animation( 动画)--  图的元素可以移动

tips(提示框)--  当鼠标放在坐标轴上显示的提示文字。

markerConfig--定义每一点坐标的形状。

更多关于Javascript相关内容感兴趣的读者可查看本站专题:《Javascript图片操作技巧大全》、《Javascript切换特效与技巧总结》、《Javascript运动效果与技巧汇总》、《Javascript动画特效与技巧汇总》、《Javascript错误与调试技巧总结》、《Javascript数据结构与算法技巧总结》、《Javascript遍历算法与技巧总结》及《Javascript数学运算用法总结》

希望本文所述对大家Javascript程序设计有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/71072.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号