Skip to content

Commit

Permalink
Spinner: added an init callback which exposes the addItem method for …
Browse files Browse the repository at this point in the history
…dynamic population of spinner via an external objects.
  • Loading branch information
Ca-Phun Ung committed Sep 9, 2008
1 parent 48cce41 commit accc76b
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 3 deletions.
37 changes: 36 additions & 1 deletion tests/visual/spinner.html
Expand Up @@ -10,12 +10,34 @@


<script type="text/javascript"> <script type="text/javascript">
$(function(){ $(function(){
var itemList = [
{url: "http://ejohn.org", title: "John Resig"},
{url: "http://bassistance.de/", title: "J&ouml;rn Zaefferer"},
{url: "http://snook.ca/jonathan/", title: "Jonathan Snook"},
{url: "http://rdworth.org/", title: "Richard Worth"},
{url: "http://www.paulbakaus.com/", title: "Paul Bakaus"},
{url: "http://www.yehudakatz.com/", title: "Yehuda Katz"},
{url: "http://www.azarask.in/", title: "Aza Raskin"},
{url: "http://www.karlswedberg.com/", title: "Karl Swedberg"},
{url: "http://scottjehl.com/", title: "Scott Jehl"},
{url: "http://jdsharp.us/", title: "Jonathan Sharp"},
{url: "http://www.kevinhoyt.org/", title: "Kevin Hoyt"},
{url: "http://www.codylindley.com/", title: "Cody Lindley"},
{url: "http://malsup.com/jquery/", title: "Mike Alsup"}
];


var opts = { var opts = {
's1': {}, 's1': {},
's2': {stepping: 0.25}, 's2': {stepping: 0.25},
's3': {currency: '$'}, 's3': {currency: '$'},
's4': {} 's4': {},
's5': {
init: function(ui) {
for (var i=0; i<itemList.length; i++) {
ui.add(itemList[i].title +' <a href="'+ itemList[i].url +'" target="_blank">&raquo;</a>');
}
}
}
}; };


for (var n in opts) for (var n in opts)
Expand Down Expand Up @@ -181,5 +203,18 @@ <h1>jQuery UI Spinner Test Page</h1>


<hr /> <hr />


<p><label for="s5">Presenters: </label>
<div id="s5"></div>

<p>
<button id="s5-disable">disable</button>
<button id="s5-enable">enable</button>
<button id="s5-destroy">destroy</button>
<button id="s5-create">create</button>
</p>

<hr />


</body> </body>
</html> </html>
22 changes: 20 additions & 2 deletions ui/ui.spinner.js
Expand Up @@ -17,6 +17,11 @@ $.widget('ui.spinner', {
// terminate initialization if spinner already applied to current element // terminate initialization if spinner already applied to current element
if($.data(this.element[0], 'spinner')) return; if($.data(this.element[0], 'spinner')) return;


// check for onInit callback
if (this.options.init) {
this.options.init(this.ui(null));
}

// check for decimals in steppinng and set _decimals as internal (needs cleaning up) // check for decimals in steppinng and set _decimals as internal (needs cleaning up)
this._decimals = 0; this._decimals = 0;
if (this.options.stepping.toString().indexOf('.') != -1) { if (this.options.stepping.toString().indexOf('.') != -1) {
Expand Down Expand Up @@ -113,6 +118,7 @@ $.widget('ui.spinner', {
}) })
.end(); .end();



// DataList: Set contraints for object length and step size. // DataList: Set contraints for object length and step size.
// Manipulate height of spinner. // Manipulate height of spinner.
this._items = this.element.children().length; this._items = this.element.children().length;
Expand Down Expand Up @@ -150,7 +156,8 @@ $.widget('ui.spinner', {
}); });
} }
}, },



_constrain: function() { _constrain: function() {
if(this.options.min != undefined && this._getValue() < this.options.min) this._setValue(this.options.min); if(this.options.min != undefined && this._getValue() < this.options.min) this._setValue(this.options.min);
if(this.options.max != undefined && this._getValue() > this.options.max) this._setValue(this.options.max); if(this.options.max != undefined && this._getValue() > this.options.max) this._setValue(this.options.max);
Expand Down Expand Up @@ -229,14 +236,24 @@ $.widget('ui.spinner', {
}); });
} }
}, },
_addItem: function(html) {
if (!this.element.is('input')) {
var wrapper = 'div';
if (this.element.is('ol') || this.element.is('ul')) {
wrapper = 'li';
}
this.element.append('<'+ wrapper +' class="ui-spinner-dyn">'+ html + '</'+ wrapper +'>');
}
},




plugins: {}, plugins: {},
ui: function(e) { ui: function(e) {
return { return {
options: this.options, options: this.options,
element: this.element, element: this.element,
value: this._getValue() value: this._getValue(),
add: this._addItem
}; };
}, },
_propagate: function(n,e) { _propagate: function(n,e) {
Expand All @@ -259,6 +276,7 @@ $.widget('ui.spinner', {
.end() .end()
.children() .children()
.removeClass('ui-spinner-listitem') .removeClass('ui-spinner-listitem')
.remove('.ui-spinner-dyn')
.end() .end()
.parent() .parent()
.removeClass('ui-spinner ui-spinner-disabled') .removeClass('ui-spinner ui-spinner-disabled')
Expand Down

0 comments on commit accc76b

Please sign in to comment.