Extjs根据store 动态创建图表
来源:互联网 发布:海报字体设计软件 编辑:程序博客网 时间:2024/04/28 01:42
-
-
-
-
-
-
-
-
-
-
-
-
- function isEmpty(obj){
- if(typeof(obj) == 'undefined' || obj == ''){
- return true;
- }
- }
-
-
-
-
-
-
-
-
-
- function newNumericFields(num){
- var fieldsArr = new Array();
- for ( var i = 1; i <= num; i++) {
- fieldsArr.push('data'+i);
- }
- return fieldsArr;
- }
-
-
-
-
-
-
- function newStoreFields(num){
- var fieldsArr = new Array();
- fieldsArr.push("name");
- for ( var i = 1; i <= num; i++) {
- fieldsArr.push('name'+i);
- fieldsArr.push('data'+i);
- }
- return fieldsArr;
- }
-
-
-
-
-
-
-
-
-
- function newNumeric(position){
- var Numeric = {
- type: 'Numeric',
- minimum: 0,
- position: position,
- fields: ['data1','data2','data3','data4','data5','data6','data7','data8','data9'],
- minorTickSteps: 9,
- majorTickSteps:9,
- grid: {
- odd: {
- opacity: 1,
- fill: '#ddd',
- stroke: '#bbb',
- 'stroke-width': 0.5
- }
- },
- grid:true,
- label:{
- renderer:function(v){
- return Ext.util.Format.round(v,2);
- },
- font: '10px Arial'
- }
- };
- return Numeric;
- }
-
-
-
-
-
-
-
-
-
-
- function newCategory(position,title){
- var Category = {
- type: 'Category',
- position: position,
- title: title,
- fields: ['name'],
- label: {
- font: '9px Chancery'
- }
- };
- return Category;
- }
-
-
-
-
-
-
-
-
-
- function newColumn (position,tips,title,renderer){
- var column = {
- type: 'column',
- axis: position,
- highlight: {
- stroke:'green'
- },
- tips: {
- trackMouse: true,
- width: 140,
- height: 28,
- renderer: function(storeItem, item) {
- if(isEmpty(renderer)){
- this.setTitle(storeItem.get('name') + ': ' + storeItem.get(tips));
- }else{
- this.setTitle(storeItem.get('name') + ': ' + storeItem.get(tips) + renderer );
- }
- }
- },
- style:{
- width:40
- },
- label: {
- display: 'insideEnd',
- 'text-anchor': 'middle',
- field: '',
- renderer: Ext.util.Format.numberRenderer('0'),
- orientation: 'vertical',
- color: '#333'
- },
- title:title,
- xField: 'name',
- yField: tips
- };
- return column;
- }
-
-
-
-
-
-
-
-
-
- function newLine (position,tips,title,renderer){
- var line = {
- type: 'line',
- highlight: {
- size: 7,
- radius: 7
- },
- axis: position,
- smooth: true,
- fill: false,
- title:title,
- xField: 'name',
- yField: tips,
- markerConfig: {
- type: 'circle',
- size: 4,
- radius: 4,
- 'stroke-width': 0
- },
- style: {
- 'stroke-width': 3,
- fill: false,
- opacity: 0.2
- },
- tips: {
- trackMouse: true,
- width: 140,
- height: 28,
- renderer: function(storeItem, item) {
- if(isEmpty(renderer)){
- this.setTitle(storeItem.get('name') + ': ' + storeItem.get(tips));
- }else{
- this.setTitle(storeItem.get('name') + ': ' + storeItem.get(tips) + renderer );
- }
- }
- }
- };
- return line;
- }
-
-
-
-
-
-
-
-
-
-
-
- function drawChart(store,category,title,seriesType,renderer){
-
- var axes = new Array();
-
- var series = new Array();
-
-
-
- var leftNumeric = newNumeric('left');
- var bottomTitle = title + "分析指标";
-
- var bottomCategory = newCategory('bottom',bottomTitle);
-
-
- axes.push(leftNumeric);
- axes.push(bottomCategory);
-
-
- if(seriesType == 'column'){
-
- var column = newColumn('left','data1',title,renderer);
- series.push(column);
- }else if(seriesType == 'line'){
-
- var line = newLine('left','data1',title,renderer);
- series.push(line);
- }
-
-
-
- var chart = Ext.create('Ext.chart.Chart', {
- xtype: 'chart',
- width: $(window).width(),
- height: $(window).height() * 0.9,
- style: 'background:#fff',
- animate: true,
- shadow: false,
- store: store,
- theme: category,
- insetPadding: 50,
- legend: {
- position: 'right'
- },
- axes: axes,
- series: series
- });
-
-
- return chart;
- }