155 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			155 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
| //>>built
 | |
| define("dojox/dgauges/CircularScale",["dojo/_base/declare","dojox/gfx","./ScaleBase","./_circularUtils"],function(_1,_2,_3,_4){
 | |
| return _1("dojox.dgauges.CircularScale",_3,{originX:50,originY:50,radius:50,startAngle:0,endAngle:180,orientation:"clockwise",constructor:function(){
 | |
| this.labelPosition="inside";
 | |
| this.addInvalidatingProperties(["originX","originY","radius","startAngle","endAngle","orientation"]);
 | |
| },_getOrientationNum:function(){
 | |
| return this.orientation=="cclockwise"?-1:1;
 | |
| },positionForValue:function(_5){
 | |
| var _6=_4.computeTotalAngle(this.startAngle,this.endAngle,this.orientation);
 | |
| var _7=this.scaler.positionForValue(_5);
 | |
| return _4.modAngle(this.startAngle+this._getOrientationNum()*_6*_7,360);
 | |
| },_positionForTickItem:function(_8){
 | |
| var _9=_4.computeTotalAngle(this.startAngle,this.endAngle,this.orientation);
 | |
| return _4.modAngle(this.startAngle+this._getOrientationNum()*_9*_8.position,360);
 | |
| },valueForPosition:function(_a){
 | |
| if(!this.positionInRange(_a)){
 | |
| var _b=_4.modAngle(this.startAngle-_a,360);
 | |
| var _c=360-_b;
 | |
| var _d=_4.modAngle(this.endAngle-_a,360);
 | |
| var _e=360-_d;
 | |
| var _f;
 | |
| if(Math.min(_b,_c)<Math.min(_d,_e)){
 | |
| _f=0;
 | |
| }else{
 | |
| _f=1;
 | |
| }
 | |
| }else{
 | |
| var _10=_4.modAngle(this._getOrientationNum()*(_a-this.startAngle),360);
 | |
| var _11=_4.computeTotalAngle(this.startAngle,this.endAngle,this.orientation);
 | |
| _f=_10/_11;
 | |
| }
 | |
| return this.scaler.valueForPosition(_f);
 | |
| },positionInRange:function(_12){
 | |
| if(this.startAngle==this.endAngle){
 | |
| return true;
 | |
| }
 | |
| _12=_4.modAngle(_12,360);
 | |
| if(this._getOrientationNum()==1){
 | |
| if(this.startAngle<this.endAngle){
 | |
| return _12>=this.startAngle&&_12<=this.endAngle;
 | |
| }else{
 | |
| return !(_12>this.endAngle&&_12<this.startAngle);
 | |
| }
 | |
| }else{
 | |
| if(this.startAngle<this.endAngle){
 | |
| return !(_12>this.startAngle&&_12<this.endAngle);
 | |
| }else{
 | |
| return _12>=this.endAngle&&_12<=this.startAngle;
 | |
| }
 | |
| }
 | |
| },_distance:function(x1,y1,x2,y2){
 | |
| return Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
 | |
| },_layoutLabel:function(_13,txt,ox,oy,_14,_15,_16){
 | |
| var _17=this._getFont();
 | |
| var box=_2._base._getTextBox(txt,{font:_2.makeFontString(_2.makeParameters(_2.defaultFont,_17))});
 | |
| var tw=box.w;
 | |
| var fz=_17.size;
 | |
| var th=_2.normalizedLength(fz);
 | |
| var tfx=ox+Math.cos(_15)*_14-tw/2;
 | |
| var tfy=oy-Math.sin(_15)*_14-th/2;
 | |
| var _18;
 | |
| var _19=[];
 | |
| _18=tfx;
 | |
| var ipx=_18;
 | |
| var ipy=-Math.tan(_15)*_18+oy+Math.tan(_15)*ox;
 | |
| if(ipy>=tfy&&ipy<=tfy+th){
 | |
| _19.push({x:ipx,y:ipy});
 | |
| }
 | |
| _18=tfx+tw;
 | |
| ipx=_18;
 | |
| ipy=-Math.tan(_15)*_18+oy+Math.tan(_15)*ox;
 | |
| if(ipy>=tfy&&ipy<=tfy+th){
 | |
| _19.push({x:ipx,y:ipy});
 | |
| }
 | |
| _18=tfy;
 | |
| ipx=-1/Math.tan(_15)*_18+ox+1/Math.tan(_15)*oy;
 | |
| ipy=_18;
 | |
| if(ipx>=tfx&&ipx<=tfx+tw){
 | |
| _19.push({x:ipx,y:ipy});
 | |
| }
 | |
| _18=tfy+th;
 | |
| ipx=-1/Math.tan(_15)*_18+ox+1/Math.tan(_15)*oy;
 | |
| ipy=_18;
 | |
| if(ipx>=tfx&&ipx<=tfx+tw){
 | |
| _19.push({x:ipx,y:ipy});
 | |
| }
 | |
| var dif;
 | |
| if(_16=="inside"){
 | |
| for(var it=0;it<_19.length;it++){
 | |
| var ip=_19[it];
 | |
| dif=this._distance(ip.x,ip.y,ox,oy)-_14;
 | |
| if(dif>=0){
 | |
| tfx=ox+Math.cos(_15)*(_14-dif)-tw/2;
 | |
| tfy=oy-Math.sin(_15)*(_14-dif)-th/2;
 | |
| break;
 | |
| }
 | |
| }
 | |
| }else{
 | |
| for(it=0;it<_19.length;it++){
 | |
| ip=_19[it];
 | |
| dif=this._distance(ip.x,ip.y,ox,oy)-_14;
 | |
| if(dif<=0){
 | |
| tfx=ox+Math.cos(_15)*(_14-dif)-tw/2;
 | |
| tfy=oy-Math.sin(_15)*(_14-dif)-th/2;
 | |
| break;
 | |
| }
 | |
| }
 | |
| }
 | |
| if(_13){
 | |
| _13.setTransform([{dx:tfx+tw/2,dy:tfy+th}]);
 | |
| }
 | |
| },refreshRendering:function(){
 | |
| this.inherited(arguments);
 | |
| if(!this._gfxGroup||!this.scaler){
 | |
| return;
 | |
| }
 | |
| this.startAngle=_4.modAngle(this.startAngle,360);
 | |
| this.endAngle=_4.modAngle(this.endAngle,360);
 | |
| this._ticksGroup.clear();
 | |
| var _1a;
 | |
| var _1b;
 | |
| var _1c;
 | |
| var _1d=this.scaler.computeTicks();
 | |
| var _1e;
 | |
| for(var i=0;i<_1d.length;i++){
 | |
| var _1f=_1d[i];
 | |
| _1a=this.tickShapeFunc(this._ticksGroup,this,_1f);
 | |
| _1e=this._gauge._computeBoundingBox(_1a);
 | |
| var a;
 | |
| if(_1f.position){
 | |
| a=this._positionForTickItem(_1f);
 | |
| }else{
 | |
| a=this.positionForValue(_1f.value);
 | |
| }
 | |
| if(_1a){
 | |
| _1a.setTransform([{dx:this.originX,dy:this.originY},_2.matrix.rotateg(a),{dx:this.radius-_1e.width-2*_1e.x,dy:0}]);
 | |
| }
 | |
| _1c=this.tickLabelFunc(_1f);
 | |
| if(_1c){
 | |
| _1b=this._ticksGroup.createText({x:0,y:0,text:_1c,align:"middle"}).setFont(this._getFont()).setFill(this._getFont().color?this._getFont().color:"black");
 | |
| var rad=this.radius;
 | |
| if(this.labelPosition=="inside"){
 | |
| rad-=(_1e.width+this.labelGap);
 | |
| }else{
 | |
| rad+=this.labelGap;
 | |
| }
 | |
| this._layoutLabel(_1b,_1c,this.originX,this.originY,rad,_4.toRadians(360-a),this.labelPosition);
 | |
| }
 | |
| }
 | |
| for(var key in this._indicatorsIndex){
 | |
| this._indicatorsRenderers[key]=this._indicatorsIndex[key].invalidateRendering();
 | |
| }
 | |
| }});
 | |
| });
 |