root / trunk / web / dojo / dojox / charting / Chart2D.js
History | View | Annotate | Download (13.3 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.Chart2D"]){ |
||
9 | dojo._hasResource["dojox.charting.Chart2D"]=true; |
||
10 | dojo.provide("dojox.charting.Chart2D");
|
||
11 | dojo.require("dojox.gfx");
|
||
12 | dojo.require("dojox.lang.functional");
|
||
13 | dojo.require("dojox.lang.functional.fold");
|
||
14 | dojo.require("dojox.lang.functional.reversed");
|
||
15 | dojo.require("dojox.charting.Theme");
|
||
16 | dojo.require("dojox.charting.Series");
|
||
17 | dojo.require("dojox.charting.axis2d.Default");
|
||
18 | dojo.require("dojox.charting.axis2d.Invisible");
|
||
19 | dojo.require("dojox.charting.plot2d.Default");
|
||
20 | dojo.require("dojox.charting.plot2d.Lines");
|
||
21 | dojo.require("dojox.charting.plot2d.Areas");
|
||
22 | dojo.require("dojox.charting.plot2d.Markers");
|
||
23 | dojo.require("dojox.charting.plot2d.MarkersOnly");
|
||
24 | dojo.require("dojox.charting.plot2d.Scatter");
|
||
25 | dojo.require("dojox.charting.plot2d.Stacked");
|
||
26 | dojo.require("dojox.charting.plot2d.StackedLines");
|
||
27 | dojo.require("dojox.charting.plot2d.StackedAreas");
|
||
28 | dojo.require("dojox.charting.plot2d.Columns");
|
||
29 | dojo.require("dojox.charting.plot2d.StackedColumns");
|
||
30 | dojo.require("dojox.charting.plot2d.ClusteredColumns");
|
||
31 | dojo.require("dojox.charting.plot2d.Bars");
|
||
32 | dojo.require("dojox.charting.plot2d.StackedBars");
|
||
33 | dojo.require("dojox.charting.plot2d.ClusteredBars");
|
||
34 | dojo.require("dojox.charting.plot2d.Grid");
|
||
35 | dojo.require("dojox.charting.plot2d.Pie");
|
||
36 | dojo.require("dojox.charting.plot2d.Bubble");
|
||
37 | dojo.require("dojox.charting.plot2d.Candlesticks");
|
||
38 | dojo.require("dojox.charting.plot2d.OHLC");
|
||
39 | (function(){
|
||
40 | var df=dojox.lang.functional,dc=dojox.charting,_1=df.lambda("item.clear()"),_2=df.lambda("item.purgeGroup()"),_3=df.lambda("item.destroy()"),_4=df.lambda("item.dirty = false"),_5=df.lambda("item.dirty = true"),_6=df.lambda("item.name"); |
||
41 | dojo.declare("dojox.charting.Chart2D",null,{constructor:function(_7,_8){ |
||
42 | if(!_8){
|
||
43 | _8={}; |
||
44 | } |
||
45 | this.margins=_8.margins?_8.margins:{l:10,t:10,r:10,b:10}; |
||
46 | this.stroke=_8.stroke;
|
||
47 | this.fill=_8.fill;
|
||
48 | this.delayInMs=_8.delayInMs||200; |
||
49 | this.theme=null; |
||
50 | this.axes={};
|
||
51 | this.stack=[];
|
||
52 | this.plots={};
|
||
53 | this.series=[];
|
||
54 | this.runs={};
|
||
55 | this.dirty=true; |
||
56 | this.coords=null; |
||
57 | this.node=dojo.byId(_7);
|
||
58 | var _9=dojo.marginBox(_7);
|
||
59 | this.surface=dojox.gfx.createSurface(this.node,_9.w||400,_9.h||300); |
||
60 | },destroy:function(){ |
||
61 | dojo.forEach(this.series,_3);
|
||
62 | dojo.forEach(this.stack,_3);
|
||
63 | df.forIn(this.axes,_3);
|
||
64 | this.surface.destroy();
|
||
65 | },getCoords:function(){ |
||
66 | if(!this.coords){ |
||
67 | this.coords=dojo.coords(this.node,true); |
||
68 | } |
||
69 | return this.coords; |
||
70 | },setTheme:function(_a){ |
||
71 | this.theme=_a.clone();
|
||
72 | this.dirty=true; |
||
73 | return this; |
||
74 | },addAxis:function(_b,_c){ |
||
75 | var _d;
|
||
76 | if(!_c||!("type" in _c)){ |
||
77 | _d=new dc.axis2d.Default(this,_c); |
||
78 | }else{
|
||
79 | _d=typeof _c.type=="string"?new dc.axis2d[_c.type](this,_c):new _c.type(this,_c); |
||
80 | } |
||
81 | _d.name=_b; |
||
82 | _d.dirty=true;
|
||
83 | if(_b in this.axes){ |
||
84 | this.axes[_b].destroy();
|
||
85 | } |
||
86 | this.axes[_b]=_d;
|
||
87 | this.dirty=true; |
||
88 | return this; |
||
89 | },getAxis:function(_e){ |
||
90 | return this.axes[_e]; |
||
91 | },removeAxis:function(_f){ |
||
92 | if(_f in this.axes){ |
||
93 | this.axes[_f].destroy();
|
||
94 | delete this.axes[_f]; |
||
95 | this.dirty=true; |
||
96 | } |
||
97 | return this; |
||
98 | },addPlot:function(_10,_11){ |
||
99 | var _12;
|
||
100 | if(!_11||!("type" in _11)){ |
||
101 | _12=new dc.plot2d.Default(this,_11); |
||
102 | }else{
|
||
103 | _12=typeof _11.type=="string"?new dc.plot2d[_11.type](this,_11):new _11.type(this,_11); |
||
104 | } |
||
105 | _12.name=_10; |
||
106 | _12.dirty=true;
|
||
107 | if(_10 in this.plots){ |
||
108 | this.stack[this.plots[_10]].destroy(); |
||
109 | this.stack[this.plots[_10]]=_12; |
||
110 | }else{
|
||
111 | this.plots[_10]=this.stack.length; |
||
112 | this.stack.push(_12);
|
||
113 | } |
||
114 | this.dirty=true; |
||
115 | return this; |
||
116 | },removePlot:function(_13){ |
||
117 | if(_13 in this.plots){ |
||
118 | var _14=this.plots[_13]; |
||
119 | delete this.plots[_13]; |
||
120 | this.stack[_14].destroy();
|
||
121 | this.stack.splice(_14,1); |
||
122 | df.forIn(this.plots,function(idx,_15,_16){ |
||
123 | if(idx>_14){
|
||
124 | _16[_15]=idx-1;
|
||
125 | } |
||
126 | }); |
||
127 | this.dirty=true; |
||
128 | } |
||
129 | return this; |
||
130 | },getPlotOrder:function(){ |
||
131 | return df.map(this.stack,_6); |
||
132 | },setPlotOrder:function(_17){ |
||
133 | var _18={},_19=df.filter(_17,function(_1a){ |
||
134 | if(!(_1a in this.plots)||(_1a in _18)){ |
||
135 | return false; |
||
136 | } |
||
137 | _18[_1a]=1;
|
||
138 | return true; |
||
139 | },this);
|
||
140 | if(_19.length<this.stack.length){ |
||
141 | df.forEach(this.stack,function(_1b){ |
||
142 | var _1c=_1b.name;
|
||
143 | if(!(_1c in _18)){ |
||
144 | _19.push(_1c); |
||
145 | } |
||
146 | }); |
||
147 | } |
||
148 | var _1d=df.map(_19,function(_1e){ |
||
149 | return this.stack[this.plots[_1e]]; |
||
150 | },this);
|
||
151 | df.forEach(_1d,function(_1f,i){
|
||
152 | this.plots[_1f.name]=i;
|
||
153 | },this);
|
||
154 | this.stack=_1d;
|
||
155 | this.dirty=true; |
||
156 | return this; |
||
157 | },movePlotToFront:function(_20){ |
||
158 | if(_20 in this.plots){ |
||
159 | var _21=this.plots[_20]; |
||
160 | if(_21){
|
||
161 | var _22=this.getPlotOrder(); |
||
162 | _22.splice(_21,1);
|
||
163 | _22.unshift(_20); |
||
164 | return this.setPlotOrder(_22); |
||
165 | } |
||
166 | } |
||
167 | return this; |
||
168 | },movePlotToBack:function(_23){ |
||
169 | if(_23 in this.plots){ |
||
170 | var _24=this.plots[_23]; |
||
171 | if(_24<this.stack.length-1){ |
||
172 | var _25=this.getPlotOrder(); |
||
173 | _25.splice(_24,1);
|
||
174 | _25.push(_23); |
||
175 | return this.setPlotOrder(_25); |
||
176 | } |
||
177 | } |
||
178 | return this; |
||
179 | },addSeries:function(_26,_27,_28){ |
||
180 | var run=new dc.Series(this,_27,_28); |
||
181 | run.name=_26; |
||
182 | if(_26 in this.runs){ |
||
183 | this.series[this.runs[_26]].destroy(); |
||
184 | this.series[this.runs[_26]]=run; |
||
185 | }else{
|
||
186 | this.runs[_26]=this.series.length; |
||
187 | this.series.push(run);
|
||
188 | } |
||
189 | this.dirty=true; |
||
190 | if(!("ymin" in run)&&"min" in run){ |
||
191 | run.ymin=run.min; |
||
192 | } |
||
193 | if(!("ymax" in run)&&"max" in run){ |
||
194 | run.ymax=run.max; |
||
195 | } |
||
196 | return this; |
||
197 | },removeSeries:function(_29){ |
||
198 | if(_29 in this.runs){ |
||
199 | var _2a=this.runs[_29],_2b=this.series[_2a].plot; |
||
200 | delete this.runs[_29]; |
||
201 | this.series[_2a].destroy();
|
||
202 | this.series.splice(_2a,1); |
||
203 | df.forIn(this.runs,function(idx,_2c,_2d){ |
||
204 | if(idx>_2a){
|
||
205 | _2d[_2c]=idx-1;
|
||
206 | } |
||
207 | }); |
||
208 | this.dirty=true; |
||
209 | } |
||
210 | return this; |
||
211 | },updateSeries:function(_2e,_2f){ |
||
212 | if(_2e in this.runs){ |
||
213 | var run=this.series[this.runs[_2e]]; |
||
214 | run.update(_2f); |
||
215 | this._invalidateDependentPlots(run.plot,false); |
||
216 | this._invalidateDependentPlots(run.plot,true); |
||
217 | } |
||
218 | return this; |
||
219 | },getSeriesOrder:function(_30){ |
||
220 | return df.map(df.filter(this.series,function(run){ |
||
221 | return run.plot==_30;
|
||
222 | }),_6); |
||
223 | },setSeriesOrder:function(_31){ |
||
224 | var _32,_33={},_34=df.filter(_31,function(_35){ |
||
225 | if(!(_35 in this.runs)||(_35 in _33)){ |
||
226 | return false; |
||
227 | } |
||
228 | var run=this.series[this.runs[_35]]; |
||
229 | if(_32){
|
||
230 | if(run.plot!=_32){
|
||
231 | return false; |
||
232 | } |
||
233 | }else{
|
||
234 | _32=run.plot; |
||
235 | } |
||
236 | _33[_35]=1;
|
||
237 | return true; |
||
238 | },this);
|
||
239 | df.forEach(this.series,function(run){ |
||
240 | var _36=run.name;
|
||
241 | if(!(_36 in _33)&&run.plot==_32){ |
||
242 | _34.push(_36); |
||
243 | } |
||
244 | }); |
||
245 | var _37=df.map(_34,function(_38){ |
||
246 | return this.series[this.runs[_38]]; |
||
247 | },this);
|
||
248 | this.series=_37.concat(df.filter(this.series,function(run){ |
||
249 | return run.plot!=_32;
|
||
250 | })); |
||
251 | df.forEach(this.series,function(run,i){ |
||
252 | this.runs[run.name]=i;
|
||
253 | },this);
|
||
254 | this.dirty=true; |
||
255 | return this; |
||
256 | },moveSeriesToFront:function(_39){ |
||
257 | if(_39 in this.runs){ |
||
258 | var _3a=this.runs[_39],_3b=this.getSeriesOrder(this.series[_3a].plot); |
||
259 | if(_39!=_3b[0]){ |
||
260 | _3b.splice(_3a,1);
|
||
261 | _3b.unshift(_39); |
||
262 | return this.setSeriesOrder(_3b); |
||
263 | } |
||
264 | } |
||
265 | return this; |
||
266 | },moveSeriesToBack:function(_3c){ |
||
267 | if(_3c in this.runs){ |
||
268 | var _3d=this.runs[_3c],_3e=this.getSeriesOrder(this.series[_3d].plot); |
||
269 | if(_3c!=_3e[_3e.length-1]){ |
||
270 | _3e.splice(_3d,1);
|
||
271 | _3e.push(_3c); |
||
272 | return this.setSeriesOrder(_3e); |
||
273 | } |
||
274 | } |
||
275 | return this; |
||
276 | },resize:function(_3f,_40){ |
||
277 | var box;
|
||
278 | switch(arguments.length){ |
||
279 | case 0: |
||
280 | box=dojo.marginBox(this.node);
|
||
281 | break;
|
||
282 | case 1: |
||
283 | box=_3f; |
||
284 | break;
|
||
285 | default:
|
||
286 | box={w:_3f,h:_40}; |
||
287 | break;
|
||
288 | } |
||
289 | dojo.marginBox(this.node,box);
|
||
290 | this.surface.setDimensions(box.w,box.h);
|
||
291 | this.dirty=true; |
||
292 | this.coords=null; |
||
293 | return this.render(); |
||
294 | },getGeometry:function(){ |
||
295 | var ret={};
|
||
296 | df.forIn(this.axes,function(_41){ |
||
297 | if(_41.initialized()){
|
||
298 | ret[_41.name]={name:_41.name,vertical:_41.vertical,scaler:_41.scaler,ticks:_41.ticks}; |
||
299 | } |
||
300 | }); |
||
301 | return ret;
|
||
302 | },setAxisWindow:function(_42,_43,_44,_45){ |
||
303 | var _46=this.axes[_42]; |
||
304 | if(_46){
|
||
305 | _46.setWindow(_43,_44); |
||
306 | dojo.forEach(this.stack,function(_47){ |
||
307 | if(_47.hAxis==_42||_47.vAxis==_42){
|
||
308 | _47.zoom=_45; |
||
309 | } |
||
310 | }); |
||
311 | } |
||
312 | return this; |
||
313 | },setWindow:function(sx,sy,dx,dy,_48){ |
||
314 | if(!("plotArea" in this)){ |
||
315 | this.calculateGeometry();
|
||
316 | } |
||
317 | df.forIn(this.axes,function(_49){ |
||
318 | var _4a,_4b,_4c=_49.getScaler().bounds,s=_4c.span/(_4c.upper-_4c.lower);
|
||
319 | if(_49.vertical){
|
||
320 | _4a=sy; |
||
321 | _4b=dy/s/_4a; |
||
322 | }else{
|
||
323 | _4a=sx; |
||
324 | _4b=dx/s/_4a; |
||
325 | } |
||
326 | _49.setWindow(_4a,_4b); |
||
327 | }); |
||
328 | dojo.forEach(this.stack,function(_4d){ |
||
329 | _4d.zoom=_48; |
||
330 | }); |
||
331 | return this; |
||
332 | },zoomIn:function(_4e,_4f){ |
||
333 | var _50=this.axes[_4e]; |
||
334 | if(_50){
|
||
335 | var _51,_52,_53=_50.getScaler().bounds;
|
||
336 | var _54=Math.min(_4f[0],_4f[1]); |
||
337 | var _55=Math.max(_4f[0],_4f[1]); |
||
338 | _54=_4f[0]<_53.lower?_53.lower:_54;
|
||
339 | _55=_4f[1]>_53.upper?_53.upper:_55;
|
||
340 | _51=(_53.upper-_53.lower)/(_55-_54); |
||
341 | _52=_54-_53.lower; |
||
342 | this.setAxisWindow(_4e,_51,_52);
|
||
343 | this.render();
|
||
344 | } |
||
345 | },calculateGeometry:function(){ |
||
346 | if(this.dirty){ |
||
347 | return this.fullGeometry(); |
||
348 | } |
||
349 | var _56=dojo.filter(this.stack,function(_57){ |
||
350 | return _57.dirty||(_57.hAxis&&this.axes[_57.hAxis].dirty)||(_57.vAxis&&this.axes[_57.vAxis].dirty); |
||
351 | },this);
|
||
352 | _58(_56,this.plotArea);
|
||
353 | return this; |
||
354 | },fullGeometry:function(){ |
||
355 | this._makeDirty();
|
||
356 | dojo.forEach(this.stack,_1);
|
||
357 | if(!this.theme){ |
||
358 | this.setTheme(new dojox.charting.Theme(dojox.charting._def)); |
||
359 | } |
||
360 | dojo.forEach(this.series,function(run){ |
||
361 | if(!(run.plot in this.plots)){ |
||
362 | var _59=new dc.plot2d.Default(this,{}); |
||
363 | _59.name=run.plot; |
||
364 | this.plots[run.plot]=this.stack.length; |
||
365 | this.stack.push(_59);
|
||
366 | } |
||
367 | this.stack[this.plots[run.plot]].addSeries(run); |
||
368 | },this);
|
||
369 | dojo.forEach(this.stack,function(_5a){ |
||
370 | if(_5a.hAxis){
|
||
371 | _5a.setAxis(this.axes[_5a.hAxis]);
|
||
372 | } |
||
373 | if(_5a.vAxis){
|
||
374 | _5a.setAxis(this.axes[_5a.vAxis]);
|
||
375 | } |
||
376 | },this);
|
||
377 | var dim=this.dim=this.surface.getDimensions(); |
||
378 | dim.width=dojox.gfx.normalizedLength(dim.width); |
||
379 | dim.height=dojox.gfx.normalizedLength(dim.height); |
||
380 | df.forIn(this.axes,_1);
|
||
381 | _58(this.stack,dim);
|
||
382 | var _5b=this.offsets={l:0,r:0,t:0,b:0}; |
||
383 | df.forIn(this.axes,function(_5c){ |
||
384 | df.forIn(_5c.getOffsets(),function(o,i){
|
||
385 | _5b[i]+=o; |
||
386 | }); |
||
387 | }); |
||
388 | df.forIn(this.margins,function(o,i){ |
||
389 | _5b[i]+=o; |
||
390 | }); |
||
391 | this.plotArea={width:dim.width-_5b.l-_5b.r,height:dim.height-_5b.t-_5b.b}; |
||
392 | df.forIn(this.axes,_1);
|
||
393 | _58(this.stack,this.plotArea); |
||
394 | return this; |
||
395 | },render:function(){ |
||
396 | if(this.theme){ |
||
397 | this.theme.clear();
|
||
398 | } |
||
399 | if(this.dirty){ |
||
400 | return this.fullRender(); |
||
401 | } |
||
402 | this.calculateGeometry();
|
||
403 | df.forEachRev(this.stack,function(_5d){ |
||
404 | _5d.render(this.dim,this.offsets); |
||
405 | },this);
|
||
406 | df.forIn(this.axes,function(_5e){ |
||
407 | _5e.render(this.dim,this.offsets); |
||
408 | },this);
|
||
409 | this._makeClean();
|
||
410 | if(this.surface.render){ |
||
411 | this.surface.render();
|
||
412 | } |
||
413 | return this; |
||
414 | },fullRender:function(){ |
||
415 | this.fullGeometry();
|
||
416 | var _5f=this.offsets,dim=this.dim; |
||
417 | dojo.forEach(this.series,_2);
|
||
418 | df.forIn(this.axes,_2);
|
||
419 | dojo.forEach(this.stack,_2);
|
||
420 | this.surface.clear();
|
||
421 | var t=this.theme,_60=t.plotarea&&t.plotarea.fill,_61=t.plotarea&&t.plotarea.stroke; |
||
422 | if(_60){
|
||
423 | this.surface.createRect({x:_5f.l-1,y:_5f.t-1,width:dim.width-_5f.l-_5f.r+2,height:dim.height-_5f.t-_5f.b+2}).setFill(_60); |
||
424 | } |
||
425 | if(_61){
|
||
426 | this.surface.createRect({x:_5f.l,y:_5f.t,width:dim.width-_5f.l-_5f.r+1,height:dim.height-_5f.t-_5f.b+1}).setStroke(_61); |
||
427 | } |
||
428 | df.foldr(this.stack,function(z,_62){ |
||
429 | return _62.render(dim,_5f),0; |
||
430 | },0);
|
||
431 | _60=this.fill!==undefined?this.fill:(t.chart&&t.chart.fill); |
||
432 | _61=this.stroke!==undefined?this.stroke:(t.chart&&t.chart.stroke); |
||
433 | if(_60=="inherit"){ |
||
434 | var _63=this.node,_60=new dojo.Color(dojo.style(_63,"backgroundColor")); |
||
435 | while(_60.a==0&&_63!=document.documentElement){ |
||
436 | _60=new dojo.Color(dojo.style(_63,"backgroundColor")); |
||
437 | _63=_63.parentNode; |
||
438 | } |
||
439 | } |
||
440 | if(_60){
|
||
441 | if(_5f.l){
|
||
442 | this.surface.createRect({width:_5f.l,height:dim.height+1}).setFill(_60); |
||
443 | } |
||
444 | if(_5f.r){
|
||
445 | this.surface.createRect({x:dim.width-_5f.r,width:_5f.r+1,height:dim.height+2}).setFill(_60); |
||
446 | } |
||
447 | if(_5f.t){
|
||
448 | this.surface.createRect({width:dim.width+1,height:_5f.t}).setFill(_60); |
||
449 | } |
||
450 | if(_5f.b){
|
||
451 | this.surface.createRect({y:dim.height-_5f.b,width:dim.width+1,height:_5f.b+2}).setFill(_60); |
||
452 | } |
||
453 | } |
||
454 | if(_61){
|
||
455 | this.surface.createRect({width:dim.width-1,height:dim.height-1}).setStroke(_61); |
||
456 | } |
||
457 | df.forIn(this.axes,function(_64){ |
||
458 | _64.render(dim,_5f); |
||
459 | }); |
||
460 | this._makeClean();
|
||
461 | if(this.surface.render){ |
||
462 | this.surface.render();
|
||
463 | } |
||
464 | return this; |
||
465 | },delayedRender:function(){ |
||
466 | if(!this._delayedRenderHandle){ |
||
467 | this._delayedRenderHandle=setTimeout(dojo.hitch(this,function(){ |
||
468 | clearTimeout(this._delayedRenderHandle);
|
||
469 | this._delayedRenderHandle=null; |
||
470 | this.render();
|
||
471 | }),this.delayInMs);
|
||
472 | } |
||
473 | return this; |
||
474 | },connectToPlot:function(_65,_66,_67){ |
||
475 | return _65 in this.plots?this.stack[this.plots[_65]].connect(_66,_67):null; |
||
476 | },fireEvent:function(_68,_69,_6a){ |
||
477 | if(_68 in this.runs){ |
||
478 | var _6b=this.series[this.runs[_68]].plot; |
||
479 | if(_6b in this.plots){ |
||
480 | var _6c=this.stack[this.plots[_6b]]; |
||
481 | if(_6c){
|
||
482 | _6c.fireEvent(_68,_69,_6a); |
||
483 | } |
||
484 | } |
||
485 | } |
||
486 | return this; |
||
487 | },_makeClean:function(){ |
||
488 | dojo.forEach(this.axes,_4);
|
||
489 | dojo.forEach(this.stack,_4);
|
||
490 | dojo.forEach(this.series,_4);
|
||
491 | this.dirty=false; |
||
492 | },_makeDirty:function(){ |
||
493 | dojo.forEach(this.axes,_5);
|
||
494 | dojo.forEach(this.stack,_5);
|
||
495 | dojo.forEach(this.series,_5);
|
||
496 | this.dirty=true; |
||
497 | },_invalidateDependentPlots:function(_6d,_6e){ |
||
498 | if(_6d in this.plots){ |
||
499 | var _6f=this.stack[this.plots[_6d]],_70,_71=_6e?"vAxis":"hAxis"; |
||
500 | if(_6f[_71]){
|
||
501 | _70=this.axes[_6f[_71]];
|
||
502 | if(_70&&_70.dependOnData()){
|
||
503 | _70.dirty=true;
|
||
504 | dojo.forEach(this.stack,function(p){ |
||
505 | if(p[_71]&&p[_71]==_6f[_71]){
|
||
506 | p.dirty=true;
|
||
507 | } |
||
508 | }); |
||
509 | } |
||
510 | }else{
|
||
511 | _6f.dirty=true;
|
||
512 | } |
||
513 | } |
||
514 | }}); |
||
515 | function _72(_73){ |
||
516 | return {min:_73.hmin,max:_73.hmax}; |
||
517 | }; |
||
518 | function _74(_75){ |
||
519 | return {min:_75.vmin,max:_75.vmax}; |
||
520 | }; |
||
521 | function _76(_77,h){ |
||
522 | _77.hmin=h.min; |
||
523 | _77.hmax=h.max; |
||
524 | }; |
||
525 | function _78(_79,v){ |
||
526 | _79.vmin=v.min; |
||
527 | _79.vmax=v.max; |
||
528 | }; |
||
529 | function _7a(_7b,_7c){ |
||
530 | if(_7b&&_7c){
|
||
531 | _7b.min=Math.min(_7b.min,_7c.min); |
||
532 | _7b.max=Math.max(_7b.max,_7c.max); |
||
533 | } |
||
534 | return _7b||_7c;
|
||
535 | }; |
||
536 | function _58(_7d,_7e){ |
||
537 | var _7f={},_80={};
|
||
538 | dojo.forEach(_7d,function(_81){
|
||
539 | var _82=_7f[_81.name]=_81.getSeriesStats();
|
||
540 | if(_81.hAxis){
|
||
541 | _80[_81.hAxis]=_7a(_80[_81.hAxis],_72(_82)); |
||
542 | } |
||
543 | if(_81.vAxis){
|
||
544 | _80[_81.vAxis]=_7a(_80[_81.vAxis],_74(_82)); |
||
545 | } |
||
546 | }); |
||
547 | dojo.forEach(_7d,function(_83){
|
||
548 | var _84=_7f[_83.name];
|
||
549 | if(_83.hAxis){
|
||
550 | _76(_84,_80[_83.hAxis]); |
||
551 | } |
||
552 | if(_83.vAxis){
|
||
553 | _78(_84,_80[_83.vAxis]); |
||
554 | } |
||
555 | _83.initializeScalers(_7e,_84); |
||
556 | }); |
||
557 | }; |
||
558 | })(); |
||
559 | } |