Spinner: Use a polynomial instead of hard-coded blocks for incremental stepping.

This commit is contained in:
Scott González 2011-08-07 19:21:23 -04:00
parent 2a8a77a9b2
commit 8c5a6f7241

View File

@ -239,16 +239,7 @@ $.widget( "ui.spinner", {
this.counter = 1; this.counter = 1;
} }
// TODO refactor, maybe figure out some non-linear math var newVal = this.value() + step * this._increment( this.counter );
// x*x*x/50000 - x*x/500 + 17*x/200 + 1
var newVal = this.value() + step * (this.options.incremental &&
this.counter > 20
? this.counter > 100
? this.counter > 200
? 100
: 10
: 2
: 1);
// clamp the new value // clamp the new value
newVal = this._trimValue( newVal ); newVal = this._trimValue( newVal );
@ -259,6 +250,12 @@ $.widget( "ui.spinner", {
} }
}, },
_increment: function( i ) {
return this.options.incremental ?
Math.floor( i*i*i/50000 - i*i/500 + 17*i/200 + 1 ) :
1;
},
_trimValue: function( value ) { _trimValue: function( value ) {
var options = this.options; var options = this.options;