123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540 |
- 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
- });
- }});
- });
|