]> arthur.barton.de Git - netdata.git/blobdiff - web/index.html
Merge pull request #912 from sehraf/master
[netdata.git] / web / index.html
index d7863dc7be3da63b99b8b25e3f0c5428f5abf866..3ea587b52976f0ec3cbd837fe9215ac431d86cb9 100644 (file)
         margin-top: 10px;
     }
 
-    .container {
-        width: 90% !important;
-    }
-
     #masthead h1 {
         /*font-size: 30px;*/
         line-height: 1;
         margin-top: 0;
     }
 
+    .container {
+        width: calc(100% - 20px) !important;
+    }
+
+    .charts-body {
+        display: inline-block;
+        width: 100%;
+    }
+
+    .sidebar-body {
+        position: absolute;
+        display: none;
+    }
+
     @media (min-width: 768px) {
+        .charts-body {
+            padding-left: 0%;
+            padding-right: 0%;
+        }
+
         .back-to-top,
         .dashboard-theme-toggle {
             display: block;
         }
+    }
 
-        /* Widen the fixed sidebar */
-        .dashboard-sidebar.affix,
-        .dashboard-sidebar.affix-top,
-        .dashboard-sidebar.affix-bottom {
-            width: 200px !important;
-        }
-
-        .dashboard-sidebar.affix {
-            position: fixed; /* Undo the static from mobile first approach */
-            top: 20px;
+    /* Show and affix the side nav when space allows it */
+    @media (min-width: 992px) {
+        .container {
+            padding-left: 0% !important;
         }
 
-        .dashboard-sidebar.affix-bottom {
-            position: absolute; /* Undo the static from mobile first approach */
+        .charts-body {
+            width: calc(100% - 213px) !important;
+            padding-left: 1% !important;
+            padding-right: 0% !important;
         }
 
-        .dashboard-sidebar.affix-bottom .dashboard-sidenav,
-        .dashboard-sidebar.affix .dashboard-sidenav {
-            margin-top: 0;
-            margin-bottom: 0;
+        .sidebar-body {
+            display: inline-block !important;
+            width: 213px !important;
         }
-    }
 
-    /* Show and affix the side nav when space allows it */
-    @media (min-width: 992px) {
         .dashboard-sidebar .nav > .active > ul {
             display: block;
         }
         .dashboard-sidebar.affix,
         .dashboard-sidebar.affix-top,
         .dashboard-sidebar.affix-bottom {
-            width: 200px !important;
+            width: 213px !important;
         }
         .dashboard-sidebar.affix {
             position: fixed; /* Undo the static from mobile first approach */
     }
 
     @media (min-width: 1200px) {
+        .container {
+            padding-left: 2% !important;
+        }
+
+        .charts-body {
+            width: calc(100% - 233px) !important;
+            padding-left: 1% !important;
+            padding-right: 1% !important;
+        }
+
+        .sidebar-body {
+            display: inline-block !important;
+            width: 233px !important;
+        }
+
         /* Widen the fixed sidebar again */
-        .dashboard-sidebar.affix-bottom,
+        .dashboard-sidebar.affix,
         .dashboard-sidebar.affix-top,
-        .dashboard-sidebar.affix {
-            width: 263px;
+        .dashboard-sidebar.affix-bottom {
+            width: 233px !important;
         }
     }
+    
+    @media (min-width: 1360px) {
+        .container {
+            padding-left: 3% !important;
+        }
+
+        .charts-body {
+            width: calc(100% - 263px) !important;
+            padding-left: 1% !important;
+            padding-right: 2% !important;
+        }
+
+        .sidebar-body {
+            display: inline-block !important;
+            width: 263px !important;
+        }
+
+        /* Widen the fixed sidebar again */
+        .dashboard-sidebar.affix,
+        .dashboard-sidebar.affix-top,
+        .dashboard-sidebar.affix-bottom {
+            width: 263px !important;
+        }
+    }
+
     </style>
 
     <!-- check which theme to use -->
     <script type="text/javascript">
+        // enable alarms checking and notifications
+        var netdataShowAlarms = true;
+
+        // enable registry updates
+        var netdataRegistry = true;
+        
         // --------------------------------------------------------------------
         // urlOptions
 
     </script>
 
     <!-- load the dashboard manager - it will do the rest -->
-    <script type="text/javascript" src="dashboard.js?v43"></script>
+    <script type="text/javascript" src="dashboard.js?v46"></script>
 </head>
 <body data-spy="scroll" data-target="#sidebar">
     <div id="loadOverlay" class="loadOverlay" style="background-color: #888; color: #888;">
             </div>
             <nav class="collapse navbar-collapse navbar-right" role="navigation">
                 <ul class="nav navbar-nav">
-                    <li class="hidden-sm"><a href="#" class="btn" data-toggle="modal" data-target="#alarmsModal" title="alarms"><i class="fa fa-bell"></i><span id="alarms_count_badge" class="badge"></span></a></li>
-                    <li class="hidden-sm"><a href="#" class="btn" data-toggle="modal" data-target="#optionsModal" title="dashboard settings"><i class="fa fa-sliders"></i></a></li>
-                    <li class="hidden-sm"><a href="https://github.com/firehol/netdata/wiki" class="btn" target="_blank" title="netdata community"><i class="fa fa-github"></i></a></li>
-                    <li class="hidden-sm" id="updateButton"><a href="#" class="btn" data-toggle="modal" data-target="#updateModal" title="check for update"><i class="fa fa-cloud-download"></i><span id="update_badge" class="badge"></span></a></li>
-                    <li class="hidden-sm"><a href="#" class="btn" data-toggle="modal" data-target="#helpModal" title="dashboard help"><i class="fa fa-question-circle"></i></a></li>
+                    <li><a href="#" class="btn" data-toggle="modal" data-target="#alarmsModal" title="alarms"><i class="fa fa-bell"></i></span>&nbsp;<span class="hidden-sm">Alarms&nbsp;</span><span id="alarms_count_badge" class="badge"></a></li>
+                    <li><a href="#" class="btn" data-toggle="modal" data-target="#optionsModal" title="dashboard settings"><i class="fa fa-sliders"></i>&nbsp;<span class="hidden-sm">Settings</span></a></li>
+                    <li><a href="https://github.com/firehol/netdata/wiki" class="btn" target="_blank" title="netdata community"><i class="fa fa-github"></i>&nbsp;<span class="hidden-sm hidden-md">Community</span></a></li>
+                    <li class="hidden-sm" id="updateButton"><a href="#" class="btn" data-toggle="modal" data-target="#updateModal" title="check for update"><i class="fa fa-cloud-download"></i><span id="update_badge" class="badge"></span>&nbsp;<span class="hidden-sm hidden-md">Update</span></a></li>
+                    <li class="hidden-sm"><a href="#" class="btn" data-toggle="modal" data-target="#helpModal" title="dashboard help"><i class="fa fa-question-circle"></i>&nbsp;<span class="hidden-sm hidden-md">Help</span></a></li>
+                    <!--
                     <li class="dropdown hidden-md hidden-lg hidden-xs">
                         <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="current_view">Menu <strong class="caret"></strong></a>
                         <ul class="dropdown-menu scrollable-menu inpagemenu" role="menu">
                             <li><a href="#" class="btn" data-toggle="modal" data-target="#helpModal"><i class="fa fa-question-circle"></i> help</a></li>
                         </ul>
                     </li>
+                    -->
                     <li class="dropdown hidden-sm hidden-md hidden-lg">
                         <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="current_view">my-netdata <strong class="caret"></strong></a>
                         <ul id="mynetdata_servers2" class="dropdown-menu scrollable-menu inpagemenu" role="menu">
 
     <div class="container">
         <div class="row">
-            <div class="col-md-10" role="main">
+            <div class="charts-body" role="main">
                 <div id="charts_div"></div>
             </div>
-            <div class="col-md-2" role="complementary">
+            <div class="sidebar-body hidden-xs hidden-sm" role="complementary">
                 <nav class="dashboard-sidebar hidden-print hidden-xs hidden-sm" id="sidebar" role="menu"></nav>
             </div>
         </div>
@@ -1579,6 +1635,12 @@ var menuData = {
         info: undefined
     },
 
+    'retroshare': {
+        title: 'RetroShare',
+        icon: '<i class="fa fa-share-alt" aria-hidden="true"></i>',
+        info: undefined
+    },
+
     'ipfs': {
         title: 'IPFS',
         icon: '<i class="fa fa-folder-open" aria-hidden="true"></i>',
@@ -1718,11 +1780,11 @@ var chartData = {
     },
 
     'system.processes': {
-        info: 'System processes, read from <code>/proc/stat</code>. <b>Blocked</b> are processes that are willing to execute but they cannot, e.g. because they wait for disk activity.'
+        info: 'System processes, read from <code>/proc/stat</code>. <b>Running</b> are the processes in the CPU. <b>Blocked</b> are processes that are willing to enter the CPU, but they cannot, e.g. because they wait for disk activity.'
     },
 
     'system.active_processes': {
-        info: 'All system active processes, read from <code>/proc/loadavg</code>.'
+        info: 'All system processes, read from <code>/proc/loadavg</code>.'
     },
 
     'system.ctxt': {
@@ -2051,6 +2113,39 @@ var chartData = {
 
     'netdata.response_time': {
         info: 'The netdata API response time measures the time netdata needed to serve requests. This time includes everything, from the reception of the first byte of a request, to the dispatch of the last byte of its reply, therefore it includes all network latencies involved (i.e. a client over a slow network will influence these metrics).'
+    },
+
+    // ------------------------------------------------------------------------
+    // RETROSHARE
+    'retroshare.bandwidth': {
+        info: 'Shows inbound and outbound traffic.',
+        mainheads: [
+            gaugeChart('Received', '12%', 'bandwidth_down_kb'),
+            gaugeChart('Sent', '12%', 'bandwidth_up_kb')
+        ]
+    },
+
+    'retroshare.peers': {
+        info: 'Shows the number of (connected) friends.',
+        mainheads: [
+            function(id) {
+                return  '<div data-netdata="' + id + '"'
+                    + ' data-dimensions="peers_connected"'
+                    + ' data-append-options="friends"'
+                    + ' data-chart-library="easypiechart"'
+                    + ' data-title="connected friends"'
+                    + ' data-units=""'
+                    + ' data-width="8%"'
+                    + ' data-before="0"'
+                    + ' data-after="-CHART_DURATION"'
+                    + ' data-points="CHART_DURATION"'
+                    + ' role="application"></div>';
+            }
+        ]
+    },
+
+    'retroshare.dht': {
+        info: 'Shows statistics about RetroShare\'s DHT. These values are estimated!'
     }
 };
 
@@ -2062,24 +2157,13 @@ function anyAttribute(obj, attr, key, def) {
     return def;
 }
 
-function anyAttributeTitle(obj, attr, key, def) {
-    if(typeof obj[key] !== 'undefined') {
-        if(typeof obj[key][attr] !== 'undefined')
-            return obj[key][attr];
-    }
-
-    var r = def.replace(/_/g, ' ');
-
-    return r;
-}
-
 function menuTitle(chart) {
     if(typeof chart.menu_pattern !== 'undefined') {
-        return anyAttributeTitle(menuData, 'title', chart.menu_pattern, chart.menu_pattern).toString()
-                + ' ' + chart.type.slice(-(chart.type.length - chart.menu_pattern.length - 1)).toString();
+        return (anyAttribute(menuData, 'title', chart.menu_pattern, chart.menu_pattern).toString()
+                + '&nbsp;' + chart.type.slice(-(chart.type.length - chart.menu_pattern.length - 1)).toString()).replace(/_/g, ' ');
     }
 
-    return anyAttributeTitle(menuData, 'title', chart.menu, chart.menu);
+    return (anyAttribute(menuData, 'title', chart.menu, chart.menu)).toString().replace(/_/g, ' ');
 }
 
 function menuIcon(chart) {
@@ -2099,10 +2183,10 @@ function menuHeight(menu, relative) {
 
 function submenuTitle(menu, submenu) {
     var key = menu + '.' + submenu;
-    var title = anyAttributeTitle(submenuData, 'title', key, submenu);
-    if(title.length > 30) {
+    var title = anyAttribute(submenuData, 'title', key, submenu).toString().replace(/_/g, ' ');;
+    if(title.length > 28) {
         var a = title.substring(0, 13);
-        var b = title.substring(title.length - 13, title.length);
+        var b = title.substring(title.length - 12, title.length);
         return a + '...' + b;
     }
     return title;
@@ -2166,6 +2250,7 @@ function enrichChartData(chart) {
         case 'phpfpm':
         case 'postfix':
         case 'redis':
+        case 'retroshare':
         case 'ipfs':
         case 'smawebbox':
         case 'squid':
@@ -2729,7 +2814,7 @@ function alarmsUpdateModal() {
             $('#alarm_all_' + id.toString()).html('');
         });
 
-        NETDATA.alarms.get_log(function(data) {
+        NETDATA.alarms.get_log(0, function(data) {
             if(data === null) {
                 document.getElementById('alarms_log').innerHTML =
                         'failed to load alarm data!';
@@ -2741,7 +2826,12 @@ function alarmsUpdateModal() {
             if(len > 50) len = 50;
             while(i < len) {
                 var time = new Date(data[i].when * 1000);
-                log += '<tr><td>' + time.toLocaleDateString() + ' ' + time.toLocaleTimeString() + '</td><td>' + data[i].chart + '</td><td>' + data[i].name + '</td><td>' + data[i].status + '</td></tr>';
+                log += '<tr><td>'
+                        + time.toLocaleDateString() + ' '
+                        + time.toLocaleTimeString() + '</td><td>'
+                        + data[i].chart.toString() + '</td><td>'
+                        + data[i].name.toString() + ' = ' + ((data[i].value !== null)?Math.floor(data[i].value):'NaN').toString() + ' ' + data[i].units.toString() + '</td><td>'
+                        + data[i].status.toString() + '</td></tr>';
                 i++;
             }
             log += "</table>";