12345678 |
- /*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
- */
- if(!dojo._hasResource["dojox.charting.Chart2D"]){dojo._hasResource["dojox.charting.Chart2D"]=true;dojo.provide("dojox.charting.Chart2D");dojo.require("dojox.gfx");dojo.require("dojox.lang.functional");dojo.require("dojox.lang.functional.fold");dojo.require("dojox.lang.functional.reversed");dojo.require("dojox.charting.Theme");dojo.require("dojox.charting.Series");dojo.require("dojox.charting.axis2d.Default");dojo.require("dojox.charting.plot2d.Default");dojo.require("dojox.charting.plot2d.Lines");dojo.require("dojox.charting.plot2d.Areas");dojo.require("dojox.charting.plot2d.Markers");dojo.require("dojox.charting.plot2d.MarkersOnly");dojo.require("dojox.charting.plot2d.Scatter");dojo.require("dojox.charting.plot2d.Stacked");dojo.require("dojox.charting.plot2d.StackedLines");dojo.require("dojox.charting.plot2d.StackedAreas");dojo.require("dojox.charting.plot2d.Columns");dojo.require("dojox.charting.plot2d.StackedColumns");dojo.require("dojox.charting.plot2d.ClusteredColumns");dojo.require("dojox.charting.plot2d.Bars");dojo.require("dojox.charting.plot2d.StackedBars");dojo.require("dojox.charting.plot2d.ClusteredBars");dojo.require("dojox.charting.plot2d.Grid");dojo.require("dojox.charting.plot2d.Pie");dojo.require("dojox.charting.plot2d.Bubble");dojo.require("dojox.charting.plot2d.Candlesticks");dojo.require("dojox.charting.plot2d.OHLC");(function(){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");dojo.declare("dojox.charting.Chart2D",null,{constructor:function(_6,_7){if(!_7){_7={};}this.margins=_7.margins?_7.margins:{l:10,t:10,r:10,b:10};this.stroke=_7.stroke;this.fill=_7.fill;this.theme=null;this.axes={};this.stack=[];this.plots={};this.series=[];this.runs={};this.dirty=true;this.coords=null;this.node=dojo.byId(_6);var _8=dojo.marginBox(_6);this.surface=dojox.gfx.createSurface(this.node,_8.w,_8.h);},destroy:function(){dojo.forEach(this.series,_3);dojo.forEach(this.stack,_3);df.forIn(this.axes,_3);this.surface.destroy();},getCoords:function(){if(!this.coords){this.coords=dojo.coords(this.node,true);}return this.coords;},setTheme:function(_9){this.theme=_9._clone();this.dirty=true;return this;},addAxis:function(_a,_b){var _c;if(!_b||!("type" in _b)){_c=new dc.axis2d.Default(this,_b);}else{_c=typeof _b.type=="string"?new dc.axis2d[_b.type](this,_b):new _b.type(this,_b);}_c.name=_a;_c.dirty=true;if(_a in this.axes){this.axes[_a].destroy();}this.axes[_a]=_c;this.dirty=true;return this;},getAxis:function(_d){return this.axes[_d];},removeAxis:function(_e){if(_e in this.axes){this.axes[_e].destroy();delete this.axes[_e];this.dirty=true;}return this;},addPlot:function(_f,_10){var _11;if(!_10||!("type" in _10)){_11=new dc.plot2d.Default(this,_10);}else{_11=typeof _10.type=="string"?new dc.plot2d[_10.type](this,_10):new _10.type(this,_10);}_11.name=_f;_11.dirty=true;if(_f in this.plots){this.stack[this.plots[_f]].destroy();this.stack[this.plots[_f]]=_11;}else{this.plots[_f]=this.stack.length;this.stack.push(_11);}this.dirty=true;return this;},removePlot:function(_12){if(_12 in this.plots){var _13=this.plots[_12];delete this.plots[_12];this.stack[_13].destroy();this.stack.splice(_13,1);df.forIn(this.plots,function(idx,_14,_15){if(idx>_13){_15[_14]=idx-1;}});this.dirty=true;}return this;},addSeries:function(_16,_17,_18){var run=new dc.Series(this,_17,_18);if(_16 in this.runs){this.series[this.runs[_16]].destroy();this.series[this.runs[_16]]=run;}else{this.runs[_16]=this.series.length;this.series.push(run);}run.name=_16;this.dirty=true;if(!("ymin" in run)&&"min" in run){run.ymin=run.min;}if(!("ymax" in run)&&"max" in run){run.ymax=run.max;}return this;},removeSeries:function(_19){if(_19 in this.runs){var _1a=this.runs[_19],_1b=this.series[_1a].plot;delete this.runs[_19];this.series[_1a].destroy();this.series.splice(_1a,1);df.forIn(this.runs,function(idx,_1c,_1d){if(idx>_1a){_1d[_1c]=idx-1;}});this.dirty=true;}return this;},updateSeries:function(_1e,_1f){if(_1e in this.runs){var run=this.series[this.runs[_1e]];run.data=_1f;run.dirty=true;this._invalidateDependentPlots(run.plot,false);this._invalidateDependentPlots(run.plot,true);}return this;},resize:function(_20,_21){var box;switch(arguments.length){case 0:box=dojo.marginBox(this.node);break;case 1:box=_20;break;default:box={w:_20,h:_21};break;}dojo.marginBox(this.node,box);this.surface.setDimensions(box.w,box.h);this.dirty=true;this.coords=null;return this.render();},getGeometry:function(){var ret={};df.forIn(this.axes,function(_22){if(_22.initialized()){ret[_22.name]={name:_22.name,vertical:_22.vertical,scaler:_22.scaler,ticks:_22.ticks};}});return ret;},setAxisWindow:function(_23,_24,_25){var _26=this.axes[_23];if(_26){_26.setWindow(_24,_25);}return this;},setWindow:function(sx,sy,dx,dy){if(!("plotArea" in this)){this.calculateGeometry();}df.forIn(this.axes,function(_27){var _28,_29,_2a=_27.getScaler().bounds,s=_2a.span/(_2a.upper-_2a.lower);if(_27.vertical){_28=sy;_29=dy/s/_28;}else{_28=sx;_29=dx/s/_28;}_27.setWindow(_28,_29);});return this;},calculateGeometry:function(){if(this.dirty){return this.fullGeometry();}dojo.forEach(this.stack,function(_2b){if(_2b.dirty||(_2b.hAxis&&this.axes[_2b.hAxis].dirty)||(_2b.vAxis&&this.axes[_2b.vAxis].dirty)){_2b.calculateAxes(this.plotArea);}},this);return this;},fullGeometry:function(){this._makeDirty();dojo.forEach(this.stack,_1);if(!this.theme){this.setTheme(new dojox.charting.Theme(dojox.charting._def));}dojo.forEach(this.series,function(run){if(!(run.plot in this.plots)){var _2c=new dc.plot2d.Default(this,{});_2c.name=run.plot;this.plots[run.plot]=this.stack.length;this.stack.push(_2c);}this.stack[this.plots[run.plot]].addSeries(run);},this);dojo.forEach(this.stack,function(_2d){if(_2d.hAxis){_2d.setAxis(this.axes[_2d.hAxis]);}if(_2d.vAxis){_2d.setAxis(this.axes[_2d.vAxis]);}},this);var dim=this.dim=this.surface.getDimensions();dim.width=dojox.gfx.normalizedLength(dim.width);dim.height=dojox.gfx.normalizedLength(dim.height);df.forIn(this.axes,_1);dojo.forEach(this.stack,function(p){p.calculateAxes(dim);});var _2e=this.offsets={l:0,r:0,t:0,b:0};df.forIn(this.axes,function(_2f){df.forIn(_2f.getOffsets(),function(o,i){_2e[i]+=o;});});df.forIn(this.margins,function(o,i){_2e[i]+=o;});this.plotArea={width:dim.width-_2e.l-_2e.r,height:dim.height-_2e.t-_2e.b};df.forIn(this.axes,_1);dojo.forEach(this.stack,function(_30){_30.calculateAxes(this.plotArea);},this);return this;},render:function(){if(this.theme){this.theme.clear();}if(this.dirty){return this.fullRender();}this.calculateGeometry();df.forEachRev(this.stack,function(_31){_31.render(this.dim,this.offsets);},this);df.forIn(this.axes,function(_32){_32.render(this.dim,this.offsets);},this);this._makeClean();if(this.surface.render){this.surface.render();}return this;},fullRender:function(){this.fullGeometry();var _33=this.offsets,dim=this.dim;var _34=df.foldl(this.stack,"z + plot.getRequiredColors()",0);this.theme.defineColors({num:_34,cache:false});dojo.forEach(this.series,_2);df.forIn(this.axes,_2);dojo.forEach(this.stack,_2);this.surface.clear();var t=this.theme,_35=t.plotarea&&t.plotarea.fill,_36=t.plotarea&&t.plotarea.stroke;if(_35){this.surface.createRect({x:_33.l,y:_33.t,width:dim.width-_33.l-_33.r,height:dim.height-_33.t-_33.b}).setFill(_35);}if(_36){this.surface.createRect({x:_33.l,y:_33.t,width:dim.width-_33.l-_33.r-1,height:dim.height-_33.t-_33.b-1}).setStroke(_36);}df.foldr(this.stack,function(z,_37){return _37.render(dim,_33),0;},0);_35=this.fill?this.fill:(t.chart&&t.chart.fill);_36=this.stroke?this.stroke:(t.chart&&t.chart.stroke);if(_35=="inherit"){var _38=this.node,_35=new dojo.Color(dojo.style(_38,"backgroundColor"));while(_35.a==0&&_38!=document.documentElement){_35=new dojo.Color(dojo.style(_38,"backgroundColor"));_38=_38.parentNode;}}if(_35){if(_33.l){this.surface.createRect({width:_33.l,height:dim.height+1}).setFill(_35);}if(_33.r){this.surface.createRect({x:dim.width-_33.r,width:_33.r+1,height:dim.height+1}).setFill(_35);}if(_33.t){this.surface.createRect({width:dim.width+1,height:_33.t}).setFill(_35);}if(_33.b){this.surface.createRect({y:dim.height-_33.b,width:dim.width+1,height:_33.b+2}).setFill(_35);}}if(_36){this.surface.createRect({width:dim.width-1,height:dim.height-1}).setStroke(_36);}df.forIn(this.axes,function(_39){_39.render(dim,_33);});this._makeClean();if(this.surface.render){this.surface.render();}return this;},connectToPlot:function(_3a,_3b,_3c){return _3a in this.plots?this.stack[this.plots[_3a]].connect(_3b,_3c):null;},_makeClean:function(){dojo.forEach(this.axes,_4);dojo.forEach(this.stack,_4);dojo.forEach(this.series,_4);this.dirty=false;},_makeDirty:function(){dojo.forEach(this.axes,_5);dojo.forEach(this.stack,_5);dojo.forEach(this.series,_5);this.dirty=true;},_invalidateDependentPlots:function(_3d,_3e){if(_3d in this.plots){var _3f=this.stack[this.plots[_3d]],_40,_41=_3e?"vAxis":"hAxis";if(_3f[_41]){_40=this.axes[_3f[_41]];if(_40&&_40.dependOnData()){_40.dirty=true;dojo.forEach(this.stack,function(p){if(p[_41]&&p[_41]==_3f[_41]){p.dirty=true;}});}}else{_3f.dirty=true;}}}});})();}
|