123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- define("dojox/gauges/BarLineIndicator", ["dojo/_base/declare","dojo/_base/fx","dojo/_base/connect","dojo/_base/lang", "dojox/gfx", "./_Indicator"],
- function(declare, fx, connect, lang, gfx, Indicator) {
- /*=====
- Indicator = dojox.gauges._Indicator;
- =====*/
- return declare("dojox.gauges.BarLineIndicator",[Indicator],{
-
- // summary:
- // An indicator for the BarGauge that draws a segment a line corresponding to the indicator value.
-
- width: 1,
- _getShapes: function(/*dojox.gfx.Group*/ group){
- // summary:
- // Private function for generating the shapes for this indicator. An indicator that behaves the
- // same might override this one and simply replace the shapes (such as BarIndicator).
- 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);
- var shapes = [];
- if(this.width > 1){
- shapes[0] = group.createRect({
- x:0,
- y:this._gauge.dataY + this.offset,
- width:this.width,
- height:this.length
- });
- shapes[0].setStroke({color: this.color});
- shapes[0].setFill(this.color);
- shapes[0].setTransform(gfx.matrix.translate(pos,0));
- }else{
- shapes[0] = group.createLine({
- x1:0,
- y1:this._gauge.dataY + this.offset,
- x2:0,
- y2:this._gauge.dataY + this.offset + this.length
- });
- shapes[0].setStroke({color: this.color});
- shapes[0].setTransform(gfx.matrix.translate(pos,0));
- }
- return shapes;
- },
- draw: function(/*dojox.gfx.Group*/group, /*Boolean?*/ dontAnimate){
- // summary:
- // Override of dojox.gauges._Indicator.draw
- // dontAnimate: Boolean
- // Indicates if the drawing should not be animated (vs. the default of doing an animation)
- var i;
- if (this.shape){
- this._move(dontAnimate);
- }else{
- if (this.shape){
- this.shape.parent.remove(this.shape);
- this.shape = null;
- }
- if (this.text){
- this.text.parent.remove(this.text);
- this.text = null;
- }
-
- this.color = this.color || '#000000';
- this.length = this.length || this._gauge.dataHeight;
- this.width = this.width || 3;
- this.offset = this.offset || 0;
- this.highlight = this.highlight || '#4D4D4D';
- this.highlight2 = this.highlight2 || '#A3A3A3';
-
- var shapes = this._getShapes(group, this._gauge, this);
-
- if (shapes.length > 1){
- this.shape = group.createGroup();
- for (var s = 0; s < shapes.length; s++){
- this.shape.add(shapes[s]);
- }
- } else this.shape = shapes[0];
-
- if (this.label){
- 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 (this.direction == 'inside'){
- var font = this.font ? this.font : gfx.defaultFont;
- var fz = font.size;
- var th = gfx.normalizedLength(fz);
-
- this.text = this._gauge.drawText(group, '' + this.label, pos, this._gauge.dataY + this.offset + this.length + 5 + th, 'middle', this.color, this.font);
- } else this.text = this._gauge.drawText(group, '' + this.label, pos, this._gauge.dataY + this.offset - 5, 'middle', this.color, this.font);
- }
-
- this.shape.connect("onmouseover", this, this.handleMouseOver);
- this.shape.connect("onmouseout", this, this.handleMouseOut);
- this.shape.connect("onmousedown", this, this.handleMouseDown);
- this.shape.connect("touchstart", this, this.handleTouchStart);
- this.currentValue = this.value;
- }
- },
-
- _move: function(/*Boolean?*/ dontAnimate){
- // summary:
- // Moves this indicator (since it's already been drawn once)
- // dontAnimate: Boolean
- // Indicates if the drawing should not be animated (vs. the default of doing an animation)
- var v = this.value ;
- if(v < this._gauge.min){v = this._gauge.min;}
- if(v > this._gauge.max){v = this._gauge.max;}
- var c = this._gauge._getPosition(this.currentValue);
- this.currentValue = v;
- v = this._gauge._getPosition(v);
-
- if(dontAnimate || (c==v)){
- this.shape.setTransform(gfx.matrix.translate(v,0));
- }else{
- var anim = new fx.Animation({curve: [c, v], duration: this.duration, easing: this.easing});
- connect.connect(anim, "onAnimate", lang.hitch(this, function(jump){
- if (this.shape)
- this.shape.setTransform(gfx.matrix.translate(jump,0));
- }));
- anim.play();
- }
- }
- });
- });
|