]> arthur.barton.de Git - netdata.git/blobdiff - web/dashboard.js
Merge remote-tracking branch 'lucadev/master'
[netdata.git] / web / dashboard.js
index 67fb00b8bb6f56a6c5f2311c61abcc254e68d9a3..1dc57a1ac58a66dbe7efd63bd52a56011a4f429d 100644 (file)
     // Registry of netdata hosts
 
     NETDATA.alarms = {
+        server: null,
         current: null,
         callback: null,
 
         get: function(what, callback) {
             $.ajax({
-                url: NETDATA.serverDefault + '/api/v1/alarms?' + what.toString(),
+                url: NETDATA.alarms.server + '/api/v1/alarms?' + what.toString(),
                 async: true,
                 cache: false,
                 xhrFields: { withCredentials: true } // required for the cookie
                         callback(data);
                 })
                 .fail(function() {
-                    NETDATA.error(415, host);
+                    NETDATA.error(415, NETDATA.alarms.server);
 
                     if(typeof callback === 'function')
                         callback(null);
         update_forever: function() {
             NETDATA.alarms.get('active', function(data) {
                 if(data !== null) {
+                    if('Notification' in window && NETDATA.alarms.current != null) {
+                        if(Object.keys(NETDATA.alarms.current.alarms).length < Object.keys(data.alarms).length) {
+                            if (Notification.permission === 'granted') {
+                                new Notification('Netdata Alarm!', {body: 'Your Server needs attention!',
+                                    icon: 'images/seo-performance-128.png'});
+                            }
+                        }
+                    }
+
                     NETDATA.alarms.current = data;
 
                     if (typeof NETDATA.alarms.callback === 'function') {
 
         get_log: function(callback) {
             $.ajax({
-                url: NETDATA.serverDefault + '/api/v1/alarm_log',
+                url: NETDATA.alarms.server + '/api/v1/alarm_log',
                 async: true,
                 cache: false,
                 xhrFields: { withCredentials: true } // required for the cookie
                         callback(data);
                 })
                 .fail(function() {
-                    NETDATA.error(416, host);
+                    NETDATA.error(416, NETDATA.alarms.server);
 
                     if(typeof callback === 'function')
                         callback(null);
         },
 
         init: function() {
+            var host = NETDATA.serverDefault;
+            while(host.slice(-1) === '/')
+                host = host.substring(0, host.length - 1);
+            NETDATA.alarms.server = host;
+            
             NETDATA.alarms.update_forever();
+            if ('Notification' in window && Notification.permission === 'default') {
+                Notification.requestPermission();
+            }
         }
     };