Skip to content
Permalink
Browse files

Spinner: added an init callback which exposes the addItem method for …

…dynamic population of spinner via an external objects.
  • Loading branch information...
Ca-Phun Ung
Ca-Phun Ung committed Sep 9, 2008
1 parent 48cce41 commit accc76bc64e8844153954868258b9dd59b9ba294
Showing with 56 additions and 3 deletions.
  1. +36 −1 tests/visual/spinner.html
  2. +20 −2 ui/ui.spinner.js
@@ -10,12 +10,34 @@

<script type="text/javascript">
$(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 = {
's1': {},
's2': {stepping: 0.25},
'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)
@@ -181,5 +203,18 @@ <h1>jQuery UI Spinner Test Page</h1>

<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>
</html>
@@ -17,6 +17,11 @@ $.widget('ui.spinner', {
// terminate initialization if spinner already applied to current element
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)
this._decimals = 0;
if (this.options.stepping.toString().indexOf('.') != -1) {
@@ -113,6 +118,7 @@ $.widget('ui.spinner', {
})
.end();


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



_constrain: function() {
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);
@@ -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: {},
ui: function(e) {
return {
options: this.options,
element: this.element,
value: this._getValue()
value: this._getValue(),
add: this._addItem
};
},
_propagate: function(n,e) {
@@ -259,6 +276,7 @@ $.widget('ui.spinner', {
.end()
.children()
.removeClass('ui-spinner-listitem')
.remove('.ui-spinner-dyn')
.end()
.parent()
.removeClass('ui-spinner ui-spinner-disabled')

0 comments on commit accc76b

Please sign in to comment.
You can’t perform that action at this time.