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