diff --git a/js/dataTables.scroller.js b/js/dataTables.scroller.js index 2c422da..a7f8c41 100644 --- a/js/dataTables.scroller.js +++ b/js/dataTables.scroller.js @@ -419,7 +419,7 @@ $.extend( Scroller.prototype, { } } - if ( typeof animate == 'undefined' || animate ) + if ( animate === undefined || animate ) { this.s.ani = ani; $(this.dom.scroller).animate( { @@ -429,7 +429,7 @@ $.extend( Scroller.prototype, { // the final scroll event fired setTimeout( function () { that.s.ani = false; - }, 25 ); + }, 250 ); } ); } else @@ -786,11 +786,11 @@ $.extend( Scroller.prototype, { if ( val < magic ) { return val; } - else if ( dir === 'virtualToPhysical' && val > heights.virtual - magic ) { + else if ( dir === 'virtualToPhysical' && val >= heights.virtual - magic ) { diff = heights.virtual - val; return heights.scroll - diff; } - else if ( dir === 'physicalToVirtual' && val > heights.scroll - magic ) { + else if ( dir === 'physicalToVirtual' && val >= heights.scroll - magic ) { diff = heights.scroll - val; return heights.virtual - diff; } @@ -803,17 +803,12 @@ $.extend( Scroller.prototype, { // causing a kink in the scrolling ratio. It does mean the scrollbar is // non-linear, but with such massive data sets, the scrollbar is going // to be a best guess anyway - var xMax = dir === 'virtualToPhysical' ? - heights.virtual : - heights.scroll; - var yMax = dir === 'virtualToPhysical' ? - heights.scroll : - heights.virtual; - - var m = (yMax - magic) / (xMax - magic); + var m = (heights.virtual - magic - magic) / (heights.scroll - magic - magic); var c = magic - (m*magic); - return (m*val) + c; + return dir === 'virtualToPhysical' ? + (val-c) / m : + (m*val) + c; }, /**