📄 slider.js
字号:
if(!dojo._hasResource["dijit.form.Slider"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.dojo._hasResource["dijit.form.Slider"] = true;dojo.provide("dijit.form.Slider");dojo.require("dijit.form._FormWidget");dojo.require("dijit._Container");dojo.require("dojo.dnd.move");dojo.require("dijit.form.Button");dojo.require("dojo.number");dojo.require("dojo._base.fx");dojo.declare( "dijit.form.HorizontalSlider", [dijit.form._FormValueWidget, dijit._Container],{ // summary // A form widget that allows one to select a value with a horizontally draggable image templateString:"<table class=\"dijit dijitReset dijitSlider\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" rules=\"none\"\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\" colspan=\"2\"></td\n\t\t><td dojoAttachPoint=\"containerNode,topDecoration\" class=\"dijitReset\" style=\"text-align:center;width:100%;\"></td\n\t\t><td class=\"dijitReset\" colspan=\"2\"></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset dijitSliderButtonContainer dijitSliderButtonContainerH\"\n\t\t\t><div class=\"dijitSliderDecrementIconH\" tabIndex=\"-1\" style=\"display:none\" dojoAttachPoint=\"decrementButton\" dojoAttachEvent=\"onclick: decrement\"><span class=\"dijitSliderButtonInner\">-</span></div\n\t\t></td\n\t\t><td class=\"dijitReset\"\n\t\t\t><div class=\"dijitSliderBar dijitSliderBumper dijitSliderBumperH dijitSliderLeftBumper dijitSliderLeftBumper\" dojoAttachEvent=\"onclick:_onClkDecBumper\"></div\n\t\t></td\n\t\t><td class=\"dijitReset\"\n\t\t\t><input dojoAttachPoint=\"valueNode\" type=\"hidden\" name=\"${name}\"\n\t\t\t/><div waiRole=\"presentation\" style=\"position:relative;\" dojoAttachPoint=\"sliderBarContainer\"\n\t\t\t\t><div waiRole=\"presentation\" dojoAttachPoint=\"progressBar\" class=\"dijitSliderBar dijitSliderBarH dijitSliderProgressBar dijitSliderProgressBarH\" dojoAttachEvent=\"onclick:_onBarClick\"\n\t\t\t\t\t><div dojoAttachPoint=\"sliderHandle,focusNode\" class=\"dijitSliderMoveable dijitSliderMoveableH\" dojoAttachEvent=\"onkeypress:_onKeyPress,onmousedown:_onHandleClick\" waiRole=\"slider\" valuemin=\"${minimum}\" valuemax=\"${maximum}\"\n\t\t\t\t\t\t><div class=\"dijitSliderImageHandle dijitSliderImageHandleH\"></div\n\t\t\t\t\t></div\n\t\t\t\t></div\n\t\t\t\t><div waiRole=\"presentation\" dojoAttachPoint=\"remainingBar\" class=\"dijitSliderBar dijitSliderBarH dijitSliderRemainingBar dijitSliderRemainingBarH\" dojoAttachEvent=\"onclick:_onBarClick\"></div\n\t\t\t></div\n\t\t></td\n\t\t><td class=\"dijitReset\"\n\t\t\t><div class=\"dijitSliderBar dijitSliderBumper dijitSliderBumperH dijitSliderRightBumper dijitSliderRightBumper\" dojoAttachEvent=\"onclick:_onClkIncBumper\"></div\n\t\t></td\n\t\t><td class=\"dijitReset dijitSliderButtonContainer dijitSliderButtonContainerH\" style=\"right:0px;\"\n\t\t\t><div class=\"dijitSliderIncrementIconH\" tabIndex=\"-1\" style=\"display:none\" dojoAttachPoint=\"incrementButton\" dojoAttachEvent=\"onclick: increment\"><span class=\"dijitSliderButtonInner\">+</span></div\n\t\t></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\" colspan=\"2\"></td\n\t\t><td dojoAttachPoint=\"containerNode,bottomDecoration\" class=\"dijitReset\" style=\"text-align:center;\"></td\n\t\t><td class=\"dijitReset\" colspan=\"2\"></td\n\t></tr\n></table>\n", value: 0, // showButtons: boolean // Show increment/decrement buttons at the ends of the slider? showButtons: true, // minimum:: integer // The minimum value allowed. minimum: 0, // maximum: integer // The maximum allowed value. maximum: 100, // discreteValues: integer // The maximum allowed values dispersed evenly between minimum and maximum (inclusive). discreteValues: Infinity, // pageIncrement: integer // The amount of change with shift+arrow pageIncrement: 2, // clickSelect: boolean // If clicking the progress bar changes the value or not clickSelect: true, // slideDuration: Number // The time in ms to take to animate the slider handle from 0% to 100% slideDuration: 1000, widgetsInTemplate: true, attributeMap: dojo.mixin(dojo.clone(dijit.form._FormWidget.prototype.attributeMap), {id:"", name:"valueNode"}), baseClass: "dijitSlider", _mousePixelCoord: "pageX", _pixelCount: "w", _startingPixelCoord: "x", _startingPixelCount: "l", _handleOffsetCoord: "left", _progressPixelSize: "width", _onKeyPress: function(/*Event*/ e){ if(this.disabled || this.readOnly || e.altKey || e.ctrlKey){ return; } switch(e.keyCode){ case dojo.keys.HOME: this.setValue(this.minimum, true); break; case dojo.keys.END: this.setValue(this.maximum, true); break; // this._descending === false: if ascending vertical (min on top) // (this._descending || this.isLeftToRight()): if left-to-right horizontal or descending vertical case ((this._descending || this.isLeftToRight()) ? dojo.keys.RIGHT_ARROW : dojo.keys.LEFT_ARROW): case (this._descending === false ? dojo.keys.DOWN_ARROW : dojo.keys.UP_ARROW): case (this._descending === false ? dojo.keys.PAGE_DOWN : dojo.keys.PAGE_UP): this.increment(e); break; case ((this._descending || this.isLeftToRight()) ? dojo.keys.LEFT_ARROW : dojo.keys.RIGHT_ARROW): case (this._descending === false ? dojo.keys.UP_ARROW : dojo.keys.DOWN_ARROW): case (this._descending === false ? dojo.keys.PAGE_UP : dojo.keys.PAGE_DOWN): this.decrement(e); break; default: this.inherited(arguments); return; } dojo.stopEvent(e); }, _onHandleClick: function(e){ if(this.disabled || this.readOnly){ return; } if(!dojo.isIE){ // make sure you get focus when dragging the handle // (but don't do on IE because it causes a flicker on mouse up (due to blur then focus) dijit.focus(this.sliderHandle); } dojo.stopEvent(e); }, _isReversed: function(){ return !this.isLeftToRight(); }, _onBarClick: function(e){ if(this.disabled || this.readOnly || !this.clickSelect){ return; } dijit.focus(this.sliderHandle); dojo.stopEvent(e); var abspos = dojo.coords(this.sliderBarContainer, true); var pixelValue = e[this._mousePixelCoord] - abspos[this._startingPixelCoord]; this._setPixelValue(this._isReversed() ? (abspos[this._pixelCount] - pixelValue) : pixelValue, abspos[this._pixelCount], true); }, _setPixelValue: function(/*Number*/ pixelValue, /*Number*/ maxPixels, /*Boolean, optional*/ priorityChange){ if(this.disabled || this.readOnly){ return; } pixelValue = pixelValue < 0 ? 0 : maxPixels < pixelValue ? maxPixels : pixelValue; var count = this.discreteValues; if(count <= 1 || count == Infinity){ count = maxPixels; } count--; var pixelsPerValue = maxPixels / count; var wholeIncrements = Math.round(pixelValue / pixelsPerValue); this.setValue((this.maximum-this.minimum)*wholeIncrements/count + this.minimum, priorityChange); }, setValue: function(/*Number*/ value, /*Boolean, optional*/ priorityChange){ this.valueNode.value = this.value = value; dijit.setWaiState(this.focusNode, "valuenow", value); this.inherited(arguments); var percent = (value - this.minimum) / (this.maximum - this.minimum); var progressBar = (this._descending === false) ? this.remainingBar : this.progressBar; var remainingBar = (this._descending === false) ? this.progressBar : this.remainingBar; if(priorityChange && this.slideDuration > 0 && progressBar.style[this._progressPixelSize]){ // animate the slider var _this = this; var props = {}; var start = parseFloat(progressBar.style[this._progressPixelSize]); var duration = this.slideDuration * (percent-start/100); if(duration == 0){ return; } if(duration < 0){ duration = 0 - duration; } props[this._progressPixelSize] = { start: start, end: percent*100, units:"%" }; dojo.animateProperty({ node: progressBar, duration: duration, onAnimate: function(v){ remainingBar.style[_this._progressPixelSize] = (100-parseFloat(v[_this._progressPixelSize])) + "%"; }, properties: props }).play(); } else{ progressBar.style[this._progressPixelSize] = (percent*100) + "%"; remainingBar.style[this._progressPixelSize] = ((1-percent)*100) + "%"; } }, _bumpValue: function(signedChange){ if(this.disabled || this.readOnly){ return; } var s = dojo.getComputedStyle(this.sliderBarContainer); var c = dojo._getContentBox(this.sliderBarContainer, s); var count = this.discreteValues; if(count <= 1 || count == Infinity){ count = c[this._pixelCount]; } count--; var value = (this.value - this.minimum) * count / (this.maximum - this.minimum) + signedChange; if(value < 0){ value = 0; } if(value > count){ value = count; } value = value * (this.maximum - this.minimum) / count + this.minimum; this.setValue(value, true); }, _onClkIncBumper: function(){ this.setValue(this._descending === false ? this.minimum : this.maximum, true); }, _onClkDecBumper: function(){ this.setValue(this._descending === false ? this.maximum : this.minimum, true); }, decrement: function(e){ // summary // decrement slider by 1 unit this._bumpValue(e.keyCode == dojo.keys.PAGE_DOWN?-this.pageIncrement:-1); }, increment: function(e){ // summary // increment slider by 1 unit this._bumpValue(e.keyCode == dojo.keys.PAGE_UP?this.pageIncrement:1); }, _mouseWheeled: function(/*Event*/ evt){ dojo.stopEvent(evt); var scrollAmount = 0; if(typeof evt.wheelDelta == 'number'){ // IE scrollAmount = evt.wheelDelta; }else if(typeof evt.detail == 'number'){ // Mozilla+Firefox scrollAmount = -evt.detail; } if(scrollAmount > 0){ this.increment(evt); }else if(scrollAmount < 0){ this.decrement(evt); } }, startup: function(){ dojo.forEach(this.getChildren(), function(child){ if(this[child.container] != this.containerNode){ this[child.container].appendChild(child.domNode); } }, this); }, postCreate: function(){ if(this.showButtons){ this.incrementButton.style.display=""; this.decrementButton.style.display=""; } this.connect(this.domNode, dojo.isIE ? "onmousewheel" : 'DOMMouseScroll', "_mouseWheeled"); // define a custom constructor for a SliderMover that points back to me var _self = this; var mover = function(){ dijit.form._SliderMover.apply(this, arguments); this.widget = _self; }; dojo.extend(mover, dijit.form._SliderMover.prototype); this._movable = new dojo.dnd.Moveable(this.sliderHandle, {mover: mover}); dijit.setWaiState(this.focusNode, "valuemin", this.minimum); dijit.setWaiState(this.focusNode, "valuemax", this.maximum); this.inherited(arguments); }, destroy: function(){ this._movable.destroy(); this.inherited(arguments); }});dojo.declare( "dijit.form.VerticalSlider", dijit.form.HorizontalSlider,{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -