@cryptotaxi247 / netdata-1 / commits / f1b8b00f6

lower browser pressure on page scroll

Costa Tsaousis (ktsaou) committed Oct 1, 2016 at 18:52 UTC f1b8b00f615b45f3995e67feb83344691f818e2b
1 file changed +39 -4
web/dashboard.js
+39 -4
@@ -503,6 +503,26 @@
503 NETDATA.onscroll();
504 };
505
506 + NETDATA.onscroll_updater_count = 0;
507 + NETDATA.onscroll_updater_running = false;
508 + NETDATA.onscroll_updater_last_run = 0;
509 + NETDATA.onscroll_updater_watchdog = null;
510 + NETDATA.onscroll_updater = function() {
511 + NETDATA.onscroll_updater_running = true;
512 + NETDATA.onscroll_updater_count++;
513 + var start = new Date().getTime();
514 +
515 + var targets = NETDATA.options.targets;
516 + var len = targets.length;
517 + while (len--)
518 + targets[len].isVisible();
519 +
520 + var end = new Date().getTime();
521 + // console.log('scroll No ' + NETDATA.onscroll_updater_count + ' calculation took ' + (end - start).toString() + ' ms');
522 + NETDATA.onscroll_updater_last_run = start;
523 + NETDATA.onscroll_updater_running = false;
524 + };
525 +
526 NETDATA.onscroll = function() {
527 // console.log('onscroll');
528
@@ -515,9 +535,9 @@
535 // hidden all the not-visible charts
536 // using this little function we try to switch
537 // the charts back to visible quickly
518 - var targets = NETDATA.options.targets;
519 - var len = targets.length;
538 if(NETDATA.options.abort_ajax_on_scroll === true) {
539 + var targets = NETDATA.options.targets;
540 + var len = targets.length;
541 while (len--) {
542 if (targets[len]._updating === true) {
543 if (typeof targets[len].xhr !== 'undefined') {
@@ -530,8 +550,23 @@
550 }
551 }
552 else {
533 - while (len--)
534 - targets[len].isVisible();
553 + if(NETDATA.onscroll_updater_running === false) {
554 + NETDATA.onscroll_updater_running = true;
555 + setTimeout(NETDATA.onscroll_updater, 0);
556 + }
557 + else {
558 + if(NETDATA.onscroll_updater_watchdog !== null)
559 + clearTimeout(NETDATA.onscroll_updater_watchdog);
560 +
561 + NETDATA.onscroll_updater_watchdog = setTimeout(function() {
562 + if(NETDATA.onscroll_updater_running === false && NETDATA.options.last_page_scroll > NETDATA.onscroll_updater_last_run) {
563 + // console.log('watchdog');
564 + NETDATA.onscroll_updater();
565 + }
566 +
567 + NETDATA.onscroll_updater_watchdog = null;
568 + }, 200);
569 + }
570 }
571 };
572