diff options
Diffstat (limited to 'js/dojo-1.7.2/dojox/gauges/BarIndicator.js')
| -rw-r--r-- | js/dojo-1.7.2/dojox/gauges/BarIndicator.js | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/js/dojo-1.7.2/dojox/gauges/BarIndicator.js b/js/dojo-1.7.2/dojox/gauges/BarIndicator.js new file mode 100644 index 0000000..e79f12d --- /dev/null +++ b/js/dojo-1.7.2/dojox/gauges/BarIndicator.js @@ -0,0 +1,80 @@ +//>>built +define("dojox/gauges/BarIndicator", ["dojo/_base/declare","dojo/_base/fx","dojo/_base/connect","dojo/_base/lang","./BarLineIndicator"], +function(declare, fx, connect, lang, BarLineIndicator) { + +/*===== + BarLineIndicator = dojox.gauges.BarLineIndicator; +=====*/ + +return declare("dojox.gauges.BarIndicator",[BarLineIndicator],{ + + // summary: + // An indicator for the BarGauge that draws a bar corresponding to the indicator value. + + _getShapes: function(group){ + // summary: + // Override of dojox.gauges.BarLineIndicator._getShapes + if(!this._gauge){ + return null; + } + var v = this.value; + if(v < this._gauge.min){v = this._gauge.min;} + if(v > this._gauge.max){v = this._gauge.max;} + var pos = this._gauge._getPosition(v); + if(pos == this.dataX){pos = this.dataX+1;} + var y = this._gauge.dataY + Math.floor((this._gauge.dataHeight - this.width)/2) + this.offset; + + var shapes = []; + shapes[0] = group.createRect({x:this._gauge.dataX, y:y, width:pos - this._gauge.dataX, height:this.width}); + shapes[0].setStroke({color: this.color}); + shapes[0].setFill(this.color); + shapes[1] = group.createLine({ x1:this._gauge.dataX, y1:y, x2:pos, y2:y }); + shapes[1].setStroke({color: this.highlight}); + if(this.highlight2){ + y--; + shapes[2] = group.createLine({ x1:this._gauge.dataX, y1:y, x2:pos, y2:y }); + shapes[2].setStroke({color: this.highlight2}); + } + + return shapes; + }, + _createShapes: function(val){ + // summary: + // Creates a shallow copy of the current shapes while adjusting for the new value + for(var i in this.shape.children){ + i = this.shape.children[i]; + var newShape = {}; + for(var j in i){ + newShape[j] = i[j]; + } + if(i.shape.type == "line"){ + newShape.shape.x2 = val+newShape.shape.x1; + }else if(i.shape.type == "rect"){ + newShape.width = val; + } + i.setShape(newShape); + } + }, + _move: function(/*Boolean?*/ dontAnimate){ + // summary: + // Override of dojox.gauges.BarLineIndicator._move to resize the bar (rather than moving it) + + var c; + var v = this.value ; + if(v < this.min){v = this.min;} + if(v > this.max){v = this.max;} + c = this._gauge._getPosition(this.currentValue); + this.currentValue = v; + v = this._gauge._getPosition(v)-this._gauge.dataX; + if(dontAnimate){ + this._createShapes(v); + }else{ + if(c!=v){ + var anim = new fx.Animation({curve: [c, v], duration: this.duration, easing: this.easing}); + connect.connect(anim, "onAnimate", lang.hitch(this, this._createShapes)); + anim.play(); + } + } + } +}); +}); |
