Project

General

Profile

Statistics
| Revision:

root / trunk / web / dojo / dojox / charting / plot2d / StackedColumns.js @ 10

History | View | Annotate | Download (2.78 KB)

1
/*
2
        Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
3
        Available via Academic Free License >= 2.1 OR the modified BSD license.
4
        see: http://dojotoolkit.org/license for details
5
*/
6

    
7

    
8
if(!dojo._hasResource["dojox.charting.plot2d.StackedColumns"]){
9
dojo._hasResource["dojox.charting.plot2d.StackedColumns"]=true;
10
dojo.provide("dojox.charting.plot2d.StackedColumns");
11
dojo.require("dojox.charting.plot2d.common");
12
dojo.require("dojox.charting.plot2d.Columns");
13
dojo.require("dojox.lang.functional");
14
dojo.require("dojox.lang.functional.reversed");
15
(function(){
16
var df=dojox.lang.functional,dc=dojox.charting.plot2d.common,_1=df.lambda("item.purgeGroup()");
17
dojo.declare("dojox.charting.plot2d.StackedColumns",dojox.charting.plot2d.Columns,{getSeriesStats:function(){
18
var _2=dc.collectStackedStats(this.series);
19
this._maxRunLength=_2.hmax;
20
_2.hmin-=0.5;
21
_2.hmax+=0.5;
22
return _2;
23
},render:function(_3,_4){
24
if(this._maxRunLength<=0){
25
return this;
26
}
27
var _5=df.repeat(this._maxRunLength,"-> 0",0);
28
for(var i=0;i<this.series.length;++i){
29
var _6=this.series[i];
30
for(var j=0;j<_6.data.length;++j){
31
var _7=_6.data[j];
32
if(_7!==null){
33
var v=typeof _7=="number"?_7:_7.y;
34
if(isNaN(v)){
35
v=0;
36
}
37
_5[j]+=v;
38
}
39
}
40
}
41
if(this.zoom&&!this.isDataDirty()){
42
return this.performZoom(_3,_4);
43
}
44
this.resetEvents();
45
this.dirty=this.isDirty();
46
if(this.dirty){
47
dojo.forEach(this.series,_1);
48
this._eventSeries={};
49
this.cleanGroup();
50
var s=this.group;
51
df.forEachRev(this.series,function(_8){
52
_8.cleanGroup(s);
53
});
54
}
55
var t=this.chart.theme,f,_9,_a,ht=this._hScaler.scaler.getTransformerFromModel(this._hScaler),vt=this._vScaler.scaler.getTransformerFromModel(this._vScaler),_b=this.events();
56
f=dc.calculateBarSize(this._hScaler.bounds.scale,this.opt);
57
_9=f.gap;
58
_a=f.size;
59
for(var i=this.series.length-1;i>=0;--i){
60
var _6=this.series[i];
61
if(!this.dirty&&!_6.dirty){
62
t.skip();
63
this._reconnectEvents(_6.name);
64
continue;
65
}
66
_6.cleanGroup();
67
var _c=t.next("column",[this.opt,_6]),s=_6.group,_d=new Array(_5.length);
68
for(var j=0;j<_5.length;++j){
69
var _7=_6.data[j];
70
if(_7!==null){
71
var v=_5[j],_e=vt(v),_f=typeof _7!="number"?t.addMixin(_c,"column",_7,true):t.post(_c,"column");
72
if(_a>=1&&_e>=1){
73
var _10={x:_4.l+ht(j+0.5)+_9,y:_3.height-_4.b-vt(v),width:_a,height:_e};
74
var _11=this._plotFill(_f.series.fill,_3,_4);
75
_11=this._shapeFill(_11,_10);
76
var _12=s.createRect(_10).setFill(_11).setStroke(_f.series.stroke);
77
_6.dyn.fill=_12.getFill();
78
_6.dyn.stroke=_12.getStroke();
79
if(_b){
80
var o={element:"column",index:j,run:_6,shape:_12,x:j+0.5,y:v};
81
this._connectEvents(o);
82
_d[j]=o;
83
}
84
if(this.animate){
85
this._animateColumn(_12,_3.height-_4.b,_e);
86
}
87
}
88
}
89
}
90
this._eventSeries[_6.name]=_d;
91
_6.dirty=false;
92
for(var j=0;j<_6.data.length;++j){
93
var _7=_6.data[j];
94
if(_7!==null){
95
var v=typeof _7=="number"?_7:_7.y;
96
if(isNaN(v)){
97
v=0;
98
}
99
_5[j]-=v;
100
}
101
}
102
}
103
this.dirty=false;
104
return this;
105
}});
106
})();
107
}