222 lines
5.0 KiB
JavaScript
222 lines
5.0 KiB
JavaScript
var chartOptions = {
|
|
colors:['#008ffb', '#f08681'],
|
|
series: [
|
|
{
|
|
name: 'Ping',
|
|
data: [null]
|
|
},
|
|
{
|
|
name: 'Pakke Tap',
|
|
type: 'area',
|
|
data: [null]
|
|
}
|
|
],
|
|
chart: {
|
|
height: '300',
|
|
id: 'chart',
|
|
type: 'area',
|
|
animations: {
|
|
enabled: false,
|
|
},
|
|
toolbar: {
|
|
show: true
|
|
},
|
|
zoom: {
|
|
enabled: true
|
|
},
|
|
},
|
|
dataLabels: {
|
|
enabled: false
|
|
},
|
|
stroke: {
|
|
curve: 'straight'
|
|
},
|
|
markers: {
|
|
size: 0
|
|
},
|
|
xaxis: {
|
|
type: 'datetime',
|
|
labels: {
|
|
datetimeUTC: false,
|
|
},
|
|
},
|
|
yaxis: [
|
|
{
|
|
seriesName: 'Ping',
|
|
labels: {
|
|
formatter: function (val) {
|
|
if (val == null) {
|
|
return 0;
|
|
}
|
|
return val.toFixed(1);
|
|
},
|
|
}
|
|
},
|
|
{
|
|
seriesName: 'Pakke Tap',
|
|
min:0,
|
|
max:100,
|
|
opposite: true,
|
|
|
|
labels: {
|
|
formatter: function (val) {
|
|
if (val == null) {
|
|
return 0 + '%';
|
|
}
|
|
return val.toFixed(0) + "%";
|
|
},
|
|
}
|
|
}
|
|
],
|
|
legend: {
|
|
show: false
|
|
},
|
|
};
|
|
|
|
var brushChartOptions = {
|
|
colors:['#008ffb', '#f08681'],
|
|
series: [
|
|
{
|
|
name: 'Ping',
|
|
data: [1]
|
|
},
|
|
{
|
|
name: 'Pakke Tap',
|
|
type: 'area',
|
|
data: [1]
|
|
}
|
|
],
|
|
chart: {
|
|
height: '100',
|
|
id: 'brushChart',
|
|
type: 'area',
|
|
brush:{
|
|
target: 'chart',
|
|
enabled: true
|
|
},
|
|
animations: {
|
|
enabled: false,
|
|
},
|
|
toolbar: {
|
|
show: false,
|
|
},
|
|
zoom: {
|
|
enabled: false
|
|
},
|
|
selection: {
|
|
enabled: true,
|
|
},
|
|
},
|
|
dataLabels: {
|
|
enabled: false
|
|
},
|
|
stroke: {
|
|
curve: 'straight'
|
|
},
|
|
markers: {
|
|
size: 0
|
|
},
|
|
xaxis: {
|
|
type: 'datetime',
|
|
labels: {
|
|
datetimeUTC: false,
|
|
},
|
|
},
|
|
yaxis: [
|
|
{
|
|
seriesName: 'Ping',
|
|
labels: {
|
|
formatter: function (val) {
|
|
if (val == null) {
|
|
return 0;
|
|
}
|
|
return val.toFixed(1);
|
|
},
|
|
}
|
|
},
|
|
{
|
|
seriesName: 'Pakke Tap',
|
|
min:0,
|
|
max:100,
|
|
opposite: true,
|
|
|
|
labels: {
|
|
formatter: function (val) {
|
|
if (val == null) {
|
|
return 0 + '%';
|
|
}
|
|
return val.toFixed(0) + "%"
|
|
},
|
|
}
|
|
}
|
|
],
|
|
legend: {
|
|
show: false
|
|
},
|
|
};
|
|
|
|
const queryParam = new Proxy(new URLSearchParams(window.location.search), {
|
|
get: (searchParams, prop) => searchParams.get(prop),
|
|
});
|
|
|
|
document.body.onload = async function() {
|
|
chartElement = new ApexCharts(document.querySelector("#chartElement"), chartOptions);
|
|
chartElement.render();
|
|
|
|
brushChartElement = new ApexCharts(document.querySelector("#brushChartElement"), brushChartOptions);
|
|
brushChartElement.render();
|
|
|
|
var statsResponse = await fetch('./?p=api_stats&scan_id=' + queryParam.scan_id);
|
|
|
|
if (statsResponse.status != 200) {
|
|
alert('Feil under henting av statistikk');
|
|
}
|
|
|
|
let chartResponse = await fetch('./?p=api_chart&limit_length=1000&scan_id=' + queryParam.scan_id);
|
|
|
|
if (chartResponse.status != 200) {
|
|
alert('Feil under henting av graf data');
|
|
}
|
|
|
|
let jsonResponse = await chartResponse.json();
|
|
let newPingSeries = [];
|
|
|
|
jsonResponse.pings.forEach(ping => {
|
|
let newDate = new Date(ping.date_added + ' UTC');
|
|
newPingSeries.push({ x: newDate.toString(), y: ping.ping_avg});
|
|
});
|
|
|
|
let chartPacketLossSeries = [];
|
|
jsonResponse.pings.forEach(ping => {
|
|
let newDate = new Date(ping.date_added + ' UTC');
|
|
if (ping.pkt_transmitted != ping.pkt_received) {
|
|
let pktLossPercentage = ping.pkt_received / ping.pkt_transmitted * 100;
|
|
pktLossPercentage = 100 - pktLossPercentage;
|
|
chartPacketLossSeries.push({ x: newDate.toString(), y: pktLossPercentage});
|
|
} else {
|
|
chartPacketLossSeries.push({ x: newDate.toString(), y: 0});
|
|
}
|
|
});
|
|
|
|
chartElement.updateSeries([
|
|
{
|
|
name: 'Ping',
|
|
data: newPingSeries
|
|
},
|
|
{
|
|
name: 'Pakke Tap',
|
|
data: chartPacketLossSeries
|
|
}
|
|
]);
|
|
|
|
brushChartElement.updateSeries([
|
|
{
|
|
name: 'Ping',
|
|
data: newPingSeries
|
|
},
|
|
{
|
|
name: 'Pakke Tap',
|
|
data: chartPacketLossSeries
|
|
}
|
|
]);
|
|
} |