diff options
Diffstat (limited to 'js/dojo-1.7.2/dojox/gauges/GlossyCircularGaugeBase.js')
| -rw-r--r-- | js/dojo-1.7.2/dojox/gauges/GlossyCircularGaugeBase.js | 541 |
1 files changed, 541 insertions, 0 deletions
diff --git a/js/dojo-1.7.2/dojox/gauges/GlossyCircularGaugeBase.js b/js/dojo-1.7.2/dojox/gauges/GlossyCircularGaugeBase.js new file mode 100644 index 0000000..60ea5a3 --- /dev/null +++ b/js/dojo-1.7.2/dojox/gauges/GlossyCircularGaugeBase.js @@ -0,0 +1,541 @@ +//>>built +define("dojox/gauges/GlossyCircularGaugeBase", ["dojo/_base/declare","dojo/_base/lang","dojo/_base/connect","dojox/gfx","./AnalogGauge","./AnalogCircleIndicator","./TextIndicator","./GlossyCircularGaugeNeedle"], +function(declare, lang, connect, gfx, AnalogGauge, AnalogCircleIndicator, TextIndicator, GlossyCircularGaugeNeedle) { +/*===== + AnalogGauge = dojox.gauges.AnalogGauge; +=====*/ +return declare("dojox.gauges.GlossyCircularGaugeBase", [AnalogGauge], { + // summary: + // The base class for GlossyCircularGauge and GlossySemiCircularGauge. + + + //_defaultIndicator : _Indicator + // the type of default indicator to create + _defaultIndicator: AnalogCircleIndicator, + + // _needle: dojox.gauges.GlossyCircularGaugeNeedle + // the needle of this circular gauge + _needle: null, + + // _textIndicator: dojox.gauges.TextIndicator + // the text displaying the gauge's value + _textIndicator: null, + + _textIndicatorAdded: false, + + // _range: Object + // the range of this gauge + _range: null, + + // value: Number + // The value of the gauge. + value: 0, + + // color: String + // The main color of the gauge. + color: 'black', + + // needleColor: Color + // The main color of the needle. + needleColor: '#c4c4c4', + + // textIndicatorFont: String + // The font of the text indicator + textIndicatorFont: "normal normal normal 20pt serif", + + // textIndicatorVisible: Boolean + // Indicates if the text indicator is visible + textIndicatorVisible: true, + + // textIndicatorColor: Color + // The color of the text indicator + textIndicatorColor: '#c4c4c4', + + // _majorTicksOffset: Number + // Distance, at design, from gauge's center to major ticks + _majorTicksOffset: 130, + + // majorTicksInterval: Number + // Interval between major ticks + majorTicksInterval: 10, + + // _majorTicksLength: Number + // Major tick size, at design + _majorTicksLength: 5, + + // majorTicksColor: Color + // Color of major tick marks + majorTicksColor: '#c4c4c4', + + // majorTicksLabelPlacement: String + // Placement of major tick labels + majorTicksLabelPlacement: 'inside', + + // _minorTicksOffset: Number + // Distance, at design, from gauge's center to minor ticks + _minorTicksOffset: 130, + + // minorTicksInterval: Number + // Interval between minor ticks + minorTicksInterval: 5, + + // _minorTicksLength: Number + // Minor tick size, at design + _minorTicksLength: 3, + + // minorTicksColor: Color + // Color of minor tick marks + minorTicksColor: '#c4c4c4', + + // noChange: Boolean + // Indicates if the gauge reacts to touch events + noChange: false, + + // title: String + // The title displayed in the needle's tooltip + title: "", + + // font: Object + // The font of the gauge + font: "normal normal normal 10pt serif", + + // scalePrecision: Number + // The precision for the formatting of numbers in the scale (default is 0) + scalePrecision: 0, + + // textIndicatorPrecision: Number + // The precision for the formatting of numbers in the text indicator (default is 0) + textIndicatorPrecision: 0, + + _font: null, + + + constructor: function(){ + this.startAngle = -135; + this.endAngle = 135; + this.min = 0; + this.max = 100; + }, + + startup: function(){ + // summary: + // Overrides AnalogGauge.startup + this.inherited(arguments); + + //just in case someone calls the startup twice. + + if (this._needle) return; + + var scale = Math.min((this.width / this._designWidth), (this.height / this._designHeight)); + this.cx = scale * this._designCx + (this.width - scale * this._designWidth) / 2; + this.cy = scale * this._designCy + (this.height - scale * this._designHeight) / 2; + + this._range = { + low: this.min ? this.min : 0, + high: this.max ? this.max : 100, + color: [255, 255, 255, 0] + }; + this.addRange(this._range); + + this._majorTicksOffset = this._minorTicksOffset = scale * this._majorTicksOffset; + this._majorTicksLength = scale * this._majorTicksLength; + this._minorTicksLength = scale * this._minorTicksLength; + + // creates and add the major ticks + this.setMajorTicks({ + fixedPrecision: true, + precision: this.scalePrecision, + font: this._font, + offset: this._majorTicksOffset, + interval: this.majorTicksInterval, + length: this._majorTicksLength, + color: this.majorTicksColor, + labelPlacement: this.majorTicksLabelPlacement + }); + + // creates and add the minor ticks + this.setMinorTicks({ + offset: this._minorTicksOffset, + interval: this.minorTicksInterval, + length: this._minorTicksLength, + color: this.minorTicksColor + }); + + // creates and adds the needle + this._needle = new GlossyCircularGaugeNeedle({ + hideValue: true, + title: this.title, + noChange: this.noChange, + color: this.needleColor, + value: this.value + }); + this.addIndicator(this._needle); + + // creates and add the text indicator + this._textIndicator = new TextIndicator({ + x: scale * this._designTextIndicatorX + (this.width - scale * this._designWidth) / 2, + y: scale * this._designTextIndicatorY + (this.height - scale * this._designHeight) / 2, + fixedPrecision: true, + precision: this.textIndicatorPrecision, + color: this.textIndicatorColor, + value: this.value ? this.value : this.min, + align: "middle", + font: this._textIndicatorFont + }); + + if (this.textIndicatorVisible){ + this.addIndicator(this._textIndicator); + this._textIndicatorAdded = true; + } + + // connect needle and text + connect.connect(this._needle, "valueChanged", lang.hitch(this, function(){ + this.value = this._needle.value; + this._textIndicator.update(this._needle.value); + this.onValueChanged(); + })); + + }, + + + onValueChanged: function(){ + // summary: + // Invoked when the value of the gauge has changed. + + }, + + //******************************************************************************************* + //* Property getters and setters + //******************************************************************************************* + + _setColorAttr: function(color){ + // summary: + // Sets the main color of the gauge + // color: String + // The color + this.color = color ? color : 'black'; + if (this._gaugeBackground && this._gaugeBackground.parent) + this._gaugeBackground.parent.remove(this._gaugeBackground); + if (this._foreground && this._foreground.parent) + this._foreground.parent.remove(this._foreground); + this._gaugeBackground = null; + this._foreground = null; + this.draw(); + }, + + _setNeedleColorAttr: function(color){ + // summary: + // Sets the main color of the needle + // color: String + // The color + this.needleColor = color; + if (this._needle){ + this.removeIndicator(this._needle); + this._needle.color = this.needleColor; + this._needle.shape = null; + this.addIndicator(this._needle); + } + }, + + _setTextIndicatorColorAttr: function(color){ + // summary: + // Sets the color of text indicator display the gauge's value + // color: String + // The color + this.textIndicatorColor = color; + if (this._textIndicator){ + this._textIndicator.color = this.textIndicatorColor; + this.draw(); + } + }, + + _setTextIndicatorFontAttr: function(font){ + // summary: + // Sets the font of the text indicator + // font: String + // An string representing the font such as 'normal normal normal 10pt Helvetica,Arial,sans-serif' + // + + this.textIndicatorFont = font; + this._textIndicatorFont = gfx.splitFontString(font); + if (this._textIndicator){ + this._textIndicator.font = this._textIndicatorFont; + this.draw(); + } + }, + + setMajorTicksOffset: function(offset){ + // summary: + // Sets the distance from gauge's center to major ticks + this._majorTicksOffset = offset; + this._setMajorTicksProperty({ + 'offset': this._majorTicksOffset + }); + return this; + }, + + getMajorTicksOffset: function(){ + // summary: + // Return the distance from gauge's center to major ticks + return this._majorTicksOffset; + }, + + _setMajorTicksIntervalAttr: function(interval){ + // summary: + // Sets the interval between major ticks + this.majorTicksInterval = interval; + this._setMajorTicksProperty({ + 'interval': this.majorTicksInterval + }); + }, + + setMajorTicksLength: function(length){ + // summary: + // Sets the size of the major ticks. + this._majorTicksLength = length; + this._setMajorTicksProperty({ + 'length': this._majorTicksLength + }); + return this; + }, + + getMajorTicksLength: function(){ + // summary: + // Returns the size of the major ticks. + return this._majorTicksLength; + }, + + _setMajorTicksColorAttr: function(color){ + // summary: + // Sets the color of the major ticks. + this.majorTicksColor = color; + this._setMajorTicksProperty({ + 'color': this.majorTicksColor + }); + }, + + _setMajorTicksLabelPlacementAttr: function(placement){ + // summary: + // Sets the placement of labels relatively to major ticks. + // placement: String + // 'inside' or 'outside' + this.majorTicksLabelPlacement = placement; + this._setMajorTicksProperty({ + 'labelPlacement': this.majorTicksLabelPlacement + }); + }, + + _setMajorTicksProperty: function(prop){ + if (this.majorTicks){ + lang.mixin(this.majorTicks, prop); + this.setMajorTicks(this.majorTicks); + } + }, + + setMinorTicksOffset: function(offset){ + // summary: + // Sets the distance from gauge's center to minor ticks + this._minorTicksOffset = offset; + this._setMinorTicksProperty({ + 'offset': this._minorTicksOffset + }); + return this; + }, + + getMinorTicksOffset: function(){ + // summary: + // Returns the distance from gauge's center to minor ticks + return this._minorTicksOffset; + }, + + _setMinorTicksIntervalAttr: function(interval){ + // summary: + // Sets the interval between minor ticks + this.minorTicksInterval = interval; + this._setMinorTicksProperty({ + 'interval': this.minorTicksInterval + }); + }, + + setMinorTicksLength: function(length){ + // summary: + // Sets the size of the minor ticks. + this._minorTicksLength = length; + this._setMinorTicksProperty({ + 'length': this._minorTicksLength + }); + return this; + }, + + getMinorTicksLength: function(){ + // summary: + // Return the size of the minor ticks. + return this._minorTicksLength; + }, + + _setMinorTicksColorAttr: function(color){ + // summary: + // Sets the color of the minor ticks. + this.minorTicksColor = color; + this._setMinorTicksProperty({ + 'color': this.minorTicksColor + }); + }, + + _setMinorTicksProperty: function(prop){ + if (this.minorTicks){ + lang.mixin(this.minorTicks, prop); + this.setMinorTicks(this.minorTicks); + } + }, + + _setMinAttr: function(min){ + this.min = min; + + if (this.majorTicks != null) + this.setMajorTicks(this.majorTicks); + if (this.minorTicks != null) + this.setMinorTicks(this.minorTicks); + this.draw(); + this._updateNeedle(); + }, + + _setMaxAttr: function(max){ + this.max = max; + + if (this.majorTicks != null) + this.setMajorTicks(this.majorTicks); + if (this.minorTicks != null) + this.setMinorTicks(this.minorTicks); + this.draw(); + this._updateNeedle(); + }, + + _setScalePrecisionAttr: function(value){ + // summary: + // Changes precision of the numbers in the scale of the gauge + // value: Number + // The new value + this.scalePrecision = value; + this._setMajorTicksProperty({ + 'precision': value + }); + }, + + _setTextIndicatorPrecisionAttr: function(value){ + // summary: + // Changes precision of the numbers in the text indicator + // value: Number + // The new value + this.textIndicatorPrecision = value; + this._setMajorTicksProperty({ + 'precision': value + }); + }, + + _setValueAttr: function(value){ + // summary: + // Changes the value of the gauge + // value: Number + // The new value for the gauge. + + value = Math.min(this.max, value); + value = Math.max(this.min, value); + this.value = value; + if (this._needle){ + // update will not work if noChange is true. + var noChange = this._needle.noChange; + this._needle.noChange = false; + this._needle.update(value); + this._needle.noChange = noChange; + } + }, + + _setNoChangeAttr: function(value){ + // summary: + // Indicates if the value of the gauge can be changed or not + // value: boolean + // true indicates that the gauge's value cannot be changed + this.noChange = value; + if (this._needle) + this._needle.noChange = this.noChange; + }, + + _setTextIndicatorVisibleAttr: function(value){ + // summary: + // Changes the visibility of the text indicator displaying the gauge's value. + // value: boolean + // true to show the indicator, false to hide. + + this.textIndicatorVisible = value; + if (this._textIndicator && this._needle){ + if (this.textIndicatorVisible && !this._textIndicatorAdded){ + this.addIndicator(this._textIndicator); + this._textIndicatorAdded = true; + this.moveIndicatorToFront(this._needle); + + } + else + if (!this.textIndicatorVisible && this._textIndicatorAdded){ + this.removeIndicator(this._textIndicator); + this._textIndicatorAdded = false; + } + } + }, + + _setTitleAttr: function(value){ + // summary: + // Sets the title displayed by the needle's tooltip . + // value: String + // the title + + this.title = value; + if (this._needle){ + this._needle.title = this.title; + } + }, + + _setOrientationAttr: function(orientation){ + // summary: + // Sets the orientation of the gauge + // orientation: String + // Either "clockwise" or "cclockwise" + + this.orientation = orientation; + if (this.majorTicks != null) + this.setMajorTicks(this.majorTicks); + if (this.minorTicks != null) + this.setMinorTicks(this.minorTicks); + this.draw(); + this._updateNeedle(); + + }, + + _updateNeedle: function(){ + // updates the needle with no animation + this.value = Math.max(this.min, this.value); + this.value = Math.min(this.max, this.value); + + if (this._needle){ + // update will not work if noChange is true. + var noChange = this._needle.noChange; + this._needle.noChange = false; + this._needle.update(this.value, false); + this._needle.noChange = noChange; + } // to redraw the needle + }, + + _setFontAttr: function(font){ + // summary: + // Sets the font of the gauge + // font: String + // An string representing the font such as 'normal normal normal 10pt Helvetica,Arial,sans-serif' + // + + this.font = font; + this._font = gfx.splitFontString(font); + this._setMajorTicksProperty({ + 'font': this._font + }); + }}); +}); |
