Sha256: 2f2c3fb7b0751829077b225357f9ddd270fcbf4ed18b7cd7d16f931a4b5b5f3d

Contents?: true

Size: 1.69 KB

Versions: 19

Compression:

Stored size: 1.69 KB

Contents

(function(){
  "use strict";
  var POLLING_INTERVAL = 3 * 1000;
  var POLLING_URL = "/polling/alerts";

  $(function(){
    if($('#vue-notification').length === 0) return;

    var alert = new Vue({
      el: "#vue-notification",
      data: {
        "alerts": []
      },

      created: function(){
        var timer;
        var self = this;
        var currentInterval = POLLING_INTERVAL;
        var fetch = function(){
          self.fetchAlertsData().then(function(alerts){
            if(self.alerts.toString() == alerts.toString()) {
              currentInterval *= 1.1;
            } else {
              currentInterval = POLLING_INTERVAL;
            }
            self.alerts = alerts;
            timer = setTimeout(fetch, currentInterval);
          })["catch"](function(xhr){
            if(xhr.status === 401) {
              // signed out
            }
            if(xhr.status === 0) {
              // server unreachable (maybe down)
            }
          });
        };
        window.addEventListener('focus', function(ev){
          currentInterval = POLLING_INTERVAL;
          timer = setTimeout(fetch, currentInterval);
        }, false);
        window.addEventListener('blur', function(ev){
          clearTimeout(timer);
        }, false);
        fetch();
      },

      computed: {
        alertsCount: {
          get: function(){ return this.alerts.length; }
        },
        hasAlerts: {
          get: function(){ return this.alertsCount > 0; }
        }
      },

      methods: {
        fetchAlertsData: function() {
          return new Promise(function(resolve, reject) {
            $.getJSON(POLLING_URL, resolve).fail(reject);
          });
        }
      }
    });
  });
})();

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
fluentd-ui-0.4.5 app/assets/javascripts/vue/notification.js
fluentd-ui-0.4.4 app/assets/javascripts/vue/notification.js
fluentd-ui-0.4.3 app/assets/javascripts/vue/notification.js
fluentd-ui-0.4.2 app/assets/javascripts/vue/notification.js
fluentd-ui-0.4.1 app/assets/javascripts/vue/notification.js
fluentd-ui-0.4.0 app/assets/javascripts/vue/notification.js
fluentd-ui-0.3.21 app/assets/javascripts/vue/notification.js
fluentd-ui-0.3.20 app/assets/javascripts/vue/notification.js
fluentd-ui-0.3.19 app/assets/javascripts/vue/notification.js
fluentd-ui-0.3.18 app/assets/javascripts/vue/notification.js
fluentd-ui-0.3.17 app/assets/javascripts/vue/notification.js
fluentd-ui-0.3.16 app/assets/javascripts/vue/notification.js
fluentd-ui-0.3.15 app/assets/javascripts/vue/notification.js
fluentd-ui-0.3.14 app/assets/javascripts/vue/notification.js
fluentd-ui-0.3.13 app/assets/javascripts/vue/notification.js
fluentd-ui-0.3.12 app/assets/javascripts/vue/notification.js
fluentd-ui-0.3.11 app/assets/javascripts/vue/notification.js
fluentd-ui-0.3.10 app/assets/javascripts/vue/notification.js
fluentd-ui-0.3.9 app/assets/javascripts/vue/notification.js