datatable improvements - jscancer - Javascript crap (relatively small)
 (HTM) git clone git://git.codemadness.org/jscancer
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 87c20268ba0558928ae28e6a59d130f14fac7795
 (DIR) parent 8803e0fdca023fa927652585137eb5607355e357
 (HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
       Date:   Sun,  2 Oct 2016 13:26:29 +0200
       
       datatable improvements
       
       - in lazyscroll mode: reset scroll position after filtering.
       - in lazyscroll mode: on window resize also call scroll(): this will force
         to redraw the table (fixes a glitch).
       - increase scroll update interval (~30fps to ~60fps) to be a bit smoother.
       
       Diffstat:
         M datatable/datatable.js              |      25 ++++++++++++++-----------
       
       1 file changed, 14 insertions(+), 11 deletions(-)
       ---
 (DIR) diff --git a/datatable/datatable.js b/datatable/datatable.js
       @@ -108,23 +108,24 @@ function datatable_init(el) {
                                for (var i = start, prev = startfiller, p = bodytbody; i <= end; i++)
                                        prev = p.insertBefore(d.data[i].tr, prev.nextSibling);
                        };
       +                d.scroll = function(y) {
       +                        bodyel.scrollTop = y;
       +                };
        
       -                var curscrollleft, curscrolltop, verticalscrolltimer;
       -                bodyel.addEventListener("scroll", function() {
       +                var curscrollleft, verticalscrolltimer;
       +                var scroll = function() {
                                // handle left / right scroll.
                                var scrolleft = bodyel.scrollLeft;
                                if (curscrollleft !== scrolleft)
                                        headersel.scrollLeft = curscrollleft = scrolleft;
                                // handle up/down scroll.
       -                        var scrolltop = bodyel.scrollTop;
       -                        if (curscrolltop !== scrolltop) {
       -                                clearTimeout(verticalscrolltimer);
       -                                verticalscrolltimer = setTimeout(function() {
       -                                        d.display(d.data);
       -                                }, 32);
       -                                curscrolltop = scrolltop;
       -                        }
       -                });
       +                        clearTimeout(verticalscrolltimer);
       +                        verticalscrolltimer = setTimeout(function() {
       +                                d.display(d.data);
       +                        }, 16);
       +                };
       +                window.addEventListener("resize", scroll);
       +                bodyel.addEventListener("scroll", scroll);
                        d.display(d.data);
                } else {
                        d.display = function(data) {
       @@ -264,6 +265,8 @@ function datatable_filter_text(d, s) {
                }
                d.search = s;
                d.display(d.data);
       +        if (d.scroll)
       +                d.scroll(0);
        }
        
        function datatable_filter_delayed(d, fn, e) {