Ticket #3685: 3685.patch

File 3685.patch, 4.5 kB (added by doughays, 16 months ago)
  • form/Slider.js

     
    44dojo.require("dijit._Container"); 
    55dojo.require("dojo.dnd.move"); 
    66dojo.require("dijit.form.Button"); 
     7dojo.require("dojo.number"); 
    78 
    89dojo.declare( 
    910        "dijit.form.HorizontalSlider", 
     
    305306                return pos; 
    306307        }, 
    307308 
     309        constructor: function(){ 
     310                this.labels = []; // initialize new array per instance 
     311        }, 
     312 
    308313        _genHTML: function(pos, ndx){ 
    309314                return this._positionPrefix + this._calcPosition(pos) + this._positionSuffix + this.labelStyle + this._labelPrefix + this.labels[ndx] + this._suffix; 
    310315        }, 
     
    313318                this.inherited('postMixInProperties', arguments); 
    314319                if(!this.labels.length){ 
    315320                        // for markup creation, labels are specified as child elements 
    316                         this.labels = dojo.query("> li", this.srcNodeRef).map(function(node){ 
    317                                 return String(node.innerHTML); 
    318                         }); 
     321                        dojo.query("*", this.srcNodeRef).orphan().forEach(function(node){ 
     322                                if(node.tagName == "SCRIPT"){ 
     323                                        // script to generate labels 
     324                                        this.labels = this.labels.concat(dojo.parser._functionFromScript(node)()); 
     325                                }else{ 
     326                                        // simple text 
     327                                        this.labels.push(String(node.innerHTML)); 
     328                                } 
     329                        }, this); 
    319330                } 
    320                 this.srcNodeRef.innerHTML=""; 
    321331        }, 
    322332 
    323333        postCreate: function(){ 
     
    339349                return 100-pos; 
    340350        } 
    341351}); 
     352 
     353dijit.form.NumericRuleLabels = function(/*Number*/start, /*Integer*/count, /*Number*/increment, /*Object*/constraints){ 
     354        var labels = []; 
     355        for (var i=0; i < count; i++){ 
     356                labels.push(dojo.number.format(start, constraints)); 
     357                start += increment; 
     358        } 
     359        return labels; 
     360} 
  • tests/form/test_Slider.html

     
    4646                        id="slider1"> 
    4747                                <ol dojoType="dijit.form.HorizontalRuleLabels" container="topDecoration" style="height:1.2em;font-size:75%;color:gray;"> 
    4848                                        <li></li> 
    49                                         <li>20%</li> 
    50                                         <li>40%</li> 
    51                                         <li>60%</li> 
    52                                         <li>80%</li> 
     49                                        <script type="dijit/method">return dijit.form.NumericRuleLabels(.20, 4, .20, {pattern:"#%"})</script> 
    5350                                        <li></li> 
    5451                                </ol> 
    55                                 <div dojoType="dijit.form.HorizontalRule" container="topDecoration" count=11 style="height:5px;"></div> 
     52                                <div dojoType="dijit.form.HorizontalRule" container="topDecoration" count=6 style="height:5px;"></div> 
    5653                                <div dojoType="dijit.form.HorizontalRule" container="bottomDecoration" count=5 style="height:5px;"></div> 
    5754                                <ol dojoType="dijit.form.HorizontalRuleLabels" container="bottomDecoration" style="height:1em;font-size:75%;color:gray;"> 
    5855                                        <li>lowest</li> 
     
    6158                                </ol> 
    6259                </div> 
    6360 
    64  
    6561                Slider1 Value:<input readonly id=slider1input size=4> 
    6662                <br> 
    6763                <button id="disableButton" dojoType="dijit.form.Button" onClick="dijit.byId('slider1').setDisabled( true);dijit.byId('disableButton').setDisabled(true);dijit.byId('enableButton').setDisabled(false);">Disable previous slider</button> 
     
    8480                                <div dojoType="dijit.form.VerticalRule" container="rightDecoration" count=11 style="width:5px;" ruleStyle="border-color:gray;"></div> 
    8581                                <ol dojoType="dijit.form.VerticalRuleLabels" container="rightDecoration" style="width:2em;color:gray;"> 
    8682                                        <li></li> 
    87                                         <li>20</li> 
    88                                         <li>40</li> 
    89                                         <li>60</li> 
    90                                         <li>80</li> 
     83                                        <script type="dijit/method">return dijit.form.NumericRuleLabels(20, 4, 20, {pattern:"#"})</script> 
    9184                                        <li></li> 
    9285                                </ol> 
    9386                </div> 
     
    137130                        style="width:50%; height: 20px;" 
    138131                        id="sliderH2"> 
    139132                                <ol dojoType="dijit.form.HorizontalRuleLabels" container="topDecoration" style="height:1.2em;font-size:75%;color:gray;"> 
    140                                         <li></li> 
    141                                         <li>20%</li> 
    142                                         <li>40%</li> 
    143                                         <li>60%</li> 
    144                                         <li>80%</li> 
    145                                         <li></li> 
     133                                        <script type="dijit/method">return dijit.form.NumericRuleLabels(0, 7, 1/6, {pattern:"#.00%"})</script> 
    146134                                </ol> 
    147                                 <div dojoType="dijit.form.HorizontalRule" container="topDecoration" count=11 style="height:5px;"></div> 
     135                                <div dojoType="dijit.form.HorizontalRule" container="topDecoration" count=7 style="height:5px;"></div> 
    148136                                <div dojoType="dijit.form.HorizontalRule" container="bottomDecoration" count=5 style="height:5px;"></div> 
    149137                                <ol dojoType="dijit.form.HorizontalRuleLabels" container="bottomDecoration" style="height:1em;font-size:75%;color:gray;"> 
    150138                                        <li>lowest</li> 
     
    153141                                </ol> 
    154142                </div> 
    155143 
    156  
    157  
    158144        </body> 
    159145</html>