| /* |
| Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved. |
| Available via Academic Free License >= 2.1 OR the modified BSD license. |
| see: http://dojotoolkit.org/license for details |
| */ |
| |
| |
| if(!dojo._hasResource["dojox.widget.gauge._Gauge"]){ |
| dojo._hasResource["dojox.widget.gauge._Gauge"]=true; |
| dojo.provide("dojox.widget.gauge._Gauge"); |
| dojo.require("dijit._Widget"); |
| dojo.require("dijit._Templated"); |
| dojo.require("dijit._Container"); |
| dojo.require("dijit._Contained"); |
| dojo.require("dijit.Tooltip"); |
| dojo.require("dojo.fx.easing"); |
| dojo.require("dojox.gfx"); |
| dojo.experimental("dojox.widget.gauge._Gauge"); |
| dojo.declare("dojox.widget.gauge._Gauge",[dijit._Widget,dijit._Templated,dijit._Container],{width:0,height:0,background:null,min:0,max:0,image:null,useRangeStyles:0,useTooltip:true,majorTicks:null,minorTicks:null,_defaultIndicator:null,defaultColors:[[0,84,170,1],[68,119,187,1],[102,153,204,1],[153,187,238,1],[153,204,255,1],[204,238,255,1],[221,238,255,1]],min:null,max:null,surface:null,hideValues:false,gaugeContent:undefined,templateString:dojo.cache("dojox.widget.gauge","_Gauge.html","<div>\n\t<div class=\"dojoxGaugeContent\" dojoAttachPoint=\"gaugeContent\"></div>\n\t<div dojoAttachPoint=\"containerNode\"></div>\n\t<div dojoAttachPoint=\"mouseNode\"></div>\n</div>\n"),_backgroundDefault:{color:"#E0E0E0"},_rangeData:null,_indicatorData:null,_drag:null,_img:null,_overOverlay:false,_lastHover:"",startup:function(){ |
| if(this.image===null){ |
| this.image={}; |
| } |
| this.connect(this.gaugeContent,"onmousemove",this.handleMouseMove); |
| this.connect(this.gaugeContent,"onmouseover",this.handleMouseOver); |
| this.connect(this.gaugeContent,"onmouseout",this.handleMouseOut); |
| this.connect(this.gaugeContent,"onmouseup",this.handleMouseUp); |
| if(!dojo.isArray(this.ranges)){ |
| this.ranges=[]; |
| } |
| if(!dojo.isArray(this.indicators)){ |
| this.indicators=[]; |
| } |
| var _1=[],_2=[]; |
| var i; |
| if(this.hasChildren()){ |
| var _3=this.getChildren(); |
| for(i=0;i<_3.length;i++){ |
| if(/dojox\.widget\..*Indicator/.test(_3[i].declaredClass)){ |
| _2.push(_3[i]); |
| continue; |
| } |
| switch(_3[i].declaredClass){ |
| case "dojox.widget.gauge.Range": |
| _1.push(_3[i]); |
| break; |
| } |
| } |
| this.ranges=this.ranges.concat(_1); |
| this.indicators=this.indicators.concat(_2); |
| } |
| if(!this.background){ |
| this.background=this._backgroundDefault; |
| } |
| this.background=this.background.color||this.background; |
| if(!this.surface){ |
| this.createSurface(); |
| } |
| this.addRanges(this.ranges); |
| if(this.minorTicks&&this.minorTicks.interval){ |
| this.setMinorTicks(this.minorTicks); |
| } |
| if(this.majorTicks&&this.majorTicks.interval){ |
| this.setMajorTicks(this.majorTicks); |
| } |
| for(i=0;i<this.indicators.length;i++){ |
| this.addIndicator(this.indicators[i]); |
| } |
| },_setTicks:function(_4,_5,_6){ |
| var i; |
| if(_4&&dojo.isArray(_4._ticks)){ |
| for(i=0;i<_4._ticks.length;i++){ |
| this.removeIndicator(_4._ticks[i]); |
| } |
| } |
| var t={length:_5.length,offset:_5.offset,noChange:true}; |
| if(_5.color){ |
| t.color=_5.color; |
| } |
| if(_5.font){ |
| t.font=_5.font; |
| } |
| _5._ticks=[]; |
| for(i=this.min;i<=this.max;i+=_5.interval){ |
| t.value=i; |
| if(_6){ |
| t.label=""+i; |
| } |
| _5._ticks.push(this.addIndicator(t)); |
| } |
| return _5; |
| },setMinorTicks:function(_7){ |
| this.minorTicks=this._setTicks(this.minorTicks,_7,false); |
| },setMajorTicks:function(_8){ |
| this.majorTicks=this._setTicks(this.majorTicks,_8,true); |
| },postCreate:function(){ |
| if(this.hideValues){ |
| dojo.style(this.containerNode,"display","none"); |
| } |
| dojo.style(this.mouseNode,"width","0"); |
| dojo.style(this.mouseNode,"height","0"); |
| dojo.style(this.mouseNode,"position","absolute"); |
| dojo.style(this.mouseNode,"z-index","100"); |
| if(this.useTooltip){ |
| dijit.showTooltip("test",this.mouseNode); |
| dijit.hideTooltip(this.mouseNode); |
| } |
| },createSurface:function(){ |
| this.gaugeContent.style.width=this.width+"px"; |
| this.gaugeContent.style.height=this.height+"px"; |
| this.surface=dojox.gfx.createSurface(this.gaugeContent,this.width,this.height); |
| this._background=this.surface.createRect({x:0,y:0,width:this.width,height:this.height}); |
| this._background.setFill(this.background); |
| if(this.image.url){ |
| this._img=this.surface.createImage({width:this.image.width||this.width,height:this.image.height||this.height,src:this.image.url}); |
| if(this.image.overlay){ |
| this._img.getEventSource().setAttribute("overlay",true); |
| } |
| if(this.image.x||this.image.y){ |
| this._img.setTransform({dx:this.image.x||0,dy:this.image.y||0}); |
| } |
| } |
| },setBackground:function(_9){ |
| if(!_9){ |
| _9=this._backgroundDefault; |
| } |
| this.background=_9.color||_9; |
| this._background.setFill(this.background); |
| },addRange:function(_a){ |
| this.addRanges([_a]); |
| },addRanges:function(_b){ |
| if(!this._rangeData){ |
| this._rangeData=[]; |
| } |
| var _c; |
| for(var i=0;i<_b.length;i++){ |
| _c=_b[i]; |
| if((this.min===null)||(_c.low<this.min)){ |
| this.min=_c.low; |
| } |
| if((this.max===null)||(_c.high>this.max)){ |
| this.max=_c.high; |
| } |
| if(!_c.color){ |
| var _d=this._rangeData.length%this.defaultColors.length; |
| if(dojox.gfx.svg&&this.useRangeStyles>0){ |
| _d=(this._rangeData.length%this.useRangeStyles)+1; |
| _c.color={style:"dojoxGaugeRange"+_d}; |
| }else{ |
| _d=this._rangeData.length%this.defaultColors.length; |
| _c.color=this.defaultColors[_d]; |
| } |
| } |
| this._rangeData[this._rangeData.length]=_c; |
| } |
| this.draw(); |
| },addIndicator:function(_e){ |
| _e._gauge=this; |
| if(!_e.declaredClass){ |
| _e=new this._defaultIndicator(_e); |
| } |
| if(!_e.hideValue){ |
| this.containerNode.appendChild(_e.domNode); |
| } |
| if(!this._indicatorData){ |
| this._indicatorData=[]; |
| } |
| this._indicatorData[this._indicatorData.length]=_e; |
| _e.draw(); |
| return _e; |
| },removeIndicator:function(_f){ |
| for(var i=0;i<this._indicatorData.length;i++){ |
| if(this._indicatorData[i]===_f){ |
| this._indicatorData.splice(i,1); |
| _f.remove(); |
| break; |
| } |
| } |
| },moveIndicatorToFront:function(_10){ |
| if(_10.shapes){ |
| for(var i=0;i<_10.shapes.length;i++){ |
| _10.shapes[i].moveToFront(); |
| } |
| } |
| },drawText:function(txt,x,y,_11,_12,_13,_14){ |
| var t=this.surface.createText({x:x,y:y,text:txt,align:_11}); |
| t.setFill(_13); |
| t.setFont(_14); |
| return t; |
| },removeText:function(t){ |
| this.surface.rawNode.removeChild(t); |
| },updateTooltip:function(txt,e){ |
| if(this._lastHover!=txt){ |
| if(txt!==""){ |
| dijit.hideTooltip(this.mouseNode); |
| dijit.showTooltip(txt,this.mouseNode); |
| }else{ |
| dijit.hideTooltip(this.mouseNode); |
| } |
| this._lastHover=txt; |
| } |
| },handleMouseOver:function(_15){ |
| var _16=_15.target.getAttribute("hover"); |
| if(_15.target.getAttribute("overlay")){ |
| this._overOverlay=true; |
| var r=this.getRangeUnderMouse(_15); |
| if(r&&r.hover){ |
| _16=r.hover; |
| } |
| } |
| if(this.useTooltip&&!this._drag){ |
| if(_16){ |
| this.updateTooltip(_16,_15); |
| }else{ |
| this.updateTooltip("",_15); |
| } |
| } |
| },handleMouseOut:function(_17){ |
| if(_17.target.getAttribute("overlay")){ |
| this._overOverlay=false; |
| } |
| if(this.useTooltip&&this.mouseNode){ |
| dijit.hideTooltip(this.mouseNode); |
| } |
| },handleMouseDown:function(_18){ |
| for(var i=0;i<this._indicatorData.length;i++){ |
| var _19=this._indicatorData[i].shapes; |
| for(var s=0;s<_19.length;s++){ |
| if(_19[s].getEventSource()==_18.target){ |
| this._drag=this._indicatorData[i]; |
| s=_19.length; |
| i=this._indicatorData.length; |
| } |
| } |
| } |
| dojo.stopEvent(_18); |
| },handleMouseUp:function(_1a){ |
| this._drag=null; |
| dojo.stopEvent(_1a); |
| },handleMouseMove:function(_1b){ |
| if(_1b){ |
| dojo.style(this.mouseNode,"left",_1b.pageX+1+"px"); |
| dojo.style(this.mouseNode,"top",_1b.pageY+1+"px"); |
| } |
| if(this._drag){ |
| this._dragIndicator(this,_1b); |
| }else{ |
| if(this.useTooltip&&this._overOverlay){ |
| var r=this.getRangeUnderMouse(_1b); |
| if(r&&r.hover){ |
| this.updateTooltip(r.hover,_1b); |
| }else{ |
| this.updateTooltip("",_1b); |
| } |
| } |
| } |
| }}); |
| dojo.declare("dojox.widget.gauge.Range",[dijit._Widget,dijit._Contained],{low:0,high:0,hover:"",color:null,size:0,startup:function(){ |
| this.color=this.color.color||this.color; |
| }}); |
| dojo.declare("dojox.widget.gauge._Indicator",[dijit._Widget,dijit._Contained,dijit._Templated],{value:0,type:"",color:"black",label:"",font:{family:"sans-serif",size:"12px"},length:0,width:0,offset:0,hover:"",front:false,easing:dojo._defaultEasing,duration:1000,hideValue:false,noChange:false,_gauge:null,title:"",templateString:dojo.cache("dojox.widget.gauge","_Indicator.html","<div class=\"dojoxGaugeIndicatorDiv\">\n\t<label class=\"dojoxGaugeIndicatorLabel\" for=\"${title}\">${title}:</label>\n\t<input class=\"dojoxGaugeIndicatorInput\" name=\"${title}\" size=\"5\" value=\"${value}\" dojoAttachPoint=\"valueNode\" dojoAttachEvent=\"onchange:_update\"></input>\n</div>\n"),startup:function(){ |
| if(this.onDragMove){ |
| this.onDragMove=dojo.hitch(this.onDragMove); |
| } |
| },postCreate:function(){ |
| if(this.title===""){ |
| dojo.style(this.domNode,"display","none"); |
| } |
| if(dojo.isString(this.easing)){ |
| this.easing=dojo.getObject(this.easing); |
| } |
| },_update:function(_1c){ |
| var _1d=this.valueNode.value; |
| if(_1d===""){ |
| this.value=null; |
| }else{ |
| this.value=Number(_1d); |
| this.hover=this.title+": "+_1d; |
| } |
| if(this._gauge){ |
| this.draw(); |
| this.valueNode.value=this.value; |
| if((this.title=="Target"||this.front)&&this._gauge.moveIndicator){ |
| this._gauge.moveIndicatorToFront(this); |
| } |
| } |
| },update:function(_1e){ |
| if(!this.noChange){ |
| this.valueNode.value=_1e; |
| this._update(); |
| } |
| },onDragMove:function(){ |
| this.value=Math.floor(this.value); |
| this.valueNode.value=this.value; |
| this.hover=this.title+": "+this.value; |
| },draw:function(_1f){ |
| },remove:function(){ |
| for(var i=0;i<this.shapes.length;i++){ |
| this._gauge.surface.remove(this.shapes[i]); |
| } |
| if(this.text){ |
| this._gauge.surface.remove(this.text); |
| } |
| }}); |
| } |