webui-aria2/js/libs/dojox/gauges/_Gauge.js
2012-05-01 19:52:07 +08:00

445 lines
12 KiB
JavaScript

//>>built
define("dojox/gauges/_Gauge",["dojo/_base/declare","dojo/_base/lang","dojo/_base/html","dojo/_base/array","dojo/_base/event","dojo/_base/connect","dojo/dom-construct","dijit/_Widget","dojox/gfx","./Range","dojo/fx/easing"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a){
var _b=0;
var _c=0;
return _1("dojox.gauges._Gauge",[_8],{width:0,height:0,background:null,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,_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,"onmousedown",this.handleMouseDown);
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,"touchstart",this.handleTouchStart);
this.connect(this.gaugeContent,"touchend",this.handleTouchEnd);
this.connect(this.gaugeContent,"touchmove",this.handleTouchMove);
if(!_2.isArray(this.ranges)){
this.ranges=[];
}
if(!_2.isArray(this.indicators)){
this.indicators=[];
}
var _d=[],_e=[];
var i;
if(this.hasChildren()){
var _f=this.getChildren();
for(i=0;i<_f.length;i++){
if(/.*Indicator/.test(_f[i].declaredClass)){
_e.push(_f[i]);
continue;
}
switch(_f[i].declaredClass){
case _a.prototype.declaredClass:
_d.push(_f[i]);
break;
}
}
this.ranges=this.ranges.concat(_d);
this.indicators=this.indicators.concat(_e);
}
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]);
}
this.inherited(arguments);
},hasChildren:function(){
return this.getChildren().length>0;
},buildRendering:function(){
var n=this.domNode=this.srcNodeRef?this.srcNodeRef:_7.create("div");
this.gaugeContent=_7.create("div",{className:"dojoxGaugeContent"});
this.containerNode=_7.create("div");
this.mouseNode=_7.create("div");
while(n.hasChildNodes()){
this.containerNode.appendChild(n.firstChild);
}
_7.place(this.gaugeContent,n);
_7.place(this.containerNode,n);
_7.place(this.mouseNode,n);
},_setTicks:function(_10,_11,_12){
var i;
if(_10&&_2.isArray(_10._ticks)){
for(i=0;i<_10._ticks.length;i++){
this._removeScaleTick(_10._ticks[i]);
}
}
var t={length:_11.length,offset:_11.offset,noChange:true};
if(_11.color){
t.color=_11.color;
}
if(_11.font){
t.font=_11.font;
}
if(_11.labelPlacement){
t.direction=_11.labelPlacement;
}
_11._ticks=[];
for(i=this.min;i<=this.max;i+=_11.interval){
if(i==this.max&&this._isScaleCircular()){
continue;
}
t.value=i;
if(_12){
var _13=this._getNumberModule();
if(_13){
t.label=(_11.fixedPrecision&&_11.precision)?_13.format(i,{places:_11.precision}):_13.format(i);
}else{
t.label=(_11.fixedPrecision&&_11.precision)?i.toFixed(_11.precision):i.toString();
}
}
_11._ticks.push(this._addScaleTick(t,_12));
}
return _11;
},_isScaleCircular:function(){
return false;
},setMinorTicks:function(_14){
this.minorTicks=this._setTicks(this.minorTicks,_14,false);
},setMajorTicks:function(_15){
this.majorTicks=this._setTicks(this.majorTicks,_15,true);
},postCreate:function(){
if(this.hideValues){
_3.style(this.containerNode,"display","none");
}
_3.style(this.mouseNode,"width","0");
_3.style(this.mouseNode,"height","0");
_3.style(this.mouseNode,"position","absolute");
_3.style(this.mouseNode,"z-index","100");
if(this.useTooltip){
require(["dijit/Tooltip"],dojo.hitch(this,function(_16){
_16.show("test",this.mouseNode,!this.isLeftToRight());
_16.hide(this.mouseNode);
}));
}
},_getNumberModule:function(){
if(_c==0){
try{
_c=require("dojo/number");
}
catch(e){
_c=null;
}
}
return _c;
},createSurface:function(){
this.gaugeContent.style.width=this.width+"px";
this.gaugeContent.style.height=this.height+"px";
this.surface=_9.createSurface(this.gaugeContent,this.width,this.height);
this._backgroundGroup=this.surface.createGroup();
this._rangeGroup=this.surface.createGroup();
this._minorTicksGroup=this.surface.createGroup();
this._majorTicksGroup=this.surface.createGroup();
this._overlayGroup=this.surface.createGroup();
this._indicatorsGroup=this.surface.createGroup();
this._foregroundGroup=this.surface.createGroup();
this._background=this._backgroundGroup.createRect({x:0,y:0,width:this.width,height:this.height});
this._background.setFill(this.background);
if(this.image.url){
var _17=this._backgroundGroup;
if(this.image.overlay){
_17=this._overlayGroup;
}
this._img=_17.createImage({width:this.image.width||this.width,height:this.image.height||this.height,src:this.image.url});
if(this.image.x||this.image.y){
this._img.setTransform({dx:this.image.x||0,dy:this.image.y||0});
}
}
},draw:function(){
var i;
if(!this.surface){
return;
}
this.drawBackground(this._backgroundGroup);
if(this._rangeData){
for(i=0;i<this._rangeData.length;i++){
this.drawRange(this._rangeGroup,this._rangeData[i]);
}
}
if(this._minorTicksData){
for(i=0;i<this._minorTicksData.length;i++){
this._minorTicksData[i].draw(this._minorTicksGroup);
}
}
if(this._majorTicksData){
for(i=0;i<this._majorTicksData.length;i++){
this._majorTicksData[i].draw(this._majorTicksGroup);
}
}
if(this._indicatorData){
for(i=0;i<this._indicatorData.length;i++){
this._indicatorData[i].draw(this._indicatorsGroup);
}
}
this.drawForeground(this._foregroundGroup);
},drawBackground:function(_18){
},drawForeground:function(_19){
},setBackground:function(_1a){
if(!_1a){
_1a=this._backgroundDefault;
}
this.background=_1a.color||_1a;
this._background.setFill(this.background);
},addRange:function(_1b){
this.addRanges([_1b]);
},addRanges:function(_1c){
if(!this._rangeData){
this._rangeData=[];
}
var _1d;
for(var i=0;i<_1c.length;i++){
_1d=_1c[i];
if((this.min===null)||(_1d.low<this.min)){
this.min=_1d.low;
}
if((this.max===null)||(_1d.high>this.max)){
this.max=_1d.high;
}
if(!_1d.color){
var _1e=this._rangeData.length%this.defaultColors.length;
if(_9.svg&&this.useRangeStyles>0){
_1e=(this._rangeData.length%this.useRangeStyles)+1;
_1d.color={style:"dojoxGaugeRange"+_1e};
}else{
_1e=this._rangeData.length%this.defaultColors.length;
_1d.color=this.defaultColors[_1e];
}
}
this._rangeData[this._rangeData.length]=_1d;
}
this.draw();
},_addScaleTick:function(_1f,_20){
if(!_1f.declaredClass){
_1f=new this._defaultIndicator(_1f);
}
_1f._gauge=this;
if(_20){
if(!this._majorTicksData){
this._majorTicksData=[];
}
this._majorTicksData[this._majorTicksData.length]=_1f;
_1f.draw(this._majorTicksGroup);
}else{
if(!this._minorTicksData){
this._minorTicksData=[];
}
this._minorTicksData[this._minorTicksData.length]=_1f;
_1f.draw(this._minorTicksGroup);
}
return _1f;
},_removeScaleTick:function(_21){
var i;
if(this._majorTicksData){
for(i=0;i<this._majorTicksData.length;i++){
if(this._majorTicksData[i]===_21){
this._majorTicksData.splice(i,1);
_21.remove();
return;
}
}
}
if(this._minorTicksData){
for(i=0;i<this._minorTicksData.length;i++){
if(this._minorTicksData[i]===_21){
this._minorTicksData.splice(i,1);
_21.remove();
return;
}
}
}
},addIndicator:function(_22){
if(!_22.declaredClass){
_22=new this._defaultIndicator(_22);
}
_22._gauge=this;
if(!_22.hideValue){
this.containerNode.appendChild(_22.domNode);
}
if(!this._indicatorData){
this._indicatorData=[];
}
this._indicatorData[this._indicatorData.length]=_22;
_22.draw(this._indicatorsGroup);
return _22;
},removeIndicator:function(_23){
for(var i=0;i<this._indicatorData.length;i++){
if(this._indicatorData[i]===_23){
this._indicatorData.splice(i,1);
_23.remove();
break;
}
}
},moveIndicatorToFront:function(_24){
if(_24.shape){
_24.shape.moveToFront();
}
},drawText:function(_25,txt,x,y,_26,_27,_28){
var t=_25.createText({x:x,y:y,text:txt,align:_26});
t.setFill(_27?_27:"black");
if(_28){
t.setFont(_28);
}
return t;
},removeText:function(t){
if(t.parent){
t.parent.remove(t);
}
},updateTooltip:function(txt,e){
if(this.useTooltip){
require(["dijit/Tooltip"],dojo.hitch(this,function(_29){
if(this._lastHover!=txt){
if(txt!==""){
_29.hide(this.mouseNode);
_29.show(txt,this.mouseNode,!this.isLeftToRight());
}else{
_29.hide(this.mouseNode);
}
this._lastHover=txt;
}
}));
}
},handleMouseOver:function(e){
if(this.image&&this.image.overlay){
if(e.target==this._img.getEventSource()){
var _2a;
this._overOverlay=true;
var r=this.getRangeUnderMouse(e);
if(r&&r.hover){
_2a=r.hover;
}
if(this.useTooltip&&!this._drag){
if(_2a){
this.updateTooltip(_2a,e);
}else{
this.updateTooltip("",e);
}
}
}
}
},handleMouseOut:function(e){
this._overOverlay=false;
this._hideTooltip();
},handleMouseMove:function(e){
if(this.useTooltip){
if(e){
_3.style(this.mouseNode,"left",e.pageX+1+"px");
_3.style(this.mouseNode,"top",e.pageY+1+"px");
}
if(this._overOverlay){
var r=this.getRangeUnderMouse(e);
if(r&&r.hover){
this.updateTooltip(r.hover,e);
}else{
this.updateTooltip("",e);
}
}
}
},handleMouseDown:function(e){
var _2b=this._getInteractiveIndicator();
if(_2b){
this._handleMouseDownIndicator(_2b,e);
}
},_handleDragInteractionMouseMove:function(e){
if(this._drag){
this._dragIndicator(this,e);
_5.stop(e);
}
},_handleDragInteractionMouseUp:function(e){
this._drag=null;
for(var i=0;i<this._mouseListeners.length;i++){
_6.disconnect(this._mouseListeners[i]);
}
this._mouseListeners=[];
_5.stop(e);
},_handleMouseDownIndicator:function(_2c,e){
if(!_2c.noChange){
if(!this._mouseListeners){
this._mouseListeners=[];
}
this._drag=_2c;
this._mouseListeners.push(_6.connect(document,"onmouseup",this,this._handleDragInteractionMouseUp));
this._mouseListeners.push(_6.connect(document,"onmousemove",this,this._handleDragInteractionMouseMove));
this._mouseListeners.push(_6.connect(document,"ondragstart",this,_5.stop));
this._mouseListeners.push(_6.connect(document,"onselectstart",this,_5.stop));
this._dragIndicator(this,e);
_5.stop(e);
}
},_handleMouseOverIndicator:function(_2d,e){
if(this.useTooltip&&!this._drag){
if(_2d.hover){
require(["dijit/Tooltip"],dojo.hitch(this,function(_2e){
_3.style(this.mouseNode,"left",e.pageX+1+"px");
_3.style(this.mouseNode,"top",e.pageY+1+"px");
_2e.show(_2d.hover,this.mouseNode,!this.isLeftToRight());
}));
}else{
this.updateTooltip("",e);
}
}
if(_2d.onDragMove&&!_2d.noChange){
this.gaugeContent.style.cursor="pointer";
}
},_handleMouseOutIndicator:function(_2f,e){
this._hideTooltip();
this.gaugeContent.style.cursor="pointer";
},_hideTooltip:function(){
if(this.useTooltip&&this.mouseNode){
require(["dijit/Tooltip"],dojo.hitch(this,function(_30){
_30.hide(this.mouseNode);
}));
}
},_handleMouseOutRange:function(_31,e){
this._hideTooltip();
},_handleMouseOverRange:function(_32,e){
if(this.useTooltip&&!this._drag){
if(_32.hover){
_3.style(this.mouseNode,"left",e.pageX+1+"px");
_3.style(this.mouseNode,"top",e.pageY+1+"px");
require(["dijit/Tooltip"],dojo.hitch(this,function(_33){
_33.show(_32.hover,this.mouseNode,!this.isLeftToRight());
}));
}else{
this.updateTooltip("",e);
}
}
},handleTouchStartIndicator:function(_34,e){
if(!_34.noChange){
this._drag=_34;
_5.stop(e);
}
},handleTouchStart:function(e){
this._drag=this._getInteractiveIndicator();
this.handleTouchMove(e);
},handleTouchEnd:function(e){
if(this._drag){
this._drag=null;
_5.stop(e);
}
},handleTouchMove:function(e){
if(this._drag&&!this._drag.noChange){
var _35=e.touches;
var _36=_35[0];
this._dragIndicatorAt(this,_36.pageX,_36.pageY);
_5.stop(e);
}
},_getInteractiveIndicator:function(){
for(var i=0;i<this._indicatorData.length;i++){
var _37=this._indicatorData[i];
if(_37.interactionMode=="gauge"&&!_37.noChange){
return _37;
}
}
return null;
}});
});