blob: a4f4e8d81b67453a5df72c1c4fcf5b66592d3dd3 [file] [log] [blame]
/*
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.form.RangeSlider"]){
dojo._hasResource["dojox.form.RangeSlider"]=true;
dojo.provide("dojox.form.RangeSlider");
dojo.require("dijit.form.HorizontalSlider");
dojo.require("dijit.form.VerticalSlider");
dojo.require("dojox.fx");
(function(){
var _1=function(a,b){
return b-a;
},_2=function(a,b){
return a-b;
};
dojo.declare("dojox.form._RangeSliderMixin",null,{value:[0,100],postMixInProperties:function(){
this.value=dojo.map(this.value,function(i){
return parseInt(i,10);
});
},postCreate:function(){
this.inherited(arguments);
this.value.sort(this._isReversed()?_1:_2);
var _3=this;
var _4=function(){
dijit.form._SliderMoverMax.apply(this,arguments);
this.widget=_3;
};
dojo.extend(_4,dijit.form._SliderMoverMax.prototype);
this._movableMax=new dojo.dnd.Moveable(this.sliderHandleMax,{mover:_4});
dijit.setWaiState(this.focusNodeMax,"valuemin",this.minimum);
dijit.setWaiState(this.focusNodeMax,"valuemax",this.maximum);
var _5=function(){
dijit.form._SliderBarMover.apply(this,arguments);
this.widget=_3;
};
dojo.extend(_5,dijit.form._SliderBarMover.prototype);
this._movableBar=new dojo.dnd.Moveable(this.progressBar,{mover:_5});
},destroy:function(){
this.inherited(arguments);
this._movableMax.destroy();
this._movableBar.destroy();
},_onKeyPress:function(e){
if(this.disabled||this.readOnly||e.altKey||e.ctrlKey){
return;
}
var _6=e.currentTarget,_7=false,_8=false,k=dojo.keys;
if(_6==this.sliderHandle){
_7=true;
}else{
if(_6==this.progressBar){
_8=_7=true;
}else{
if(_6==this.sliderHandleMax){
_8=true;
}
}
}
switch(e.keyCode){
case k.HOME:
this._setValueAttr(this.minimum,true,_8);
break;
case k.END:
this._setValueAttr(this.maximum,true,_8);
break;
case ((this._descending||this.isLeftToRight())?k.RIGHT_ARROW:k.LEFT_ARROW):
case (this._descending===false?k.DOWN_ARROW:k.UP_ARROW):
case (this._descending===false?k.PAGE_DOWN:k.PAGE_UP):
if(_7&&_8){
this._bumpValue([{"change":e.keyCode==k.PAGE_UP?this.pageIncrement:1,"useMaxValue":true},{"change":e.keyCode==k.PAGE_UP?this.pageIncrement:1,"useMaxValue":false}]);
}else{
if(_7){
this._bumpValue(e.keyCode==k.PAGE_UP?this.pageIncrement:1,true);
}else{
if(_8){
this._bumpValue(e.keyCode==k.PAGE_UP?this.pageIncrement:1);
}
}
}
break;
case ((this._descending||this.isLeftToRight())?k.LEFT_ARROW:k.RIGHT_ARROW):
case (this._descending===false?k.UP_ARROW:k.DOWN_ARROW):
case (this._descending===false?k.PAGE_UP:k.PAGE_DOWN):
if(_7&&_8){
this._bumpValue([{change:e.keyCode==k.PAGE_DOWN?-this.pageIncrement:-1,useMaxValue:false},{change:e.keyCode==k.PAGE_DOWN?-this.pageIncrement:-1,useMaxValue:true}]);
}else{
if(_7){
this._bumpValue(e.keyCode==k.PAGE_DOWN?-this.pageIncrement:-1);
}else{
if(_8){
this._bumpValue(e.keyCode==k.PAGE_DOWN?-this.pageIncrement:-1,true);
}
}
}
break;
default:
dijit.form._FormValueWidget.prototype._onKeyPress.apply(this,arguments);
this.inherited(arguments);
return;
}
dojo.stopEvent(e);
},_onHandleClickMax:function(e){
if(this.disabled||this.readOnly){
return;
}
if(!dojo.isIE){
dijit.focus(this.sliderHandleMax);
}
dojo.stopEvent(e);
},_onClkIncBumper:function(){
this._setValueAttr(this._descending===false?this.minimum:this.maximum,true,true);
},_bumpValue:function(_9,_a){
var _b=dojo.isArray(_9)?[this._getBumpValue(_9[0].change,_9[0].useMaxValue),this._getBumpValue(_9[1].change,_9[1].useMaxValue)]:this._getBumpValue(_9,_a);
this._setValueAttr(_b,true,!dojo.isArray(_9)&&((_9>0&&!_a)||(_a&&_9<0)));
},_getBumpValue:function(_c,_d){
var s=dojo.getComputedStyle(this.sliderBarContainer),c=dojo._getContentBox(this.sliderBarContainer,s),_e=this.discreteValues,_f=!_d?this.value[0]:this.value[1];
if(_e<=1||_e==Infinity){
_e=c[this._pixelCount];
}
_e--;
if((this._isReversed()&&_c<0)||(_c>0&&!this._isReversed())){
_f=!_d?this.value[1]:this.value[0];
}
var _10=(_f-this.minimum)*_e/(this.maximum-this.minimum)+_c;
if(_10<0){
_10=0;
}
if(_10>_e){
_10=_e;
}
return _10*(this.maximum-this.minimum)/_e+this.minimum;
},_onBarClick:function(e){
if(this.disabled||this.readOnly){
return;
}
if(!dojo.isIE){
dijit.focus(this.progressBar);
}
dojo.stopEvent(e);
},_onRemainingBarClick:function(e){
if(this.disabled||this.readOnly){
return;
}
if(!dojo.isIE){
dijit.focus(this.progressBar);
}
var _11=dojo.coords(this.sliderBarContainer,true),bar=dojo.coords(this.progressBar,true),_12=e[this._mousePixelCoord]-_11[this._startingPixelCoord],_13=bar[this._startingPixelCount],_14=_13+bar[this._pixelCount],_15=this._isReversed()?_12<=_13:_12>=_14,p=this._isReversed()?_11[this._pixelCount]-_12:_12;
this._setPixelValue(p,_11[this._pixelCount],true,_15);
dojo.stopEvent(e);
},_setPixelValue:function(_16,_17,_18,_19){
if(this.disabled||this.readOnly){
return;
}
var _1a=this._getValueByPixelValue(_16,_17);
this._setValueAttr(_1a,_18,_19);
},_getValueByPixelValue:function(_1b,_1c){
_1b=_1b<0?0:_1c<_1b?_1c:_1b;
var _1d=this.discreteValues;
if(_1d<=1||_1d==Infinity){
_1d=_1c;
}
_1d--;
var _1e=_1c/_1d;
var _1f=Math.round(_1b/_1e);
return (this.maximum-this.minimum)*_1f/_1d+this.minimum;
},_setValueAttr:function(_20,_21,_22){
var _23=this.value;
if(!dojo.isArray(_20)){
if(_22){
if(this._isReversed()){
_23[0]=_20;
}else{
_23[1]=_20;
}
}else{
if(this._isReversed()){
_23[1]=_20;
}else{
_23[0]=_20;
}
}
}else{
_23=_20;
}
this._lastValueReported="";
this.valueNode.value=this.value=_20=_23;
dijit.setWaiState(this.focusNode,"valuenow",_23[0]);
dijit.setWaiState(this.focusNodeMax,"valuenow",_23[1]);
this.value.sort(this._isReversed()?_1:_2);
dijit.form._FormValueWidget.prototype._setValueAttr.apply(this,arguments);
this._printSliderBar(_21,_22);
},_printSliderBar:function(_24,_25){
var _26=(this.value[0]-this.minimum)/(this.maximum-this.minimum);
var _27=(this.value[1]-this.minimum)/(this.maximum-this.minimum);
var _28=_26;
if(_26>_27){
_26=_27;
_27=_28;
}
var _29=this._isReversed()?((1-_26)*100):(_26*100);
var _2a=this._isReversed()?((1-_27)*100):(_27*100);
var _2b=this._isReversed()?((1-_27)*100):(_26*100);
if(_24&&this.slideDuration>0&&this.progressBar.style[this._progressPixelSize]){
var _2c=_25?_27:_26;
var _2d=this;
var _2e={};
var _2f=parseFloat(this.progressBar.style[this._handleOffsetCoord]);
var _30=this.slideDuration/10;
if(_30===0){
return;
}
if(_30<0){
_30=0-_30;
}
var _31={};
var _32={};
var _33={};
_31[this._handleOffsetCoord]={start:this.sliderHandle.style[this._handleOffsetCoord],end:_29,units:"%"};
_32[this._handleOffsetCoord]={start:this.sliderHandleMax.style[this._handleOffsetCoord],end:_2a,units:"%"};
_33[this._handleOffsetCoord]={start:this.progressBar.style[this._handleOffsetCoord],end:_2b,units:"%"};
_33[this._progressPixelSize]={start:this.progressBar.style[this._progressPixelSize],end:(_27-_26)*100,units:"%"};
var _34=dojo.animateProperty({node:this.sliderHandle,duration:_30,properties:_31});
var _35=dojo.animateProperty({node:this.sliderHandleMax,duration:_30,properties:_32});
var _36=dojo.animateProperty({node:this.progressBar,duration:_30,properties:_33});
var _37=dojo.fx.combine([_34,_35,_36]);
_37.play();
}else{
this.sliderHandle.style[this._handleOffsetCoord]=_29+"%";
this.sliderHandleMax.style[this._handleOffsetCoord]=_2a+"%";
this.progressBar.style[this._handleOffsetCoord]=_2b+"%";
this.progressBar.style[this._progressPixelSize]=((_27-_26)*100)+"%";
}
}});
dojo.declare("dijit.form._SliderMoverMax",dijit.form._SliderMover,{onMouseMove:function(e){
var _38=this.widget;
var _39=_38._abspos;
if(!_39){
_39=_38._abspos=dojo.coords(_38.sliderBarContainer,true);
_38._setPixelValue_=dojo.hitch(_38,"_setPixelValue");
_38._isReversed_=_38._isReversed();
}
var _3a=e[_38._mousePixelCoord]-_39[_38._startingPixelCoord];
_38._setPixelValue_(_38._isReversed_?(_39[_38._pixelCount]-_3a):_3a,_39[_38._pixelCount],false,true);
},destroy:function(e){
dojo.dnd.Mover.prototype.destroy.apply(this,arguments);
var _3b=this.widget;
_3b._abspos=null;
_3b._setValueAttr(_3b.value,true);
}});
dojo.declare("dijit.form._SliderBarMover",dojo.dnd.Mover,{onMouseMove:function(e){
var _3c=this.widget;
if(_3c.disabled||_3c.readOnly){
return;
}
var _3d=_3c._abspos;
var bar=_3c._bar;
var _3e=_3c._mouseOffset;
if(!_3d){
_3d=_3c._abspos=dojo.coords(_3c.sliderBarContainer,true);
_3c._setPixelValue_=dojo.hitch(_3c,"_setPixelValue");
_3c._getValueByPixelValue_=dojo.hitch(_3c,"_getValueByPixelValue");
_3c._isReversed_=_3c._isReversed();
}
if(!bar){
bar=_3c._bar=dojo.coords(_3c.progressBar,true);
}
if(!_3e){
_3e=_3c._mouseOffset=e[_3c._mousePixelCoord]-_3d[_3c._startingPixelCoord]-bar[_3c._startingPixelCount];
}
var _3f=e[_3c._mousePixelCoord]-_3d[_3c._startingPixelCoord]-_3e,_40=_3f+bar[_3c._pixelCount];
pixelValues=[_3f,_40];
pixelValues.sort(_2);
if(pixelValues[0]<=0){
pixelValues[0]=0;
pixelValues[1]=bar[_3c._pixelCount];
}
if(pixelValues[1]>=_3d[_3c._pixelCount]){
pixelValues[1]=_3d[_3c._pixelCount];
pixelValues[0]=_3d[_3c._pixelCount]-bar[_3c._pixelCount];
}
var _41=[_3c._getValueByPixelValue(_3c._isReversed_?(_3d[_3c._pixelCount]-pixelValues[0]):pixelValues[0],_3d[_3c._pixelCount]),_3c._getValueByPixelValue(_3c._isReversed_?(_3d[_3c._pixelCount]-pixelValues[1]):pixelValues[1],_3d[_3c._pixelCount])];
_3c._setValueAttr(_41,false,false);
},destroy:function(){
dojo.dnd.Mover.prototype.destroy.apply(this,arguments);
var _42=this.widget;
_42._abspos=null;
_42._bar=null;
_42._mouseOffset=null;
_42._setValueAttr(_42.value,true);
}});
dojo.declare("dojox.form.HorizontalRangeSlider",[dijit.form.HorizontalSlider,dojox.form._RangeSliderMixin],{templateString:dojo.cache("dojox.form","resources/HorizontalRangeSlider.html","<table class=\"dijit dijitReset dijitSlider dojoxRangeSlider\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" rules=\"none\"\n ><tr class=\"dijitReset\"\n ><td class=\"dijitReset\" colspan=\"2\"></td\n ><td dojoAttachPoint=\"containerNode,topDecoration\" class=\"dijitReset\" style=\"text-align:center;width:100%;\"></td\n ><td class=\"dijitReset\" colspan=\"2\"></td\n ></tr\n ><tr class=\"dijitReset\"\n ><td class=\"dijitReset dijitSliderButtonContainer dijitSliderButtonContainerH\"\n ><div class=\"dijitSliderDecrementIconH\" tabIndex=\"-1\" style=\"display:none\" dojoAttachPoint=\"decrementButton\" dojoAttachEvent=\"onclick: decrement\"><span class=\"dijitSliderButtonInner\">-</span></div\n ></td\n ><td class=\"dijitReset\"\n ><div class=\"dijitSliderBar dijitSliderBumper dijitSliderBumperH dijitSliderLeftBumper dijitSliderLeftBumperH\" dojoAttachEvent=\"onclick:_onClkDecBumper\"></div\n ></td\n ><td class=\"dijitReset\"\n ><input dojoAttachPoint=\"valueNode\" type=\"hidden\" name=\"${name}\"\n /><div waiRole=\"presentation\" class=\"dojoxRangeSliderBarContainer\" dojoAttachPoint=\"sliderBarContainer\"\n ><div dojoAttachPoint=\"sliderHandle\" tabIndex=\"${tabIndex}\" class=\"dijitSliderMoveable\" dojoAttachEvent=\"onkeypress:_onKeyPress,onmousedown:_onHandleClick\" waiRole=\"slider\" valuemin=\"${minimum}\" valuemax=\"${maximum}\"\n ><div class=\"dijitSliderImageHandle dijitSliderImageHandleH\"></div\n ></div\n ><div waiRole=\"presentation\" dojoAttachPoint=\"progressBar,focusNode\" class=\"dijitSliderBar dijitSliderBarH dijitSliderProgressBar dijitSliderProgressBarH\" dojoAttachEvent=\"onkeypress:_onKeyPress,onmousedown:_onBarClick\"></div\n ><div dojoAttachPoint=\"sliderHandleMax,focusNodeMax\" tabIndex=\"${tabIndex}\" class=\"dijitSliderMoveable\" dojoAttachEvent=\"onkeypress:_onKeyPress,onmousedown:_onHandleClickMax\" waiRole=\"sliderMax\" valuemin=\"${minimum}\" valuemax=\"${maximum}\"\n ><div class=\"dijitSliderImageHandle dijitSliderImageHandleH\"></div\n ></div\n ><div waiRole=\"presentation\" dojoAttachPoint=\"remainingBar\" class=\"dijitSliderBar dijitSliderBarH dijitSliderRemainingBar dijitSliderRemainingBarH\" dojoAttachEvent=\"onmousedown:_onRemainingBarClick\"></div\n ></div\n ></td\n ><td class=\"dijitReset\"\n ><div class=\"dijitSliderBar dijitSliderBumper dijitSliderBumperH dijitSliderRightBumper dijitSliderRightBumperH\" dojoAttachEvent=\"onclick:_onClkIncBumper\"></div\n ></td\n ><td class=\"dijitReset dijitSliderButtonContainer dijitSliderButtonContainerH\"\n ><div class=\"dijitSliderIncrementIconH\" tabIndex=\"-1\" style=\"display:none\" dojoAttachPoint=\"incrementButton\" dojoAttachEvent=\"onclick: increment\"><span class=\"dijitSliderButtonInner\">+</span></div\n ></td\n ></tr\n ><tr class=\"dijitReset\"\n ><td class=\"dijitReset\" colspan=\"2\"></td\n ><td dojoAttachPoint=\"containerNode,bottomDecoration\" class=\"dijitReset\" style=\"text-align:center;\"></td\n ><td class=\"dijitReset\" colspan=\"2\"></td\n ></tr\n></table>\n")});
dojo.declare("dojox.form.VerticalRangeSlider",[dijit.form.VerticalSlider,dojox.form._RangeSliderMixin],{templateString:dojo.cache("dojox.form","resources/VerticalRangeSlider.html","<table class=\"dijitReset dijitSlider dojoxRangeSlider\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" rules=\"none\"\n><tbody class=\"dijitReset\"\n ><tr class=\"dijitReset\"\n ><td class=\"dijitReset\"></td\n ><td class=\"dijitReset dijitSliderButtonContainer dijitSliderButtonContainerV\"\n ><div class=\"dijitSliderIncrementIconV\" tabIndex=\"-1\" style=\"display:none\" dojoAttachPoint=\"incrementButton\" dojoAttachEvent=\"onclick: increment\"><span class=\"dijitSliderButtonInner\">+</span></div\n ></td\n ><td class=\"dijitReset\"></td\n ></tr\n ><tr class=\"dijitReset\"\n ><td class=\"dijitReset\"></td\n ><td class=\"dijitReset\"\n ><center><div class=\"dijitSliderBar dijitSliderBumper dijitSliderBumperV dijitSliderTopBumper dijitSliderTopBumperV\" dojoAttachEvent=\"onclick:_onClkIncBumper\"></div></center\n ></td\n ><td class=\"dijitReset\"></td\n ></tr\n ><tr class=\"dijitReset\"\n ><td dojoAttachPoint=\"leftDecoration\" class=\"dijitReset\" style=\"text-align:center;height:100%;\"></td\n ><td class=\"dijitReset\" style=\"height:100%;\"\n ><input dojoAttachPoint=\"valueNode\" type=\"hidden\" name=\"${name}\"\n /><center waiRole=\"presentation\" style=\"position:relative;height:100%;\" dojoAttachPoint=\"sliderBarContainer\"\n ><div waiRole=\"presentation\" dojoAttachPoint=\"remainingBar\" class=\"dijitSliderBar dijitSliderBarV dijitSliderRemainingBar dijitSliderRemainingBarV\" dojoAttachEvent=\"onmousedown:_onRemainingBarClick\"\n ><div dojoAttachPoint=\"sliderHandle\" tabIndex=\"${tabIndex}\" class=\"dijitSliderMoveable\" dojoAttachEvent=\"onkeypress:_onKeyPress,onmousedown:_onHandleClick\" style=\"vertical-align:top;\" waiRole=\"slider\" valuemin=\"${minimum}\" valuemax=\"${maximum}\"\n ><div class=\"dijitSliderImageHandle dijitSliderImageHandleV\"></div\n ></div\n ><div waiRole=\"presentation\" dojoAttachPoint=\"progressBar,focusNode\" tabIndex=\"${tabIndex}\" class=\"dijitSliderBar dijitSliderBarV dijitSliderProgressBar dijitSliderProgressBarV\" dojoAttachEvent=\"onkeypress:_onKeyPress,onmousedown:_onBarClick\"\n ></div\n ><div dojoAttachPoint=\"sliderHandleMax,focusNodeMax\" tabIndex=\"${tabIndex}\" class=\"dijitSliderMoveable\" dojoAttachEvent=\"onkeypress:_onKeyPress,onmousedown:_onHandleClickMax\" style=\"vertical-align:top;\" waiRole=\"slider\" valuemin=\"${minimum}\" valuemax=\"${maximum}\"\n ><div class=\"dijitSliderImageHandle dijitSliderImageHandleV\"></div\n ></div\n ></div\n ></center\n ></td\n ><td dojoAttachPoint=\"containerNode,rightDecoration\" class=\"dijitReset\" style=\"text-align:center;height:100%;\"></td\n ></tr\n ><tr class=\"dijitReset\"\n ><td class=\"dijitReset\"></td\n ><td class=\"dijitReset\"\n ><center><div class=\"dijitSliderBar dijitSliderBumper dijitSliderBumperV dijitSliderBottomBumper dijitSliderBottomBumperV\" dojoAttachEvent=\"onclick:_onClkDecBumper\"></div></center\n ></td\n ><td class=\"dijitReset\"></td\n ></tr\n ><tr class=\"dijitReset\"\n ><td class=\"dijitReset\"></td\n ><td class=\"dijitReset dijitSliderButtonContainer dijitSliderButtonContainerV\"\n ><div class=\"dijitSliderDecrementIconV\" tabIndex=\"-1\" style=\"display:none\" dojoAttachPoint=\"decrementButton\" dojoAttachEvent=\"onclick: decrement\"><span class=\"dijitSliderButtonInner\">-</span></div\n ></td\n ><td class=\"dijitReset\"></td\n ></tr\n></tbody></table>\n")});
})();
}