]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 1270295 - don't update timestamps when the tab is not active / in the background
authorDavid Lawrence <dkl@mozilla.com>
Thu, 12 May 2016 19:22:51 +0000 (19:22 +0000)
committerDavid Lawrence <dkl@mozilla.com>
Thu, 12 May 2016 19:22:51 +0000 (19:22 +0000)
extensions/BugModal/template/en/default/bug_modal/header.html.tmpl
extensions/BugModal/web/bug_modal.js
js/jquery/plugins/visibility/visibility-min.js [new file with mode: 0644]

index 84efbd077064f9503db7af32b3c95d932f07b6cc..48064f06c6ee8f6da43f94065028c52499e9a701 100644 (file)
@@ -60,6 +60,7 @@
   jquery.push(
     "datetimepicker",
     "contextMenu",
+    "visibility"
   );
   style_urls.push(
     "extensions/BugModal/web/bug_modal.css",
index e0ef40a13ed172ca27142d6c14fea9d5a2fa0fe4..6c10c6fb0860d22b162e1e3d1ab8f6d7da6d7053 100644 (file)
@@ -51,7 +51,16 @@ $(function() {
     'use strict';
 
     // update relative dates
-    window.setInterval(function() {
+    var relative_timer_duration = 60000;
+    var relative_timer_id = window.setInterval(relativeTimer, relative_timer_duration);
+    $(document).on('show.visibility', function() {
+        relative_timer_id = window.setInterval(relativeTimer, relative_timer_duration)
+    });
+    $(document).on('hide.visibility', function() {
+        window.clearInterval(relative_timer_id);
+    });
+
+    function relativeTimer() {
         var now = Math.floor(new Date().getTime() / 1000);
         $('.rel-time').each(function() {
             $(this).text(timeAgo(now - $(this).data('time')));
@@ -59,7 +68,7 @@ $(function() {
         $('.rel-time-title').each(function() {
             $(this).attr('title', timeAgo(now - $(this).data('time')));
         });
-    }, 60000);
+    }
 
     // all keywords for autocompletion (lazy-loaded on edit)
     var keywords = [];
diff --git a/js/jquery/plugins/visibility/visibility-min.js b/js/jquery/plugins/visibility/visibility-min.js
new file mode 100644 (file)
index 0000000..e47b5c8
--- /dev/null
@@ -0,0 +1,2 @@
+/*! jquery-visibility v1.0.12 | MIT license | http://mths.be/visibility */
+!function(e,i){"function"==typeof define&&define.amd?define(["jquery"],function(t){return i(e,t)}):"object"==typeof exports?module.exports=i(e,require("jquery")):i(e,jQuery)}("undefined"!=typeof window?window:this,function(e,i,t){"use strict";function n(){"hidden"!==o&&(r.hidden=s.pageVisibility?r[o]:t)}for(var o,u,r=e.document,f=["webkit","o","ms","moz",""],s=i.support||{},d=("onfocusin"in r&&"hasFocus"in r?"focusin focusout":"focus blur");(u=f.pop())!==t;)if(o=(u?u+"H":"h")+"idden",s.pageVisibility=r[o]!==t,s.pageVisibility){d=u+"visibilitychange";break}n(),i(/blur$/.test(d)?e:r).on(d,function(e){var u=e.type,f=e.originalEvent;if(f){var s=f.toElement;(!/^focus./.test(u)||s===t&&f.fromElement===t&&f.relatedTarget===t)&&i(r).triggerHandler(o&&r[o]||/^(?:blur|focusout)$/.test(u)?"hide":"show"),n()}})});