📄 slider.js
字号:
// summary // A form widget that allows one to select a value with a vertically draggable image templateString:"<table class=\"dijitReset dijitSlider\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" rules=\"none\"\n><tbody class=\"dijitReset\"\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\"></td\n\t\t><td class=\"dijitReset dijitSliderButtonContainer dijitSliderButtonContainerV\"\n\t\t\t><div class=\"dijitSliderIncrementIconV\" tabIndex=\"-1\" style=\"display:none\" dojoAttachPoint=\"incrementButton\" dojoAttachEvent=\"onclick:_topButtonClicked\"><span class=\"dijitSliderButtonInner\">+</span></div\n\t\t></td\n\t\t><td class=\"dijitReset\"></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\"></td\n\t\t><td class=\"dijitReset\"\n\t\t\t><center><div class=\"dijitSliderBar dijitSliderBumper dijitSliderBumperV dijitSliderTopBumper dijitSliderTopBumper\" dojoAttachEvent=\"onclick:_onClkIncBumper\"></div></center\n\t\t></td\n\t\t><td class=\"dijitReset\"></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td dojoAttachPoint=\"leftDecoration\" class=\"dijitReset\" style=\"text-align:center;height:100%;\"></td\n\t\t><td class=\"dijitReset\" style=\"height:100%;\"\n\t\t\t><input dojoAttachPoint=\"valueNode\" type=\"hidden\" name=\"${name}\"\n\t\t\t/><center waiRole=\"presentation\" style=\"position:relative;height:100%;\" dojoAttachPoint=\"sliderBarContainer\"\n\t\t\t\t><div waiRole=\"presentation\" dojoAttachPoint=\"remainingBar\" class=\"dijitSliderBar dijitSliderBarV dijitSliderRemainingBar dijitSliderRemainingBarV\" dojoAttachEvent=\"onclick:_onBarClick\"><!--#5629--></div\n\t\t\t\t><div waiRole=\"presentation\" dojoAttachPoint=\"progressBar\" class=\"dijitSliderBar dijitSliderBarV dijitSliderProgressBar dijitSliderProgressBarV\" dojoAttachEvent=\"onclick:_onBarClick\"\n\t\t\t\t\t><div dojoAttachPoint=\"sliderHandle,focusNode\" class=\"dijitSliderMoveable\" dojoAttachEvent=\"onkeypress:_onKeyPress,onmousedown:_onHandleClick\" style=\"vertical-align:top;\" waiRole=\"slider\" valuemin=\"${minimum}\" valuemax=\"${maximum}\"\n\t\t\t\t\t\t><div class=\"dijitSliderImageHandle dijitSliderImageHandleV\"></div\n\t\t\t\t\t></div\n\t\t\t\t></div\n\t\t\t></center\n\t\t></td\n\t\t><td dojoAttachPoint=\"containerNode,rightDecoration\" class=\"dijitReset\" style=\"text-align:center;height:100%;\"></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\"></td\n\t\t><td class=\"dijitReset\"\n\t\t\t><center><div class=\"dijitSliderBar dijitSliderBumper dijitSliderBumperV dijitSliderBottomBumper dijitSliderBottomBumper\" dojoAttachEvent=\"onclick:_onClkDecBumper\"></div></center\n\t\t></td\n\t\t><td class=\"dijitReset\"></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\"></td\n\t\t><td class=\"dijitReset dijitSliderButtonContainer dijitSliderButtonContainerV\"\n\t\t\t><div class=\"dijitSliderDecrementIconV\" tabIndex=\"-1\" style=\"display:none\" dojoAttachPoint=\"decrementButton\" dojoAttachEvent=\"onclick:_bottomButtonClicked\"><span class=\"dijitSliderButtonInner\">-</span></div\n\t\t></td\n\t\t><td class=\"dijitReset\"></td\n\t></tr\n></tbody></table>\n", _mousePixelCoord: "pageY", _pixelCount: "h", _startingPixelCoord: "y", _startingPixelCount: "t", _handleOffsetCoord: "top", _progressPixelSize: "height", // _descending: boolean // Specifies if the slider values go from high-on-top (true), or low-on-top (false) // TODO: expose this in 1.2 - the css progress/remaining bar classes need to be reversed _descending: true, startup: function(){ if(this._started){ return; } if(!this.isLeftToRight() && dojo.isMoz){ if(this.leftDecoration){this._rtlRectify(this.leftDecoration);} if(this.rightDecoration){this._rtlRectify(this.rightDecoration);} } this.inherited(arguments); }, _isReversed: function(){ return this._descending; }, _topButtonClicked: function(e){ if(this._descending){ this.increment(e); }else{ this.decrement(e); } }, _bottomButtonClicked: function(e){ if(this._descending){ this.decrement(e); }else{ this.increment(e); } }, _rtlRectify: function(decorationNode/*NodeList*/){ // summary: // Rectify children nodes for left/right decoration in rtl case. // Simply switch the rule and label child for each decoration node. var childNodes = []; while(decorationNode.firstChild){ childNodes.push(decorationNode.firstChild); decorationNode.removeChild(decorationNode.firstChild); } for(var i = childNodes.length-1; i >=0; i--){ if(childNodes[i]){ decorationNode.appendChild(childNodes[i]); } } }});dojo.declare("dijit.form._SliderMover", dojo.dnd.Mover,{ onMouseMove: function(e){ var widget = this.widget; var abspos = widget._abspos; if(!abspos){ abspos = widget._abspos = dojo.coords(widget.sliderBarContainer, true); widget._setPixelValue_ = dojo.hitch(widget, "_setPixelValue"); widget._isReversed_ = widget._isReversed(); } var pixelValue = e[widget._mousePixelCoord] - abspos[widget._startingPixelCoord]; widget._setPixelValue_(widget._isReversed_ ? (abspos[widget._pixelCount]-pixelValue) : pixelValue, abspos[widget._pixelCount], false); }, destroy: function(e){ dojo.dnd.Mover.prototype.destroy.apply(this, arguments); var widget = this.widget; widget.setValue(widget.value, true); }});dojo.declare("dijit.form.HorizontalRule", [dijit._Widget, dijit._Templated],{ // Summary: // Create hash marks for the Horizontal slider templateString: '<div class="dijitRuleContainer dijitRuleContainerH"></div>', // count: Integer // Number of hash marks to generate count: 3, // container: Node // If this is a child widget, connect it to this parent node container: "containerNode", // ruleStyle: String // CSS style to apply to individual hash marks ruleStyle: "", _positionPrefix: '<div class="dijitRuleMark dijitRuleMarkH" style="left:', _positionSuffix: '%;', _suffix: '"></div>', _genHTML: function(pos, ndx){ return this._positionPrefix + pos + this._positionSuffix + this.ruleStyle + this._suffix; }, _isHorizontal: true, postCreate: function(){ var innerHTML; if(this.count==1){ innerHTML = this._genHTML(50, 0); }else{ var i; var interval = 100 / (this.count-1); if(!this._isHorizontal || this.isLeftToRight()){ innerHTML = this._genHTML(0, 0); for(i=1; i < this.count-1; i++){ innerHTML += this._genHTML(interval*i, i); } innerHTML += this._genHTML(100, this.count-1); }else{ innerHTML = this._genHTML(100, 0); for(i=1; i < this.count-1; i++){ innerHTML += this._genHTML(100-interval*i, i); } innerHTML += this._genHTML(0, this.count-1); } } this.domNode.innerHTML = innerHTML; }});dojo.declare("dijit.form.VerticalRule", dijit.form.HorizontalRule,{ // Summary: // Create hash marks for the Vertical slider templateString: '<div class="dijitRuleContainer dijitRuleContainerV"></div>', _positionPrefix: '<div class="dijitRuleMark dijitRuleMarkV" style="top:', _isHorizontal: false});dojo.declare("dijit.form.HorizontalRuleLabels", dijit.form.HorizontalRule,{ // Summary: // Create labels for the Horizontal slider templateString: '<div class="dijitRuleContainer dijitRuleContainerH"></div>', // labelStyle: String // CSS style to apply to individual text labels labelStyle: "", // labels: Array // Array of text labels to render - evenly spaced from left-to-right or bottom-to-top labels: [], // numericMargin: Integer // Number of generated numeric labels that should be rendered as '' on the ends when labels[] are not specified numericMargin: 0, // numericMinimum: Integer // Leftmost label value for generated numeric labels when labels[] are not specified minimum: 0, // numericMaximum: Integer // Rightmost label value for generated numeric labels when labels[] are not specified maximum: 1, // constraints: object // pattern, places, lang, et al (see dojo.number) for generated numeric labels when labels[] are not specified constraints: {pattern:"#%"}, _positionPrefix: '<div class="dijitRuleLabelContainer dijitRuleLabelContainerH" style="left:', _labelPrefix: '"><span class="dijitRuleLabel dijitRuleLabelH">', _suffix: '</span></div>', _calcPosition: function(pos){ return pos; }, _genHTML: function(pos, ndx){ return this._positionPrefix + this._calcPosition(pos) + this._positionSuffix + this.labelStyle + this._labelPrefix + this.labels[ndx] + this._suffix; }, getLabels: function(){ // summary: user replaceable function to return the labels array // if the labels array was not specified directly, then see if <li> children were var labels = this.labels; if(!labels.length){ // for markup creation, labels are specified as child elements labels = dojo.query("> li", this.srcNodeRef).map(function(node){ return String(node.innerHTML); }); } this.srcNodeRef.innerHTML = ''; // if the labels were not specified directly and not as <li> children, then calculate numeric labels if(!labels.length && this.count > 1){ var start = this.minimum; var inc = (this.maximum - start) / (this.count-1); for (var i=0; i < this.count; i++){ labels.push((i<this.numericMargin||i>=(this.count-this.numericMargin))? '' : dojo.number.format(start, this.constraints)); start += inc; } } return labels; }, postMixInProperties: function(){ this.inherited(arguments); this.labels = this.getLabels(); this.count = this.labels.length; }});dojo.declare("dijit.form.VerticalRuleLabels", dijit.form.HorizontalRuleLabels,{ // Summary: // Create labels for the Vertical slider templateString: '<div class="dijitRuleContainer dijitRuleContainerV"></div>', _positionPrefix: '<div class="dijitRuleLabelContainer dijitRuleLabelContainerV" style="top:', _labelPrefix: '"><span class="dijitRuleLabel dijitRuleLabelV">', _calcPosition: function(pos){ return 100-pos; }, _isHorizontal: false});}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -