Project

General

Profile

Statistics
| Revision:

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

History | View | Annotate | Download (4.33 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.common"]){
9
dojo._hasResource["dojox.charting.plot2d.common"]=true;
10
dojo.provide("dojox.charting.plot2d.common");
11
dojo.require("dojo.colors");
12
dojo.require("dojox.gfx");
13
dojo.require("dojox.lang.functional");
14
(function(){
15
var df=dojox.lang.functional,dc=dojox.charting.plot2d.common;
16
dojo.mixin(dojox.charting.plot2d.common,{makeStroke:function(_1){
17
if(!_1){
18
return _1;
19
}
20
if(typeof _1=="string"||_1 instanceof dojo.Color){
21
_1={color:_1};
22
}
23
return dojox.gfx.makeParameters(dojox.gfx.defaultStroke,_1);
24
},augmentColor:function(_2,_3){
25
var t=new dojo.Color(_2),c=new dojo.Color(_3);
26
c.a=t.a;
27
return c;
28
},augmentStroke:function(_4,_5){
29
var s=dc.makeStroke(_4);
30
if(s){
31
s.color=dc.augmentColor(s.color,_5);
32
}
33
return s;
34
},augmentFill:function(_6,_7){
35
var fc,c=new dojo.Color(_7);
36
if(typeof _6=="string"||_6 instanceof dojo.Color){
37
return dc.augmentColor(_6,_7);
38
}
39
return _6;
40
},defaultStats:{hmin:Number.POSITIVE_INFINITY,hmax:Number.NEGATIVE_INFINITY,vmin:Number.POSITIVE_INFINITY,vmax:Number.NEGATIVE_INFINITY},collectSimpleStats:function(_8){
41
var _9=dojo.delegate(dc.defaultStats);
42
for(var i=0;i<_8.length;++i){
43
var _a=_8[i];
44
for(var j=0;j<_a.data.length;j++){
45
if(_a.data[j]!==null){
46
if(typeof _a.data[j]=="number"){
47
var _b=_9.vmin,_c=_9.vmax;
48
if(!("ymin" in _a)||!("ymax" in _a)){
49
dojo.forEach(_a.data,function(_d,i){
50
if(_d!==null){
51
var x=i+1,y=_d;
52
if(isNaN(y)){
53
y=0;
54
}
55
_9.hmin=Math.min(_9.hmin,x);
56
_9.hmax=Math.max(_9.hmax,x);
57
_9.vmin=Math.min(_9.vmin,y);
58
_9.vmax=Math.max(_9.vmax,y);
59
}
60
});
61
}
62
if("ymin" in _a){
63
_9.vmin=Math.min(_b,_a.ymin);
64
}
65
if("ymax" in _a){
66
_9.vmax=Math.max(_c,_a.ymax);
67
}
68
}else{
69
var _e=_9.hmin,_f=_9.hmax,_b=_9.vmin,_c=_9.vmax;
70
if(!("xmin" in _a)||!("xmax" in _a)||!("ymin" in _a)||!("ymax" in _a)){
71
dojo.forEach(_a.data,function(val,i){
72
if(val!==null){
73
var x="x" in val?val.x:i+1,y=val.y;
74
if(isNaN(x)){
75
x=0;
76
}
77
if(isNaN(y)){
78
y=0;
79
}
80
_9.hmin=Math.min(_9.hmin,x);
81
_9.hmax=Math.max(_9.hmax,x);
82
_9.vmin=Math.min(_9.vmin,y);
83
_9.vmax=Math.max(_9.vmax,y);
84
}
85
});
86
}
87
if("xmin" in _a){
88
_9.hmin=Math.min(_e,_a.xmin);
89
}
90
if("xmax" in _a){
91
_9.hmax=Math.max(_f,_a.xmax);
92
}
93
if("ymin" in _a){
94
_9.vmin=Math.min(_b,_a.ymin);
95
}
96
if("ymax" in _a){
97
_9.vmax=Math.max(_c,_a.ymax);
98
}
99
}
100
break;
101
}
102
}
103
}
104
return _9;
105
},calculateBarSize:function(_10,opt,_11){
106
if(!_11){
107
_11=1;
108
}
109
var gap=opt.gap,_12=(_10-2*gap)/_11;
110
if("minBarSize" in opt){
111
_12=Math.max(_12,opt.minBarSize);
112
}
113
if("maxBarSize" in opt){
114
_12=Math.min(_12,opt.maxBarSize);
115
}
116
_12=Math.max(_12,1);
117
gap=(_10-_12*_11)/2;
118
return {size:_12,gap:gap};
119
},collectStackedStats:function(_13){
120
var _14=dojo.clone(dc.defaultStats);
121
if(_13.length){
122
_14.hmin=Math.min(_14.hmin,1);
123
_14.hmax=df.foldl(_13,"seed, run -> Math.max(seed, run.data.length)",_14.hmax);
124
for(var i=0;i<_14.hmax;++i){
125
var v=_13[0].data[i];
126
if(isNaN(v)){
127
v=0;
128
}
129
_14.vmin=Math.min(_14.vmin,v);
130
for(var j=1;j<_13.length;++j){
131
var t=_13[j].data[i];
132
if(isNaN(t)){
133
t=0;
134
}
135
v+=t;
136
}
137
_14.vmax=Math.max(_14.vmax,v);
138
}
139
}
140
return _14;
141
},curve:function(a,_15){
142
var arr=a.slice(0);
143
if(_15=="x"){
144
arr[arr.length]=arr[0];
145
}
146
var p=dojo.map(arr,function(_16,i){
147
if(i==0){
148
return "M"+_16.x+","+_16.y;
149
}
150
if(!isNaN(_15)){
151
var dx=_16.x-arr[i-1].x,dy=arr[i-1].y;
152
return "C"+(_16.x-(_15-1)*(dx/_15))+","+dy+" "+(_16.x-(dx/_15))+","+_16.y+" "+_16.x+","+_16.y;
153
}else{
154
if(_15=="X"||_15=="x"||_15=="S"){
155
var p0,p1=arr[i-1],p2=arr[i],p3;
156
var _17,_18,_19,_1a;
157
var f=1/6;
158
if(i==1){
159
if(_15=="x"){
160
p0=arr[arr.length-2];
161
}else{
162
p0=p1;
163
}
164
f=1/3;
165
}else{
166
p0=arr[i-2];
167
}
168
if(i==(arr.length-1)){
169
if(_15=="x"){
170
p3=arr[1];
171
}else{
172
p3=p2;
173
}
174
f=1/3;
175
}else{
176
p3=arr[i+1];
177
}
178
var _1b=Math.sqrt((p2.x-p1.x)*(p2.x-p1.x)+(p2.y-p1.y)*(p2.y-p1.y));
179
var _1c=Math.sqrt((p2.x-p0.x)*(p2.x-p0.x)+(p2.y-p0.y)*(p2.y-p0.y));
180
var _1d=Math.sqrt((p3.x-p1.x)*(p3.x-p1.x)+(p3.y-p1.y)*(p3.y-p1.y));
181
var _1e=_1c*f;
182
var _1f=_1d*f;
183
if(_1e>_1b/2&&_1f>_1b/2){
184
_1e=_1b/2;
185
_1f=_1b/2;
186
}else{
187
if(_1e>_1b/2){
188
_1e=_1b/2;
189
_1f=_1b/2*_1d/_1c;
190
}else{
191
if(_1f>_1b/2){
192
_1f=_1b/2;
193
_1e=_1b/2*_1c/_1d;
194
}
195
}
196
}
197
if(_15=="S"){
198
if(p0==p1){
199
_1e=0;
200
}
201
if(p2==p3){
202
_1f=0;
203
}
204
}
205
_17=p1.x+_1e*(p2.x-p0.x)/_1c;
206
_18=p1.y+_1e*(p2.y-p0.y)/_1c;
207
_19=p2.x-_1f*(p3.x-p1.x)/_1d;
208
_1a=p2.y-_1f*(p3.y-p1.y)/_1d;
209
}
210
}
211
return "C"+(_17+","+_18+" "+_19+","+_1a+" "+p2.x+","+p2.y);
212
});
213
return p.join(" ");
214
}});
215
})();
216
}