aboutsummaryrefslogtreecommitdiffstats
path: root/web/js/nms-draw-chart.js
diff options
context:
space:
mode:
Diffstat (limited to 'web/js/nms-draw-chart.js')
-rw-r--r--web/js/nms-draw-chart.js350
1 files changed, 196 insertions, 154 deletions
diff --git a/web/js/nms-draw-chart.js b/web/js/nms-draw-chart.js
index 4145a9a..2139992 100644
--- a/web/js/nms-draw-chart.js
+++ b/web/js/nms-draw-chart.js
@@ -1,81 +1,92 @@
"use strict";
function setNightModeChart(night) {
- if(night) {
+ if (night) {
Chart.defaults.global.defaultFontColor = "#fff";
- Chart.defaults.scale.gridLines.color = "#444"
- }
- else {
+ Chart.defaults.scale.gridLines.color = "#444";
+ } else {
Chart.defaults.global.defaultFontColor = "#222";
- Chart.defaults.scale.gridLines.color = "#ddd"
+ Chart.defaults.scale.gridLines.color = "#ddd";
}
}
function drawLatency(canvas, sw, chart, callback) {
- var q = encodeURIComponent('SELECT mean("latency") AS "mean_latency" FROM "ping" WHERE time > now() - 1h AND "switch"=\''+sw+'\' GROUP BY time(60s), "version" fill(null)');
+ var q = encodeURIComponent(
+ 'SELECT mean("latency") AS "mean_latency" FROM "ping" WHERE time > now() - 1h AND "switch"=\'' +
+ sw +
+ '\' GROUP BY time(60s), "version" fill(null)'
+ );
var dataset = [];
- $.getJSON( "/query?db=gondul&q="+q, function( results ) {
+ $.getJSON("/query?db=gondul&q=" + q, function (results) {
try {
- results['results'][0]['series'].forEach(function(serie) {
+ results["results"][0]["series"].forEach(function (serie) {
var data = [];
- serie['values'].forEach(function(element) {
- data.push({t: new Date(element[0]), y: element[1]});
+ serie["values"].forEach(function (element) {
+ data.push({ t: new Date(element[0]), y: element[1] });
});
var borderColor = "rgba(0,155,200,255)";
- if(serie['tags']['version'] === "v6") {
+ if (serie["tags"]["version"] === "v6") {
borderColor = "rgba(100,155,100,255)";
}
- dataset.push({data: data, fill:false, borderColor:borderColor, label:serie['tags']['version'] });
+ dataset.push({
+ data: data,
+ fill: false,
+ borderColor: borderColor,
+ label: serie["tags"]["version"],
+ });
});
- if(chart != false) {
+ if (chart != false) {
chart.data.datasets = dataset;
chart.update();
return;
}
- var ctx = document.getElementById(canvas).getContext('2d');
+ var ctx = document.getElementById(canvas).getContext("2d");
var myChart = new Chart(ctx, {
- type: 'line',
+ type: "line",
data: {
- datasets: dataset
+ datasets: dataset,
},
options: {
legend: {
- display: false
+ display: false,
},
scales: {
- xAxes:[{
- type: 'time',
- time: {
- parser: "HH:mm",
- unit: 'minute',
- tooltipFormat: 'HH:mm',
- displayFormats: {
- 'minute': 'HH:mm',
- 'hour': 'HH:mm',
- min: '00:00',
- max: '23:59'
+ xAxes: [
+ {
+ type: "time",
+ time: {
+ parser: "HH:mm",
+ unit: "minute",
+ tooltipFormat: "HH:mm",
+ displayFormats: {
+ minute: "HH:mm",
+ hour: "HH:mm",
+ min: "00:00",
+ max: "23:59",
+ },
},
- }
- }],
- yAxes: [{
- ticks: {
- beginAtZero: true
- }
- }]
+ },
+ ],
+ yAxes: [
+ {
+ ticks: {
+ beginAtZero: true,
+ },
+ },
+ ],
},
responsive: true,
animation: false,
elements: {
line: {
- tension: 0.05
- }
- }
- }
+ tension: 0.05,
+ },
+ },
+ },
});
- } catch(e) {
- }
- if(callback != undefined) {
+ } catch (e) {}
+ if (callback != undefined) {
callback(myChart);
}
});
@@ -87,29 +98,33 @@ function drawSumOfPorts(canvas, sw) {
var gigabit = megabit * 1024;
var terabit = gigabit * 1024;
- var q = encodeURIComponent('SELECT non_negative_derivative(first("ifHCInOctets"), 1s) * 8 AS "ifHCInOctets", non_negative_derivative(first("ifHCOutOctets"), 1s) * 8 AS "ifHCOutOctets" FROM "ports" WHERE time > now() - 30m AND "switch"=\''+sw+'\' GROUP BY time(90s),"interface" fill(null)');
+ var q = encodeURIComponent(
+ 'SELECT non_negative_derivative(first("ifHCInOctets"), 1s) * 8 AS "ifHCInOctets", non_negative_derivative(first("ifHCOutOctets"), 1s) * 8 AS "ifHCOutOctets" FROM "ports" WHERE time > now() - 30m AND "switch"=\'' +
+ sw +
+ '\' GROUP BY time(90s),"interface" fill(null)'
+ );
var dataset = [];
- $.getJSON( "/query?db=gondul&q="+q, function( results ) {
+ $.getJSON("/query?db=gondul&q=" + q, function (results) {
var bits_in = [];
var bits_out = [];
- results['results'][0]['series'].forEach(function(serie) {
+ results["results"][0]["series"].forEach(function (serie) {
// Bytes in
- serie['values'].forEach(function(element) {
+ serie["values"].forEach(function (element) {
bits_in.push(element[1]);
});
// Bytes out
- serie['values'].forEach(function(element) {
+ serie["values"].forEach(function (element) {
bits_out.push(element[2]);
});
});
- var bits_in_size = bitToSize(Math.max.apply( Math, bits_in ));
- var bits_out_size = bitToSize(Math.max.apply( Math, bits_out ));
+ var bits_in_size = bitToSize(Math.max.apply(Math, bits_in));
+ var bits_out_size = bitToSize(Math.max.apply(Math, bits_out));
var size = 0;
- if(bits_in_size >= bits_out_size) {
+ if (bits_in_size >= bits_out_size) {
size = bits_in_size;
} else {
size = bits_out_size;
@@ -133,107 +148,126 @@ function drawSumOfPorts(canvas, sw) {
size_divider = terabit;
break;
}
- results['results'][0]['series'].forEach(function(serie) {
+ results["results"][0]["series"].forEach(function (serie) {
// Bytes in
var data = [];
- serie['values'].forEach(function(element) {
- data.push({t: new Date(element[0]), y: element[1] / size_divider });
+ serie["values"].forEach(function (element) {
+ data.push({ t: new Date(element[0]), y: element[1] / size_divider });
+ });
+ dataset.push({
+ data: data,
+ backgroundColor: "rgba(58,125,48,200)",
+ label: "Traffic in (" + sizeToText(size) + ")",
});
- dataset.push({data: data, backgroundColor:'rgba(58,125,48,200)', label:'Traffic in (' + sizeToText(size)+')'});
// Bytes out
data = [];
- serie['values'].forEach(function(element) {
- data.push({t: new Date(element[0]), y: -Math.abs(element[2] / size_divider) });
+ serie["values"].forEach(function (element) {
+ data.push({
+ t: new Date(element[0]),
+ y: -Math.abs(element[2] / size_divider),
+ });
+ });
+ dataset.push({
+ data: data,
+ backgroundColor: "rgba(84,84,142,225)",
+ label: "Traffic out (" + sizeToText(size) + ")",
});
- dataset.push({data: data, backgroundColor:'rgba(84,84,142,225)', label:'Traffic out (' + sizeToText(size)+')'});
});
// Draw the chart
- var ctx = document.getElementById(canvas).getContext('2d');
+ var ctx = document.getElementById(canvas).getContext("2d");
var myChart = new Chart(ctx, {
- type: 'line',
+ type: "line",
data: {
- datasets: dataset
+ datasets: dataset,
},
options: {
legend: {
- display: false
+ display: false,
},
scales: {
- xAxes:[{
- type: 'time',
- time: {
- parser: "HH:mm",
- unit: 'minute',
- tooltipFormat: 'HH:mm',
- displayFormats: {
- 'minute': 'HH:mm',
- 'hour': 'HH:mm',
- min: '00:00',
- max: '23:59'
+ xAxes: [
+ {
+ type: "time",
+ time: {
+ parser: "HH:mm",
+ unit: "minute",
+ tooltipFormat: "HH:mm",
+ displayFormats: {
+ minute: "HH:mm",
+ hour: "HH:mm",
+ min: "00:00",
+ max: "23:59",
+ },
+ },
+ },
+ ],
+ yAxes: [
+ {
+ stacked: true,
+ ticks: {
+ callback: function (label, index, labels) {
+ return Math.abs(label) + " " + sizeToText(size);
+ },
+ },
+ scaleLabel: {
+ display: true,
+ labelString: sw + " - All ports",
},
- }
- }],
- yAxes: [{
- stacked: true,
- ticks: {
- callback: function(label, index, labels) {
- return Math.abs(label)+' '+sizeToText(size);
- }
},
- scaleLabel: {
- display: true,
- labelString: sw+' - All ports'
- }
- }]
+ ],
},
responsive: true,
animation: false,
elements: {
point: {
- radius: 0
+ radius: 0,
},
line: {
- tension: 0
- }
- }
- }
+ tension: 0,
+ },
+ },
+ },
});
});
}
-
function drawPort(canvas, sw, port) {
-
var kilobit = 1024;
var megabit = kilobit * 1024;
var gigabit = megabit * 1024;
var terabit = gigabit * 1024;
- var q = encodeURIComponent('SELECT non_negative_derivative(first("ifHCInOctets"), 1s) * 8 AS "ifHCInOctets", non_negative_derivative(first("ifHCOutOctets"), 1s) * 8 AS "ifHCOutOctets" FROM "ports" WHERE time > now() - 30m AND "switch"=\''+sw+'\' AND "interface"=\''+port+'\' GROUP BY time(30s) fill(null)');
+ var q = encodeURIComponent(
+ 'SELECT non_negative_derivative(first("ifHCInOctets"), 1s) * 8 AS "ifHCInOctets", non_negative_derivative(first("ifHCOutOctets"), 1s) * 8 AS "ifHCOutOctets" FROM "ports" WHERE time > now() - 30m AND "switch"=\'' +
+ sw +
+ "' AND \"interface\"='" +
+ port +
+ "' GROUP BY time(30s) fill(null)"
+ );
var dataset = [];
- $.getJSON( "/query?db=gondul&q="+q, function( results ) {
- var serie = results['results'][0]['series'][0];
+ $.getJSON("/query?db=gondul&q=" + q, function (results) {
+ var serie = results["results"][0]["series"][0];
var bits_in = [];
var bits_out = [];
// Bytes in
- serie['values'].forEach(function(element) {
+ serie["values"].forEach(function (element) {
bits_in.push(element[1]);
});
// Bytes out
- serie['values'].forEach(function(element) {
+ serie["values"].forEach(function (element) {
bits_out.push(element[2]);
});
- var bits_in_size = bitToSize(Math.max.apply( Math, bits_in ));
- var bits_out_size = bitToSize(Math.max.apply( Math, bits_out ));
+ var bits_in_size = bitToSize(Math.max.apply(Math, bits_in));
+ var bits_out_size = bitToSize(Math.max.apply(Math, bits_out));
var size = 0;
- if(bits_in_size >= bits_out_size) {
+ if (bits_in_size >= bits_out_size) {
size = bits_in_size;
} else {
size = bits_out_size;
@@ -260,107 +294,115 @@ function drawPort(canvas, sw, port) {
// Bytes in
var data = [];
- serie['values'].forEach(function(element) {
- data.push({t: new Date(element[0]), y: element[1] / size_divider });
+ serie["values"].forEach(function (element) {
+ data.push({ t: new Date(element[0]), y: element[1] / size_divider });
+ });
+ dataset.push({
+ data: data,
+ backgroundColor: "rgba(58,125,48,200)",
+ label: "Traffic in (" + sizeToText(size) + ")",
});
- dataset.push({data: data, backgroundColor:'rgba(58,125,48,200)', label:'Traffic in (' + sizeToText(size)+')'});
// Bytes out
data = [];
- serie['values'].forEach(function(element) {
- data.push({t: new Date(element[0]), y: -Math.abs(element[2] / size_divider) });
+ serie["values"].forEach(function (element) {
+ data.push({
+ t: new Date(element[0]),
+ y: -Math.abs(element[2] / size_divider),
+ });
+ });
+ dataset.push({
+ data: data,
+ backgroundColor: "rgba(84,84,142,225)",
+ label: "Traffic out (" + sizeToText(size) + ")",
});
- dataset.push({data: data, backgroundColor:'rgba(84,84,142,225)', label:'Traffic out (' + sizeToText(size)+')'});
-
// Draw the chart
- var ctx = document.getElementById(canvas).getContext('2d');
+ var ctx = document.getElementById(canvas).getContext("2d");
var myChart = new Chart(ctx, {
- type: 'line',
+ type: "line",
data: {
- datasets: dataset
+ datasets: dataset,
},
options: {
scales: {
- xAxes:[{
- type: 'time',
- time: {
- parser: "HH:mm",
- unit: 'minute',
- tooltipFormat: 'HH:mm',
- displayFormats: {
- 'minute': 'HH:mm',
- 'hour': 'HH:mm',
- min: '00:00',
- max: '23:59'
+ xAxes: [
+ {
+ type: "time",
+ time: {
+ parser: "HH:mm",
+ unit: "minute",
+ tooltipFormat: "HH:mm",
+ displayFormats: {
+ minute: "HH:mm",
+ hour: "HH:mm",
+ min: "00:00",
+ max: "23:59",
+ },
+ },
+ },
+ ],
+ yAxes: [
+ {
+ ticks: {
+ callback: function (label, index, labels) {
+ return Math.abs(label) + " " + sizeToText(size);
+ },
+ },
+ scaleLabel: {
+ display: true,
+ labelString: sw + " - " + port,
},
- }
- }],
- yAxes: [{
- ticks: {
- callback: function(label, index, labels) {
- return Math.abs(label)+' '+sizeToText(size);
- }
},
- scaleLabel: {
- display: true,
- labelString: sw+' - '+port
- }
- }]
+ ],
},
responsive: true,
animation: false,
elements: {
line: {
- tension: 0
- }
- }
-
- }
+ tension: 0,
+ },
+ },
+ },
});
});
}
-
function bitToSize(bits) {
var kilobit = 1024;
var megabit = kilobit * 1024;
var gigabit = megabit * 1024;
var terabit = gigabit * 1024;
- if(bits >= 0 && bits < kilobit) {
+ if (bits >= 0 && bits < kilobit) {
return 0;
- }
- else if(bits >= kilobit && bits < megabit){
+ } else if (bits >= kilobit && bits < megabit) {
return 1;
- }
- else if(bits >= megabit && bits < gigabit){
+ } else if (bits >= megabit && bits < gigabit) {
return 2;
- }
- else if(bits >= gigabit && bits < terabit){
+ } else if (bits >= gigabit && bits < terabit) {
return 3;
- }
- else if(bits >= terabit) {
+ } else if (bits >= terabit) {
return 4;
}
}
function sizeToText(size) {
- switch(size) {
+ switch (size) {
case 0:
- return 'bit/s';
+ return "bit/s";
break;
case 1:
- return 'Kb/s';
+ return "Kb/s";
break;
case 2:
- return 'Mb/s';
+ return "Mb/s";
break;
case 3:
- return 'Gb/s';
+ return "Gb/s";
break;
case 4:
- return 'Tb/s';
+ return "Tb/s";
break;
}
}