root / trunk / web / dojo / dojox / charting / plot2d / common.js
History | View | Annotate | Download (4.33 KB)
1 | 9 | andrej.cim | /*
|
---|---|---|---|
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 | } |