root / trunk / web / dojo / dojox / charting / plot2d / Grid.js @ 11
History | View | Annotate | Download (4.45 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.Grid"]){ |
||
9 | dojo._hasResource["dojox.charting.plot2d.Grid"]=true; |
||
10 | dojo.provide("dojox.charting.plot2d.Grid");
|
||
11 | dojo.require("dojox.charting.Element");
|
||
12 | dojo.require("dojox.charting.plot2d.common");
|
||
13 | dojo.require("dojox.lang.functional");
|
||
14 | dojo.require("dojox.lang.utils");
|
||
15 | (function(){
|
||
16 | var du=dojox.lang.utils,dc=dojox.charting.plot2d.common;
|
||
17 | dojo.declare("dojox.charting.plot2d.Grid",dojox.charting.Element,{defaultParams:{hAxis:"x",vAxis:"y",hMajorLines:true,hMinorLines:false,vMajorLines:true,vMinorLines:false,hStripes:"none",vStripes:"none",animate:null},optionalParams:{},constructor:function(_1,_2){ |
||
18 | this.opt=dojo.clone(this.defaultParams); |
||
19 | du.updateWithObject(this.opt,_2);
|
||
20 | this.hAxis=this.opt.hAxis; |
||
21 | this.vAxis=this.opt.vAxis; |
||
22 | this.dirty=true; |
||
23 | this.animate=this.opt.animate; |
||
24 | this.zoom=null,this.zoomQueue=[]; |
||
25 | this.lastWindow={vscale:1,hscale:1,xoffset:0,yoffset:0}; |
||
26 | },clear:function(){ |
||
27 | this._hAxis=null; |
||
28 | this._vAxis=null; |
||
29 | this.dirty=true; |
||
30 | return this; |
||
31 | },setAxis:function(_3){ |
||
32 | if(_3){
|
||
33 | this[_3.vertical?"_vAxis":"_hAxis"]=_3; |
||
34 | } |
||
35 | return this; |
||
36 | },addSeries:function(_4){ |
||
37 | return this; |
||
38 | },getSeriesStats:function(){ |
||
39 | return dojo.delegate(dc.defaultStats);
|
||
40 | },initializeScalers:function(){ |
||
41 | return this; |
||
42 | },isDirty:function(){ |
||
43 | return this.dirty||this._hAxis&&this._hAxis.dirty||this._vAxis&&this._vAxis.dirty; |
||
44 | },performZoom:function(_5,_6){ |
||
45 | var vs=this._vAxis.scale||1,hs=this._hAxis.scale||1,_7=_5.height-_6.b,_8=this._hAxis.getScaler().bounds,_9=(_8.from-_8.lower)*_8.scale,_a=this._vAxis.getScaler().bounds,_b=(_a.from-_a.lower)*_a.scale; |
||
46 | rVScale=vs/this.lastWindow.vscale,rHScale=hs/this.lastWindow.hscale,rXOffset=(this.lastWindow.xoffset-_9)/((this.lastWindow.hscale==1)?hs:this.lastWindow.hscale),rYOffset=(_b-this.lastWindow.yoffset)/((this.lastWindow.vscale==1)?vs:this.lastWindow.vscale),shape=this.group,anim=dojox.gfx.fx.animateTransform(dojo.delegate({shape:shape,duration:1200,transform:[{name:"translate",start:[0,0],end:[_6.l*(1-rHScale),_7*(1-rVScale)]},{name:"scale",start:[1,1],end:[rHScale,rVScale]},{name:"original"},{name:"translate",start:[0,0],end:[rXOffset,rYOffset]}]},this.zoom)); |
||
47 | dojo.mixin(this.lastWindow,{vscale:vs,hscale:hs,xoffset:_9,yoffset:_b}); |
||
48 | this.zoomQueue.push(anim);
|
||
49 | dojo.connect(anim,"onEnd",this,function(){ |
||
50 | this.zoom=null; |
||
51 | this.zoomQueue.shift();
|
||
52 | if(this.zoomQueue.length>0){ |
||
53 | this.zoomQueue[0].play(); |
||
54 | } |
||
55 | }); |
||
56 | if(this.zoomQueue.length==1){ |
||
57 | this.zoomQueue[0].play(); |
||
58 | } |
||
59 | return this; |
||
60 | },getRequiredColors:function(){ |
||
61 | return 0; |
||
62 | },render:function(_c,_d){ |
||
63 | if(this.zoom){ |
||
64 | return this.performZoom(_c,_d); |
||
65 | } |
||
66 | this.dirty=this.isDirty(); |
||
67 | if(!this.dirty){ |
||
68 | return this; |
||
69 | } |
||
70 | this.cleanGroup();
|
||
71 | var s=this.group,ta=this.chart.theme.axis; |
||
72 | try{
|
||
73 | var _e=this._vAxis.getScaler(),vt=_e.scaler.getTransformerFromModel(_e),_f=this._vAxis.getTicks(); |
||
74 | if(this.opt.hMinorLines){ |
||
75 | dojo.forEach(_f.minor,function(_10){
|
||
76 | var y=_c.height-_d.b-vt(_10.value);
|
||
77 | var _11=s.createLine({x1:_d.l,y1:y,x2:_c.width-_d.r,y2:y}).setStroke(ta.minorTick); |
||
78 | if(this.animate){ |
||
79 | this._animateGrid(_11,"h",_d.l,_d.r+_d.l-_c.width); |
||
80 | } |
||
81 | },this);
|
||
82 | } |
||
83 | if(this.opt.hMajorLines){ |
||
84 | dojo.forEach(_f.major,function(_12){
|
||
85 | var y=_c.height-_d.b-vt(_12.value);
|
||
86 | var _13=s.createLine({x1:_d.l,y1:y,x2:_c.width-_d.r,y2:y}).setStroke(ta.majorTick); |
||
87 | if(this.animate){ |
||
88 | this._animateGrid(_13,"h",_d.l,_d.r+_d.l-_c.width); |
||
89 | } |
||
90 | },this);
|
||
91 | } |
||
92 | } |
||
93 | catch(e){
|
||
94 | } |
||
95 | try{
|
||
96 | var _14=this._hAxis.getScaler(),ht=_14.scaler.getTransformerFromModel(_14),_f=this._hAxis.getTicks(); |
||
97 | if(_f&&this.opt.vMinorLines){ |
||
98 | dojo.forEach(_f.minor,function(_15){
|
||
99 | var x=_d.l+ht(_15.value);
|
||
100 | var _16=s.createLine({x1:x,y1:_d.t,x2:x,y2:_c.height-_d.b}).setStroke(ta.minorTick); |
||
101 | if(this.animate){ |
||
102 | this._animateGrid(_16,"v",_c.height-_d.b,_c.height-_d.b-_d.t); |
||
103 | } |
||
104 | },this);
|
||
105 | } |
||
106 | if(_f&&this.opt.vMajorLines){ |
||
107 | dojo.forEach(_f.major,function(_17){
|
||
108 | var x=_d.l+ht(_17.value);
|
||
109 | var _18=s.createLine({x1:x,y1:_d.t,x2:x,y2:_c.height-_d.b}).setStroke(ta.majorTick); |
||
110 | if(this.animate){ |
||
111 | this._animateGrid(_18,"v",_c.height-_d.b,_c.height-_d.b-_d.t); |
||
112 | } |
||
113 | },this);
|
||
114 | } |
||
115 | } |
||
116 | catch(e){
|
||
117 | } |
||
118 | this.dirty=false; |
||
119 | return this; |
||
120 | },_animateGrid:function(_19,_1a,_1b,_1c){ |
||
121 | var _1d=_1a=="h"?[_1b,0]:[0,_1b]; |
||
122 | var _1e=_1a=="h"?[1/_1c,1]:[1,1/_1c]; |
||
123 | dojox.gfx.fx.animateTransform(dojo.delegate({shape:_19,duration:1200,transform:[{name:"translate",start:_1d,end:[0,0]},{name:"scale",start:_1e,end:[1,1]},{name:"original"}]},this.animate)).play(); |
||
124 | }}); |
||
125 | })(); |
||
126 | } |