| /* |
| 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.plot2d.common"]){ |
| dojo._hasResource["dojox.charting.plot2d.common"]=true; |
| dojo.provide("dojox.charting.plot2d.common"); |
| dojo.require("dojo.colors"); |
| dojo.require("dojox.gfx"); |
| dojo.require("dojox.lang.functional"); |
| (function(){ |
| var df=dojox.lang.functional,dc=dojox.charting.plot2d.common; |
| dojo.mixin(dojox.charting.plot2d.common,{makeStroke:function(_1){ |
| if(!_1){ |
| return _1; |
| } |
| if(typeof _1=="string"||_1 instanceof dojo.Color){ |
| _1={color:_1}; |
| } |
| return dojox.gfx.makeParameters(dojox.gfx.defaultStroke,_1); |
| },augmentColor:function(_2,_3){ |
| var t=new dojo.Color(_2),c=new dojo.Color(_3); |
| c.a=t.a; |
| return c; |
| },augmentStroke:function(_4,_5){ |
| var s=dc.makeStroke(_4); |
| if(s){ |
| s.color=dc.augmentColor(s.color,_5); |
| } |
| return s; |
| },augmentFill:function(_6,_7){ |
| var fc,c=new dojo.Color(_7); |
| if(typeof _6=="string"||_6 instanceof dojo.Color){ |
| return dc.augmentColor(_6,_7); |
| } |
| return _6; |
| },defaultStats:{hmin:Number.POSITIVE_INFINITY,hmax:Number.NEGATIVE_INFINITY,vmin:Number.POSITIVE_INFINITY,vmax:Number.NEGATIVE_INFINITY},collectSimpleStats:function(_8){ |
| var _9=dojo.clone(dc.defaultStats); |
| for(var i=0;i<_8.length;++i){ |
| var _a=_8[i]; |
| if(!_a.data.length){ |
| continue; |
| } |
| if(typeof _a.data[0]=="number"){ |
| var _b=_9.vmin,_c=_9.vmax; |
| if(!("ymin" in _a)||!("ymax" in _a)){ |
| dojo.forEach(_a.data,function(_d,i){ |
| var x=i+1,y=_d; |
| if(isNaN(y)){ |
| y=0; |
| } |
| _9.hmin=Math.min(_9.hmin,x); |
| _9.hmax=Math.max(_9.hmax,x); |
| _9.vmin=Math.min(_9.vmin,y); |
| _9.vmax=Math.max(_9.vmax,y); |
| }); |
| } |
| if("ymin" in _a){ |
| _9.vmin=Math.min(_b,_a.ymin); |
| } |
| if("ymax" in _a){ |
| _9.vmax=Math.max(_c,_a.ymax); |
| } |
| }else{ |
| var _e=_9.hmin,_f=_9.hmax,_b=_9.vmin,_c=_9.vmax; |
| if(!("xmin" in _a)||!("xmax" in _a)||!("ymin" in _a)||!("ymax" in _a)){ |
| dojo.forEach(_a.data,function(val,i){ |
| var x="x" in val?val.x:i+1,y=val.y; |
| if(isNaN(x)){ |
| x=0; |
| } |
| if(isNaN(y)){ |
| y=0; |
| } |
| _9.hmin=Math.min(_9.hmin,x); |
| _9.hmax=Math.max(_9.hmax,x); |
| _9.vmin=Math.min(_9.vmin,y); |
| _9.vmax=Math.max(_9.vmax,y); |
| }); |
| } |
| if("xmin" in _a){ |
| _9.hmin=Math.min(_e,_a.xmin); |
| } |
| if("xmax" in _a){ |
| _9.hmax=Math.max(_f,_a.xmax); |
| } |
| if("ymin" in _a){ |
| _9.vmin=Math.min(_b,_a.ymin); |
| } |
| if("ymax" in _a){ |
| _9.vmax=Math.max(_c,_a.ymax); |
| } |
| } |
| } |
| return _9; |
| },calculateBarSize:function(_10,opt,_11){ |
| if(!_11){ |
| _11=1; |
| } |
| var gap=opt.gap,_12=(_10-2*gap)/_11; |
| if("minBarSize" in opt){ |
| _12=Math.max(_12,opt.minBarSize); |
| } |
| if("maxBarSize" in opt){ |
| _12=Math.min(_12,opt.maxBarSize); |
| } |
| _12=Math.max(_12,1); |
| gap=(_10-_12*_11)/2; |
| return {size:_12,gap:gap}; |
| },collectStackedStats:function(_13){ |
| var _14=dojo.clone(dc.defaultStats); |
| if(_13.length){ |
| _14.hmin=Math.min(_14.hmin,1); |
| _14.hmax=df.foldl(_13,"seed, run -> Math.max(seed, run.data.length)",_14.hmax); |
| for(var i=0;i<_14.hmax;++i){ |
| var v=_13[0].data[i]; |
| if(isNaN(v)){ |
| v=0; |
| } |
| _14.vmin=Math.min(_14.vmin,v); |
| for(var j=1;j<_13.length;++j){ |
| var t=_13[j].data[i]; |
| if(isNaN(t)){ |
| t=0; |
| } |
| v+=t; |
| } |
| _14.vmax=Math.max(_14.vmax,v); |
| } |
| } |
| return _14; |
| },curve:function(a,_15){ |
| var arr=a.slice(0); |
| if(_15=="x"){ |
| arr[arr.length]=arr[0]; |
| } |
| var p=dojo.map(arr,function(_16,i){ |
| if(i==0){ |
| return "M"+_16.x+","+_16.y; |
| } |
| if(!isNaN(_15)){ |
| var dx=_16.x-arr[i-1].x,dy=arr[i-1].y; |
| return "C"+(_16.x-(_15-1)*(dx/_15))+","+dy+" "+(_16.x-(dx/_15))+","+_16.y+" "+_16.x+","+_16.y; |
| }else{ |
| if(_15=="X"||_15=="x"||_15=="S"){ |
| var p0,p1=arr[i-1],p2=arr[i],p3; |
| var _17,_18,_19,_1a; |
| var f=1/6; |
| if(i==1){ |
| if(_15=="x"){ |
| p0=arr[arr.length-2]; |
| }else{ |
| p0=p1; |
| } |
| f=1/3; |
| }else{ |
| p0=arr[i-2]; |
| } |
| if(i==(arr.length-1)){ |
| if(_15=="x"){ |
| p3=arr[1]; |
| }else{ |
| p3=p2; |
| } |
| f=1/3; |
| }else{ |
| p3=arr[i+1]; |
| } |
| var _1b=Math.sqrt((p2.x-p1.x)*(p2.x-p1.x)+(p2.y-p1.y)*(p2.y-p1.y)); |
| var _1c=Math.sqrt((p2.x-p0.x)*(p2.x-p0.x)+(p2.y-p0.y)*(p2.y-p0.y)); |
| var _1d=Math.sqrt((p3.x-p1.x)*(p3.x-p1.x)+(p3.y-p1.y)*(p3.y-p1.y)); |
| var _1e=_1c*f; |
| var _1f=_1d*f; |
| if(_1e>_1b/2&&_1f>_1b/2){ |
| _1e=_1b/2; |
| _1f=_1b/2; |
| }else{ |
| if(_1e>_1b/2){ |
| _1e=_1b/2; |
| _1f=_1b/2*_1d/_1c; |
| }else{ |
| if(_1f>_1b/2){ |
| _1f=_1b/2; |
| _1e=_1b/2*_1c/_1d; |
| } |
| } |
| } |
| if(_15=="S"){ |
| if(p0==p1){ |
| _1e=0; |
| } |
| if(p2==p3){ |
| _1f=0; |
| } |
| } |
| _17=p1.x+_1e*(p2.x-p0.x)/_1c; |
| _18=p1.y+_1e*(p2.y-p0.y)/_1c; |
| _19=p2.x-_1f*(p3.x-p1.x)/_1d; |
| _1a=p2.y-_1f*(p3.y-p1.y)/_1d; |
| } |
| } |
| return "C"+(_17+","+_18+" "+_19+","+_1a+" "+p2.x+","+p2.y); |
| }); |
| return p.join(" "); |
| }}); |
| })(); |
| } |