Nuria has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/201407

Change subject: Reducing polling of report screen when not visible
......................................................................

Reducing polling of report screen when not visible

Polling of report screen is done too frequently,
we take advantage of browsers that support the visibility API
to reduce polling so when we report the number of requests
received by wikimetrics we have as little self inflicted
traffic as possible.

Bug: T94193
Change-Id: I9a9dffccacd1e0a765a8bb234397321413266d70
---
M wikimetrics/static/js/reportList.js
M wikimetrics/static/js/site.js
2 files changed, 47 insertions(+), 7 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/analytics/wikimetrics 
refs/changes/07/201407/1

diff --git a/wikimetrics/static/js/reportList.js 
b/wikimetrics/static/js/reportList.js
index 107524d..0765528 100644
--- a/wikimetrics/static/js/reportList.js
+++ b/wikimetrics/static/js/reportList.js
@@ -40,7 +40,9 @@
     
     // get reports from reports/detail/endpoint
     var getReports = function (once) {
-        site.populateReports(viewModel);
+        if (site.pollingActive) {
+            site.populateReports(viewModel);
+        }
         if (!once) {
             setTimeout(getReports, site.getRefreshRate());
         }
diff --git a/wikimetrics/static/js/site.js b/wikimetrics/static/js/site.js
index a2d8dbf..7c5b182 100644
--- a/wikimetrics/static/js/site.js
+++ b/wikimetrics/static/js/site.js
@@ -84,13 +84,16 @@
         }
     },
     
-    refreshEvery: 5,
+    /* 
+    * Refresh rate for ajax polling
+    * enter seconds, this will be converted to ms
+    */
+    defaultRefreshRate: 5,
+        
+    pollingActive: true,
+    
     getRefreshRate: function() {
-        /* if not visible refresh rate is lower */
-        var rate = site.refreshEvery; /* enter seconds, this will be converted 
to ms*/
-        if (!site.isVisible()){
-            rate = rate * 10;
-        }
+        var rate = site.defaultRefreshRate;
         return rate*1000;
     },
     
@@ -175,6 +178,41 @@
     }
 };
 
+// dealing with visibility API, looks like it is not available on jquery
+// Set the name of the hidden property and the change event for visibility
+// From: 
https://developer.mozilla.org/en-US/docs/Web/Guide/User_experience/Using_the_Page_Visibility_API
+var hidden, visibilityChange; 
+if (typeof document.hidden !== "undefined") { // Opera 12.10 and Firefox 18 
and later support 
+  hidden = "hidden";
+  visibilityChange = "visibilitychange";
+} else if (typeof document.mozHidden !== "undefined") {
+  hidden = "mozHidden";
+  visibilityChange = "mozvisibilitychange";
+} else if (typeof document.msHidden !== "undefined") {
+  hidden = "msHidden";
+  visibilityChange = "msvisibilitychange";
+} else if (typeof document.webkitHidden !== "undefined") {
+  hidden = "webkitHidden";
+  visibilityChange = "webkitvisibilitychange";
+}
+
+/* 
+* Disable polling if UI
+* is not visible 
+*/
+function handleVisibilityChange() {
+  if (document[hidden]) {
+      site.pollingActive = false;
+  } else {
+      site.pollingActive = true;
+  }
+}
+
+if (typeof document.addEventListener !== "undefined" || 
+  typeof document[hidden] !== "undefined") {
+  document.addEventListener(visibilityChange, handleVisibilityChange, false);
+}
+
 // moment configuration
 moment.lang('en', { calendar: {
     sameDay  : '[Today at] HH:mm z',

-- 
To view, visit https://gerrit.wikimedia.org/r/201407
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I9a9dffccacd1e0a765a8bb234397321413266d70
Gerrit-PatchSet: 1
Gerrit-Project: analytics/wikimetrics
Gerrit-Branch: master
Gerrit-Owner: Nuria <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to