summaryrefslogtreecommitdiffstats
path: root/web/index.html
diff options
context:
space:
mode:
authorCosta Tsaousis <costa@tsaousis.gr>2018-10-15 23:16:42 +0300
committerGitHub <noreply@github.com>2018-10-15 23:16:42 +0300
commit8fbf817ef83b3524b15f908251909d9d6feb5532 (patch)
tree4c2d417b7392c907bbdbe355b8db361bd3741a02 /web/index.html
parent1ad4f1bcfc691120102b57dbd426de0870abd76f (diff)
modularized all source code (#4391)
* modularized all external plugins * added README.md in plugins * fixed title * fixed typo * relative link to external plugins * external plugins configuration README * added plugins link * remove plugins link * plugin names are links * added links to external plugins * removed unecessary spacing * list to table * added language * fixed typo * list to table on internal plugins * added more documentation to internal plugins * moved python, node, and bash code and configs into the external plugins * added statsd README * fix bug with corrupting config.h every 2nd compilation * moved all config files together with their code * more documentation * diskspace info * fixed broken links in apps.plugin * added backends docs * updated plugins readme * move nc-backend.sh to backends * created daemon directory * moved all code outside src/ * fixed readme identation * renamed plugins.d.plugin to plugins.d * updated readme * removed linux- from linux plugins * updated readme * updated readme * updated readme * updated readme * updated readme * updated readme * fixed README.md links * fixed netdata tree links * updated codacy, codeclimate and lgtm excluded paths * update CMakeLists.txt * updated automake options at top directory * libnetdata slit into directories * updated READMEs * updated READMEs * updated ARL docs * updated ARL docs * moved /plugins to /collectors * moved all external plugins outside plugins.d * updated codacy, codeclimate, lgtm * updated README * updated url * updated readme * updated readme * updated readme * updated readme * moved api and web into webserver * web/api web/gui web/server * modularized webserver * removed web/gui/version.txt
Diffstat (limited to 'web/index.html')
-rw-r--r--web/index.html5791
1 files changed, 0 insertions, 5791 deletions
diff --git a/web/index.html b/web/index.html
deleted file mode 100644
index 6a498760d4..0000000000
--- a/web/index.html
+++ /dev/null
@@ -1,5791 +0,0 @@
-<!DOCTYPE html>
-<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
-<html lang="en">
-<head>
- <title>netdata dashboard</title>
- <meta name="application-name" content="netdata">
-
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta charset="utf-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <meta name="apple-mobile-web-app-capable" content="yes">
- <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
- <meta name="author" content="costa@tsaousis.gr">
-
- <!-- <link rel="shortcut icon" href="images/seo-performance-multi-size.ico"> -->
-
- <!-- <link rel="apple-touch-icon" href="images/seo-performance-72.png"> -->
- <!-- <link rel="apple-touch-icon" sizes="72x72" href="images/seo-performance-72.png"> -->
- <!-- <link rel="apple-touch-icon" sizes="114x114" href="images/seo-performance-114.png"> -->
-
- <!-- <link rel="icon" type="image/png" sizes="512x512" href="images/seo-performance-512.png"> -->
- <!-- <link rel="icon" type="image/png" sizes="256x256" href="images/seo-performance-256.png"> -->
- <!-- <link rel="icon" type="image/png" sizes="128x128" href="images/seo-performance-128.png"> -->
- <!-- <link rel="icon" type="image/png" sizes="64x64" href="images/seo-performance-64.png"> -->
- <!-- <link rel="icon" type="image/png" sizes="48x48" href="images/seo-performance-48.png"> -->
- <!-- <link rel="icon" type="image/png" sizes="24x24" href="images/seo-performance-24.png"> -->
- <!-- <link rel="icon" type="image/png" sizes="16x16" href="images/seo-performance-16.png"> -->
- <!-- <link rel="icon" type="image/png" sizes="32x32" href="images/seo-performance-32.png"> -->
-
- <link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACNklEQVRYhcXXv2tUQRAH8M+FEIJISBHCIWIhIQSUILERi4AiiqCggiIiomAjlhaC4j+ghYWISgqNohZaCBZBC8Ei8QdEUCutFBsxCBqDYkgci/cunkfuJffjJQPD8mZm5/vd2WV2HzlJ0Bs8CvrywsgCHwy+BpGOg0sJfjj4nYKX9FdwKG9gwZlgtgK8pLOpPxfw1mCoCnClDgWtzQTvCEYWCV7SkWAlFBoEb8dlDKBF8t2bMWUSH/AHr3CiEfz5CPUusPJLkRCdk5ZqyeqUrQv4R7E5TwK7M3zTeIKduRAIitiWEfIY69GdCwGcRFuG/xqONRkzkaA7+J5x+MaDtWmHvJ4HgeEM8Nn0bridfv9HoOFyBAdwJCPkqqTzHWwUaz7wgeBHxupfBKuCj2W25mxBsCGYyAB/FxTT27HcPlyep64tCLbjKbqqhLzBlgKfF8pVE4FgRXABI+ioEnYfOyzcFWsCbg+OV+xlpU4ER4O+4HVwL51b3xYEXcGu4Ao+YQhr5gmdxHmsQyfG0b/YxbWmLfRWmnxa0s06VbTMCpnBS9zFzQKTwR5cXCzwHIE02Sl8wSZsRI/kgLVJqjSd+t9LVjiG1diPszhdK3A5gR48k5zYMTwscC59sfT799CYKvA8EttbSeXgTr3gJQKl91kR+yTlvyG5uUbLYh9gb+ovltkb6qYtNSRo3kOygsBSzGlKsubf43USWLYK5CLLXoFWyU/CtzLbVDpW2n+m40yN9ukqdvAX9ac/EIgOapcAAAAASUVORK5CYII=">
-
- <link rel="mask-icon" href="images/netdata.svg" color="red" />
-
- <meta property="og:locale" content="en_US" />
- <meta property="og:url" content="https://my-netdata.io" />
- <meta property="og:type" content="website" />
- <meta property="og:site_name" content="netdata"/>
- <meta property="og:title" content="Get control of your Linux Servers. Simple. Effective. Awesome." />
- <meta property="og:description" content="Unparalleled insights, in real-time, of everything happening on your Linux systems and applications, with stunning, interactive web dashboards and powerful performance and health alarms." />
- <meta property="og:image" content="https://cloud.githubusercontent.com/assets/2662304/22945737/e98cd0c6-f2fd-11e6-96f1-5501934b0955.png" />
- <meta property="og:image:type" content="image/png" />
- <meta property="fb:app_id" content="1200089276712916" />
-
- <meta name="twitter:card" content="summary" />
- <meta name="twitter:site" content="@linuxnetdata" />
- <meta name="twitter:title" content="Get control of your Linux Servers. Simple. Effective. Awesome." />
- <meta name="twitter:description" content="Unparalleled insights, in real-time, of everything happening on your Linux systems and applications, with stunning, interactive web dashboards and powerful performance and health alarms." />
- <meta name="twitter:image" content="https://cloud.githubusercontent.com/assets/2662304/14092712/93b039ea-f551-11e5-822c-beadbf2b2a2e.gif" />
-
- <style>
-
- /* force the vertical window scrollbar */
- html {
- overflow-y: scroll;
- }
-
- /* prevent body from hiding under the navbar */
- body {
- padding-top: 50px;
- }
-
- .loadOverlay {
- position: absolute;
- top: 0px;
- left: 0px;
- width: 100%;
- height:100%;
- z-index: 2000;
- font-size: 10vh;
- font-family: sans-serif;
- padding: 40vh 0 40vh 0;
- font-weight: bold;
- text-align: center;
- }
-
- .navbar-highlight {
- display: none;
- position: fixed;
- margin-top: 5px;
- height: 26px;
- width: 100%;
- text-align: center;
- overflow: hidden;
- z-index: 30;
- pointer-events: none !important;
- }
-
- .navbar-highlight-content {
- position: relative;
- display: inline-block;
- margin: 0 auto;
- height: 26px;
- min-width: 500px;
- background-color:rgba(0, 0, 0, 0.7);
- padding-top: 2px;
- padding-bottom: 2px;
- padding-left: 15px;
- padding-right: 15px;
- border-radius:10px;
- color: lightgrey;
- pointer-events: auto !important;
- }
-
- .navbar-highlight-bar {
- cursor: pointer;
- }
- .navbar-highlight-button-right {
- cursor: pointer;
- padding-left: 10px;
- }
-
- .modal-wide .modal-dialog {
- width: 80%;
- }
-
- /* fix # anchors scrolling under the navbar
- https://github.com/twbs/bootstrap/issues/1768#issuecomment-46519033
- */
- h1 {
- position: relative;
- z-index: -1;
- }
- h2 {
- position: relative;
- z-index: -2;
- }
- h1:before, h2:before {
- display: block;
- content: " ";
- margin-top: -70px;
- height: 70px;
- visibility: hidden;
- }
-
- .p {
- display: block;
- margin-top: 15px;
- }
-
- .option-row,
- .option-control {
- vertical-align: top;
- padding: 10px;
- padding-top: 30px;
- padding-left: 30px;
- }
-
- .option-info {
- padding: 10px;
- }
-
- .dashboard-submenu-info {
- display: block;
- margin-top: 10px;
- }
-
- .dashboard-context-info {
- display: block;
- margin-top: 10px;
- }
-
- #masthead h1 {
- /*font-size: 30px;*/
- line-height: 1;
- padding-top: 30px;
- }
-
- #masthead .well {
- margin-top:4%;
- }
-
- /* fix the navbar shifting when a modal is open */
- /* https://github.com/twbs/bootstrap/issues/14040#issuecomment-159891033 */
- body.modal-open{
- width: 100% !important;
- padding-right: 0 !important;
-/* overflow-y: scroll !important; */
-/* position: fixed !important;*/
- overflow: visible;
- }
-
- /* make accordion use the whole header bar for expand/collapse */
- .panel-title a {
- display: block;
- padding: 10px 15px;
- margin: -10px -15px;
- }
-
- /*
- * Side navigation
- *
- * Scrollspy and affixed enhanced navigation to highlight sections and secondary
- * sections of docs content.
- */
-
- .affix {
- position: static;
- top: 70px !important;
- /*width: 220px;*/
- }
-
- .affix-top {
- /*width: 220px;*/
- }
-
- .dashboard-sidebar {
- max-height: calc(100% - 70px) !important;
- overflow-y: auto;
- /*width: 220px !important;*/
- }
-
- /* By default it's not affixed in mobile views, so undo that */
- .dashboard-sidebar.affix {
- position: static;
- }
-
- @media (min-width: 768px) {
- .dashboard-sidebar {
- padding-left: 20px;
- }
- }
-
- /* First level of nav */
- .dashboard-sidenav {
- margin-top: 20px;
- margin-bottom: 20px;
- }
-
- /* All levels of nav */
- .dashboard-sidebar .nav > li > a {
- display: block;
- padding: 4px 20px;
- font-size: 13px;
- font-weight: 500;
- color: #767676;
- }
- .dashboard-sidebar .nav > li > a > .svg-inline--fa {
- width: 20px;
- text-align: center;
- }
- .dashboard-sidebar .nav > li > a:hover,
- .dashboard-sidebar .nav > li > a:focus {
- padding-left: 19px;
- color: #563d7c;
- text-decoration: none;
- background-color: transparent;
- border-left: 1px solid #563d7c;
- }
- .dashboard-sidebar .nav > .active > a,
- .dashboard-sidebar .nav > .active:hover > a,
- .dashboard-sidebar .nav > .active:focus > a {
- padding-left: 18px;
- font-weight: bold;
- color: #563d7c;
- background-color: transparent;
- border-left: 2px solid #563d7c;
- }
-
- /* Nav: second level (shown on .active) */
- .dashboard-sidebar .nav .nav {
- display: none; /* Hide by default, but at >768px, show it */
- padding-bottom: 10px;
- }
- .dashboard-sidebar .nav .nav > li > a {
- padding-top: 1px;
- padding-bottom: 1px;
- padding-left: 30px;
- font-size: 12px;
- font-weight: normal;
- }
- .dashboard-sidebar .nav .nav > li > a:hover,
- .dashboard-sidebar .nav .nav > li > a:focus {
- padding-left: 29px;
- }
- .dashboard-sidebar .nav .nav > .active > a,
- .dashboard-sidebar .nav .nav > .active:hover > a,
- .dashboard-sidebar .nav .nav > .active:focus > a {
- padding-left: 28px;
- font-weight: 500;
- }
-
- .dropdown-menu {
- min-width: 200px;
- }
- .dropdown-menu.columns-2 {
- margin: 0;
- padding: 0;
- width: 400px;
- }
- .dropdown-menu li a {
- padding: 5px 15px;
- font-weight: 300;
- }
- .dropdown-menu.multi-column {
- overflow-x: hidden;
- }
- .multi-column-dropdown {
- list-style: none;
- padding: 0;
- }
- .multi-column-dropdown li a {
- display: block;
- clear: both;
- line-height: 1.428571429;
- white-space: normal;
- }
- .multi-column-dropdown li a:hover {
- text-decoration: none;
- color: #f5f5f5;
- background-color: #262626;
- }
- .scrollable-menu {
- height: auto;
- max-height: 80vh;
- overflow-x: hidden;
- }
- .scrollable-menu-50 {
- height: auto;
- max-height: 50vh;
- overflow-x: hidden;
- }
-
- /* Back to top (hidden on mobile) */
- .back-to-top,
- .dashboard-theme-toggle {
- display: none;
- padding: 4px 10px;
- margin-top: 10px;
- margin-left: 10px;
- font-size: 12px;
- font-weight: 500;
- color: #999;
- }
- .back-to-top:hover,
- .dashboard-theme-toggle:hover {
- color: #563d7c;
- text-decoration: none;
- }
- .dashboard-theme-toggle {
- margin-top: 0;
- }
-
- .container {
- width: calc(100% - 20px) !important;
- }
-
- .charts-body {
- display: inline-block;
- width: 100%;
- }
-
- .sidebar-body {
- position: absolute;
- display: none;
- }
-
- .dashboard-section-container {
- display: block;
- width: 100%;
- page-break-before: auto;
- page-break-after: auto;
- page-break-inside: auto;
- }
-
- .dashboard-print-row {
- display: block;
- width: 100%;
- page-break-before: auto;
- page-break-after: auto;
- page-break-inside: avoid;
- }
-
- .netdata-chartblock-container {
- display: inline-block;
- }
-
- /* https://github.com/seiyria/bootstrap-slider/issues/746 */
- .tooltip {
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- }
-
- @media print {
- body {
- overflow: visible !important;
- -webkit-print-color-adjust: exact;
- page-break-inside: auto;
- page-break-before: auto;
- page-break-after: auto;
- }
-
- .dashboard-section {
- page-break-inside: auto;
- page-break-before: auto;
- page-break-after: auto;
- }
-
- .dashboard-subsection {
- page-break-before: avoid;
- page-break-after: auto;
- page-break-inside: auto;
- }
-
- .charts-body {
- padding-left: 0%;
- padding-right: 0%;
- display: block;
- page-break-inside: auto;
- page-break-before: auto;
- page-break-after: auto;
- }
-
- .back-to-top,
- .dashboard-theme-toggle {
- display: block;
- }
- }
-
- @media (min-width: 768px) {
- .charts-body {
- padding-left: 0%;
- padding-right: 0%;
- }
-
- .back-to-top,
- .dashboard-theme-toggle {
- display: block;
- }
- }
-
- /* Show and affix the side nav when space allows it */
- @media (min-width: 992px) {
- .container {
- padding-left: 0% !important;
- }
-
- .charts-body {
- width: calc(100% - 213px) !important;
- padding-left: 1% !important;
- padding-right: 0% !important;
- }
-
- .sidebar-body {
- display: inline-block !important;
- width: 213px !important;
- }
-
- .dashboard-sidebar .nav > .active > ul {
- display: block;
- }
-
- /* Widen the fixed sidebar */
- .dashboard-sidebar.affix,
- .dashboard-sidebar.affix-top,
- .dashboard-sidebar.affix-bottom {
- width: 213px !important;
- }
- .dashboard-sidebar.affix {
- position: fixed; /* Undo the static from mobile first approach */
- top: 20px;
- }
- .dashboard-sidebar.affix-bottom {
- position: absolute; /* Undo the static from mobile first approach */
- }
- .dashboard-sidebar.affix-bottom .dashboard-sidenav,
- .dashboard-sidebar.affix .dashboard-sidenav {
- margin-top: 0;
- margin-bottom: 0;
- }
- }
-
- @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,
- .dashboard-sidebar.affix-top,
- .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;
- }
- }
-
- .action-button {
- position: relative;
- display: inline-block;
- color: gray;
- cursor: pointer;
- margin: 0 auto;
- width: 30px;
- height: 30px;
- font-size: 25px;
- }
-
- .ripple {
- position: relative;
- /*overflow: hidden;*/
- transform: translate3d(0, 0, 0)
- }
-
- .ripple:after {
- content: "";
- display: block;
- position: absolute;
- width: 100%;
- height: 100%;
- top: 0;
- left: 0;
- pointer-events: none;
- background-image: radial-gradient(circle, #000 10%, transparent 10.01%);
- background-repeat: no-repeat;
- background-position: 50%;
- transform: scale(18, 18); /* the size of the ripple */
- opacity: 0;
- transition: transform .5s, opacity 1s
- }
-
- .ripple:active:after {
- transform: scale(0, 0);
- opacity: .2;
- transition: 0s
- }
- </style>
-
- <!-- check which theme to use -->
- <script type="text/javascript">
- // netdata snapshot data
- var netdataSnapshotData = null;
-
- // enable alarms checking and notifications
- var netdataShowAlarms = true;
-
- // enable registry updates
- var netdataRegistry = true;
-
- // forward definition only - not used here
- var netdataServer = undefined;
- var netdataServerStatic = undefined;
- var netdataCheckXSS = undefined;
-
- // control the welcome modal and analytics
- var this_is_demo = null;
-
- function escapeUserInputHTML(s) {
- return s.toString()
- .replace(/&/g, '&amp;')
- .replace(/</g, '&lt;')
- .replace(/>/g, '&gt;')
- .replace(/"/g, '&quot;')
- .replace(/#/g, '&#35;')
- .replace(/'/g, '&#39;')
- .replace(/\(/g,'&#40;')
- .replace(/\)/g,'&#41;')
- .replace(/\//g,'&#47;');
- }
-
- function verifyURL(s) {
- if(typeof(s) === 'string' && (s.startsWith('http://') || s.startsWith('https://')))
- return s
- .replace(/'/g, '%22')
- .replace(/"/g, '%27')
- .replace(/\)/g, '%28')
- .replace(/\(/g, '%29');
-
- console.log('invalid URL detected:');
- console.log(s);
- return 'javascript:alert("invalid url");';
- }
-
- // --------------------------------------------------------------------
- // urlOptions
-
- var urlOptions = {
- hash: '#',
- theme: null,
- help: null,
- mode: 'live', // 'live', 'print'
- update_always: false,
- pan_and_zoom: false,
- server: null,
- after: 0,
- before: 0,
- highlight: false,
- highlight_after: 0,
- highlight_before: 0,
- nowelcome: false,
- show_alarms: false,
- chart: null,
- family: null,
- alarm: null,
- alarm_unique_id: 0,
- alarm_id: 0,
- alarm_event_id: 0,
-
- hasProperty: function(property) {
- // console.log('checking property ' + property + ' of type ' + typeof(this[property]));
- return typeof this[property] !== 'undefined';
- },
-
- genHash: function(forReload) {
- var hash = urlOptions.hash;
-
- if(urlOptions.pan_and_zoom === true) {
- hash += ';after=' + urlOptions.after.toString() +
- ';before=' + urlOptions.before.toString();
- }
-
- if(urlOptions.highlight === true) {
- hash += ';highlight_after=' + urlOptions.highlight_after.toString() +
- ';highlight_before=' + urlOptions.highlight_before.toString();
- }
-
- if(urlOptions.theme !== null)
- hash += ';theme=' + urlOptions.theme.toString();
-
- if(urlOptions.help !== null)
- hash += ';help=' + urlOptions.help.toString();
-
- if(urlOptions.update_always === true)
- hash += ';update_always=true';
-
- if(forReload === true && urlOptions.server !== null)
- hash += ';server=' + urlOptions.server.toString();
-
- if(urlOptions.mode !== 'live')
- hash += ';mode=' + urlOptions.mode;
-
- return hash;
- },
-
- parseHash: function() {
- var variables = document.location.hash.split(';');
- var len = variables.length;
- while(len--) {
- if(len !== 0) {
- var p = variables[len].split('=');
- if(urlOptions.hasProperty(p[0]) && typeof p[1] !== 'undefined')
- urlOptions[p[0]] = decodeURIComponent(p[1]);
- }
- else {
- if(variables[len].length > 0)
- urlOptions.hash = variables[len];
- }
- }
-
- var booleans = [ 'nowelcome', 'show_alarms', 'update_always' ];
- len = booleans.length;
- while(len--) {
- if(urlOptions[booleans[len]] === 'true' || urlOptions[booleans[len]] === true || urlOptions[booleans[len]] === '1' || urlOptions[booleans[len]] === 1)
- urlOptions[booleans[len]] = true;
- else
- urlOptions[booleans[len]] = false;
- }
-
- var numeric = [ 'after', 'before', 'highlight_after', 'highlight_before' ];
- len = numeric.length;
- while(len--) {
- if(typeof urlOptions[numeric[len]] === 'string') {
- try {
- urlOptions[numeric[len]] = parseInt(urlOptions[numeric[len]]);
- }
- catch(e) {
- console.log('failed to parse URL hash parameter ' + numeric[len]);
- urlOptions[numeric[len]] = 0;
- }
- }
- }
-
- if(urlOptions.server !== null && urlOptions.server !== '') {
- netdataServerStatic = document.location.origin.toString() + document.location.pathname.toString();
- netdataServer = urlOptions.server;
- netdataCheckXSS = true;
- }
- else
- urlOptions.server = null;
-
- if(urlOptions.before > 0 && urlOptions.after > 0) {
- urlOptions.pan_and_zoom = true;
- urlOptions.nowelcome = true;
- }
- else
- urlOptions.pan_and_zoom = false;
-
- if(urlOptions.highlight_before > 0 && urlOptions.highlight_after > 0) {
- urlOptions.highlight = true;
- }
- else
- urlOptions.highlight = false;
-
- switch(urlOptions.mode) {
- case 'print':
- urlOptions.theme = 'white';
- urlOptions.welcome = false;
- urlOptions.help = false;
- urlOptions.show_alarms = false;
-
- if(urlOptions.pan_and_zoom === false) {
- urlOptions.pan_and_zoom = true;
- urlOptions.before = Date.now();
- urlOptions.after = urlOptions.before - 600000;
- }
-
- netdataShowAlarms = false;
- netdataRegistry = false;
- this_is_demo = false;
- break;
-
- case 'live':
- default:
- urlOptions.mode = 'live';
- break;
- }
-
- // console.log(urlOptions);
- },
-
- hashUpdate: function() {
- history.replaceState(null, '', urlOptions.genHash(true));
- },
-
- netdataPanAndZoomCallback: function(status, after, before) {
- //console.log(1);
- //console.log(new Error().stack);
-
- if(netdataSnapshotData === null) {
- urlOptions.pan_and_zoom = status;
- urlOptions.after = after;
- urlOptions.before = before;
- urlOptions.hashUpdate();
- }
- },
-
- netdataHighlightCallback: function(status, after, before) {
- //console.log(2);
- //console.log(new Error().stack);
-
- if(status === true && (after === null || before === null || after <= 0 || before <= 0 || after >= before)) {
- status = false;
- after = 0;
- before = 0;
- }
-
- if(netdataSnapshotData === null)
- urlOptions.highlight = status;
- else
- urlOptions.highlight = false;
-
- urlOptions.highlight_after = Math.round(after);
- urlOptions.highlight_before = Math.round(before);
- urlOptions.hashUpdate();
-
- var show_eye = NETDATA.globalChartUnderlay.hasViewport();
-
- if(status === true && after > 0 && before > 0 && after < before) {
- var d1 = NETDATA.dateTime.localeDateString(after);
- var d2 = NETDATA.dateTime.localeDateString(before);
- if(d1 === d2) d2 = '';
- document.getElementById('navbar-highlight-content').innerHTML =
- ((show_eye === true)?'<span class="navbar-highlight-bar highlight-tooltip" onclick="urlOptions.showHighlight();" title="restore the highlighted view" data-toggle="tooltip" data-placement="bottom">':'<span>').toString()
- + 'highlighted time-frame'
- + ' <b>' + d1 + ' <code>' + NETDATA.dateTime.localeTimeString(after) + '</code></b> to '
- + ' <b>' + d2 + ' <code>' + NETDATA.dateTime.localeTimeString(before) + '</code></b>, '
- + 'duration <b>' + NETDATA.seconds4human(Math.round((before - after) / 1000)) + '</b>'
- + '</span>'
- + '<span class="navbar-highlight-button-right highlight-tooltip" onclick="urlOptions.clearHighlight();" title="clear the highlighted time-frame" data-toggle="tooltip" data-placement="bottom"><i class="fas fa-times"></i></span>';
-
- $('.navbar-highlight').show();
-
- $('.highlight-tooltip').tooltip({
- html: true,
- delay: {show: 500, hide: 0},
- container: 'body'
- });
- }
- else
- $('.navbar-highlight').hide();
- },
-
- clearHighlight: function() {
- NETDATA.globalChartUnderlay.clear();
-
- if(NETDATA.globalPanAndZoom.isActive() === true)
- NETDATA.globalPanAndZoom.clearMaster();
- },
-
- showHighlight: function() {
- NETDATA.globalChartUnderlay.focus();
- }
- };
-
- urlOptions.parseHash();
-
- // --------------------------------------------------------------------
- // check options that should be processed before loading netdata.js
-
- var localStorageTested = -1;
- function localStorageTest() {
- if(localStorageTested !== -1)
- return localStorageTested;
-
- if(typeof Storage !== "undefined" && typeof localStorage === 'object') {
- var test = 'test';
- try {
- localStorage.setItem(test, test);
- localStorage.removeItem(test);
- localStorageTested = true;
- }
- catch (e) {
- console.log(e);
- localStorageTested = false;
- }
- }
- else
- localStorageTested = false;
-
- return localStorageTested;
- }
-
- function loadLocalStorage(name) {
- var ret = null;
-
- try {
- if(localStorageTest() === true)
- ret = localStorage.getItem(name);
- else
- console.log('localStorage is not available');
- }
- catch(error) {
- console.log(error);
- return null;
- }
-
- if(typeof ret === 'undefined' || ret === null)
- return null;
-
- // console.log('loaded: ' + name.toString() + ' = ' + ret.toString());
-
- return ret;
- }
-
- function saveLocalStorage(name, value) {
- // console.log('saving: ' + name.toString() + ' = ' + value.toString());
- try {
- if(localStorageTest() === true) {
- localStorage.setItem(name, value.toString());
- return true;
- }
- }
- catch(error) {
- console.log(error);
- }
-
- return false;
- }
-
- function getTheme(def) {
- if(urlOptions.mode === 'print')
- return 'white';
-
- var ret = loadLocalStorage('netdataTheme');
- if(typeof ret === 'undefined' || ret === null || ret === 'undefined')
- return def;
- else
- return ret;
- }
-
- function setTheme(theme) {
- if(urlOptions.mode === 'print') return false;
-
- if(theme === netdataTheme) return false;
- return saveLocalStorage('netdataTheme', theme);
- }
-
- var netdataTheme = getTheme('slate');
- var netdataShowHelp = true;
-
- if(urlOptions.theme !== null) {
- setTheme(urlOptions.theme);
- netdataTheme = urlOptions.theme;
- }
- else
- urlOptions.theme = netdataTheme;
-
- if(urlOptions.help !== null) {
- saveLocalStorage('options.show_help', urlOptions.help);
- netdataShowHelp = urlOptions.help;
- }
- else {
- urlOptions.help = loadLocalStorage('options.show_help');
- }
-
- // --------------------------------------------------------------------
- // natural sorting
- // http://www.davekoelle.com/files/alphanum.js - LGPL
-
- function naturalSortChunkify(t) {
- var tz = [];
- var x = 0, y = -1, n = 0, i, j;
-
- while (i = (j = t.charAt(x++)).charCodeAt(0)) {
- var m = (i >= 48 && i <= 57);
- if (m !== n) {
- tz[++y] = "";
- n = m;
- }
- tz[y] += j;
- }
-
- return tz;
- }
-
- function naturalSortCompare(a, b) {
- var aa = naturalSortChunkify(a.toLowerCase());
- var bb = naturalSortChunkify(b.toLowerCase());
-
- fo