diff --git a/contrib/monitor/index.html b/contrib/monitor/index.html
index b238341..82eeb9e 100644
--- a/contrib/monitor/index.html
+++ b/contrib/monitor/index.html
@@ -24,7 +24,7 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -259,7 +259,7 @@
-
+
@@ -268,7 +268,7 @@
-
+
Total hits calculated since May 5, 2015
@@ -279,25 +279,26 @@
-
+
-
+
+
@@ -345,12 +347,12 @@
Schemas
-
+
-
+
@@ -365,7 +367,7 @@
-
+
@@ -374,7 +376,7 @@
-
+
Total hits calculated since May 5, 2015
@@ -385,38 +387,38 @@
-
+
-
+
-
+
-
+
diff --git a/contrib/monitor/js/eddn.js b/contrib/monitor/js/eddn.js
index 86ffac5..78d07c6 100644
--- a/contrib/monitor/js/eddn.js
+++ b/contrib/monitor/js/eddn.js
@@ -1,19 +1,19 @@
var updateInterval = 60000,
monitorEndPoint = 'https://eddn.edcd.io:9091/',
-
+
//gatewayBottlePort = 8080,
gatewayBottlePort = 4430,
relayBottlePort = 9090,
-
+
gateways = [
'eddn.edcd.io'
], //TODO: Must find a way to bind them to monitor
-
+
relays = [
'eddn.edcd.io'
]; //TODO: Must find a way to bind them to monitor
-
+
var stats = {
'gateways' : {},
'relays' : {}
@@ -55,11 +55,11 @@ secondsToDurationString = function(seconds) {
days = Math.floor(hours / 24)
hours = Math.floor((hours - days * 24) / 3600);
}
-
+
if (hours < 10) {hours = "0" + hours;}
if (minutes < 10) {minutes = "0" + minutes;}
if (seconds < 10) {seconds = "0" + seconds;}
-
+
if (days > 0) {
return days + "d " + hours + ":" + minutes + ":" + seconds;
}
@@ -79,10 +79,10 @@ var doUpdateSoftwares = function()
{
var dToday = new Date(),
dYesterday = new (function(d){ d.setDate(d.getDate()-1); return d})(new Date),
-
+
yesterday = dYesterday.getUTCFullYear() + '-' + ("0" + (dYesterday.getUTCMonth() + 1)).slice(-2) + '-' + ("0" + (dYesterday.getUTCDate())).slice(-2),
today = dToday.getUTCFullYear() + '-' + ("0" + (dToday.getUTCMonth() + 1)).slice(-2) + '-' + ("0" + (dToday.getUTCDate())).slice(-2);
-
+
$.ajax({
dataType: "json",
url: monitorEndPoint + 'getSoftwares/?dateStart=' + yesterday + '&dateEnd = ' + today,
@@ -93,40 +93,40 @@ var doUpdateSoftwares = function()
success: function(softwaresTotalData){
var chart = $('#software .chart').highcharts(),
series = chart.get('softwares');
-
+
// Count total by software, all versions included
var softwareName = {};
$.each(softwaresTotalData, function(software, hits){
softwareSplit = software.split(' | ');
-
+
if(!softwareName[softwareSplit[0]])
softwareName[softwareSplit[0]] = [0,0, parseInt(hits)];
else
softwareName[softwareSplit[0]][2] += parseInt(hits);
-
+
// Might happen when nothing is received...
if(softwares[yesterday] == undefined)
softwares[yesterday] = [];
if(softwares[today] == undefined)
softwares[today] = [];
-
+
softwareName[softwareSplit[0]][0] += parseInt(softwares[today][software] || 0);
softwareName[softwareSplit[0]][1] += parseInt(softwares[yesterday][software] || 0);
-
+
});
-
+
// Sort by total DESC
var tmp = new Array();
$.each(softwareName, function(software, hits){ tmp.push({name: software, today: hits[0], yesterday: hits[1], total: hits[2]}); });
tmp.sort(function(a,b) { return b.total - a.total; });
softwaresTotal = tmp;
-
+
$('#software .table tbody').empty();
-
+
// Prepare drilldowns
$.each(softwaresTotalData, function(software, hits){
softwareSplit = software.split(' | ');
-
+
$('#software .table tbody').append(
newTr = $('
').attr('data-type', 'drilldown').attr('data-parent', softwareSplit[0]).attr('data-name', software).on('mouseover', function(){
chart.get('software-' + makeSlug(software)).setState('hover');
@@ -149,13 +149,13 @@ var doUpdateSoftwares = function()
$('').addClass('stat total').html('' + formatNumber(hits) + '')
)
);
-
+
if(!drillDownSoftware)
newTr.hide();
else
if(softwareSplit[0] != currentDrillDown)
newTr.hide();
-
+
if(!softwaresVersion[softwareSplit[0]])
softwaresVersion[softwareSplit[0]] = {};
if(!softwaresVersion[softwareSplit[0]][software])
@@ -163,18 +163,18 @@ var doUpdateSoftwares = function()
today: (softwares[today][software] || 0), yesterday: (softwares[yesterday][software] || 0), total: hits
};
});
-
+
// Add main softwares
$.each(softwaresTotal, function(key, values){
$('#software .table tbody').append(
newTr = $(' |
').attr('data-type', 'parent').attr('data-name', values.name).on('click', function(event){
event.stopImmediatePropagation();
currentSoftware = $(this).attr('data-name');
-
+
if(!drillDownSoftware)
{
currentDrillDown = currentSoftware;
-
+
$('#software .table thead th:eq(0)').html('')
.css('cursor','pointer')
.on('click', function(){
@@ -191,17 +191,17 @@ var doUpdateSoftwares = function()
$('#software .table thead th:eq(1)').html(currentSoftware);
$('#software .table tbody tr[data-type=parent]').hide();
$('#software .table tbody tr[data-type=drilldown][data-parent="' + currentSoftware + '"]').show();
-
+
var currentData = [];
-
+
$.each(softwaresVersion[currentSoftware], function(key, value){
currentData.push({
- id: 'software-' + makeSlug(key),
- name: key,
+ id: 'software-' + makeSlug(key),
+ name: key,
y: parseInt(value.total)
});
});
-
+
chart.addSeriesAsDrilldown(chart.get('software-' + makeSlug(currentSoftware)), {
id: 'softwareDrilldown-' + makeSlug(currentSoftware),
type: 'pie',
@@ -209,15 +209,15 @@ var doUpdateSoftwares = function()
data: currentData
});
chart.redraw();
-
+
if(chart.drillUpButton)
chart.drillUpButton = chart.drillUpButton.destroy();
-
+
$('#software .table tbody tr[data-type=drilldown][data-parent="' + currentSoftware + '"]').each(function(){
$(this).find('.square').css('background', chart.get('software-' + makeSlug($(this).attr('data-name'))).color);
});
}
-
+
drillDownSoftware = !drillDownSoftware;
}).on('mouseover', function(){
chart.get('software-' + makeSlug(values.name)).setState('hover');
@@ -241,7 +241,7 @@ var doUpdateSoftwares = function()
$('').addClass('stat total').html('' + formatNumber(values.total) + '')
)
);
-
+
if(!drillDownSoftware)
{
if(!chart.get('software-' + makeSlug(values.name)))
@@ -250,26 +250,26 @@ var doUpdateSoftwares = function()
}
else
chart.get('software-' + makeSlug(values.name)).update(parseInt(values.total), false);
-
+
newTr.find('.square').css('background', chart.get('software-' + makeSlug(values.name)).color);
}
-
+
if(drillDownSoftware)
newTr.hide();
});
-
+
if(drillDownSoftware)
$('#software .table tbody tr[data-type=drilldown][data-parent="' + currentDrillDown + '"]').each(function(){
$(this).find('.square').css('background', chart.get('software-' + makeSlug($(this).attr('data-name'))).color);
});
-
+
chart.redraw();
-
+
$('#software').find(".stat").removeClass("warning").each(function() {
if ($(this).html() == "0")
$(this).addClass("warning");
});
-
+
$('#software').find(".update_timestamp").html(d.toString("yyyy-MM-dd HH:mm:ss"));
}
});
@@ -277,15 +277,15 @@ var doUpdateSoftwares = function()
});
}
-
+/*
var doUpdateUploaders = function()
{
var dToday = new Date(),
dYesterday = new (function(d){ d.setDate(d.getDate()-1); return d})(new Date),
-
+
yesterday = dYesterday.getUTCFullYear() + '-' + ("0" + (dYesterday.getUTCMonth() + 1)).slice(-2) + '-' + ("0" + (dYesterday.getUTCDate())).slice(-2),
today = dToday.getUTCFullYear() + '-' + ("0" + (dToday.getUTCMonth() + 1)).slice(-2) + '-' + ("0" + (dToday.getUTCDate())).slice(-2);
-
+
$.ajax({
dataType: "json",
url: monitorEndPoint + 'getUploaders/?dateStart=' + yesterday + '&dateEnd = ' + today,
@@ -296,21 +296,21 @@ var doUpdateUploaders = function()
success: function(uploadersTotal){
var chart = $('#uploaders .chart').highcharts(),
series = chart.get('uploaders');
-
+
$('#uploaders .table tbody').empty();
-
+
$.each(uploadersTotal, function(uploader, hits){
if(uploader.length > 32)
- truncateUploader = jQuery.trim(uploader).substring(0, 32)/*.split(" ").slice(0, -1).join(" ")*/ + "..."
+ truncateUploader = jQuery.trim(uploader).substring(0, 32) + "..."
else
truncateUploader = uploader
-
- // Might happen when nothing is received...
+
+ // Might happen when nothing is received...
if(uploaders[yesterday] == undefined)
uploaders[yesterday] = [];
if(uploaders[today] == undefined)
uploaders[today] = [];
-
+
$('#uploaders .table tbody').append(
newTr = $(' |
').attr('data-name', uploader).on('mouseover', function(){
chart.get('uploader-' + makeSlug(uploader)).setState('hover');
@@ -333,38 +333,39 @@ var doUpdateUploaders = function()
$('').addClass('stat total').html('' + formatNumber(hits) + '')
)
);
-
+
if(!chart.get('uploader-' + makeSlug(uploader)))
series.addPoint({id: 'uploader-' + makeSlug(uploader), name: uploader, y: parseInt(hits)}, false);
else
chart.get('uploader-' + makeSlug(uploader)).update(parseInt(hits), false);
-
+
newTr.find('.square').css('background', chart.get('uploader-' + makeSlug(uploader)).color);
});
-
+
chart.redraw();
-
+
$('#uploaders').find(".stat").removeClass("warning").each(function() {
if ($(this).html() == "0")
$(this).addClass("warning");
});
-
+
$('#uploaders').find(".update_timestamp").html(d.toString("yyyy-MM-dd HH:mm:ss"));
}
});
}
});
}
+*/
var doUpdateSchemas = function()
{
var dToday = new Date(),
dYesterday = new (function(d){ d.setDate(d.getDate()-1); return d})(new Date),
-
+
yesterday = dYesterday.getUTCFullYear() + '-' + ("0" + (dYesterday.getUTCMonth() + 1)).slice(-2) + '-' + ("0" + (dYesterday.getUTCDate())).slice(-2),
today = dToday.getUTCFullYear() + '-' + ("0" + (dToday.getUTCMonth() + 1)).slice(-2) + '-' + ("0" + (dToday.getUTCDate())).slice(-2);
-
+
$.ajax({
dataType: "json",
url: monitorEndPoint + 'getSchemas/?dateStart=' + yesterday + '&dateEnd = ' + today,
@@ -378,23 +379,23 @@ var doUpdateSchemas = function()
$.each(schemasTotalTmp, function(schema, hits){
schema = schema.replace('http://schemas.elite-markets.net/eddn/', 'https://eddn.edcd.io/schemas/');
hits = parseInt(hits);
-
+
if(schemasTotal[schema]){ schemasTotal[schema] += hits; }
else{ schemasTotal[schema] = hits; }
});
-
+
var chart = $('#schemas .chart').highcharts(),
series = chart.get('schemas');
-
+
$('#schemas .table tbody').empty();
-
+
$.each(schemasTotal, function(schema, hits){
// Might happen when nothing is received...
if(schemas[yesterday] == undefined)
schemas[yesterday] = [];
if(schemas[today] == undefined)
schemas[today] = [];
-
+
// Convert old schemas and sum them to new schemas
schemasYesterdayTmp = {};
$.each(schemas[yesterday], function(schema, hits){
@@ -405,7 +406,7 @@ var doUpdateSchemas = function()
else{ schemasYesterdayTmp[schema] = hits; }
});
schemas[yesterday] = schemasYesterdayTmp;
-
+
schemasTodayTmp = {};
$.each(schemas[today], function(schema, hits){
schema = schema.replace('http://schemas.elite-markets.net/eddn/', 'https://eddn.edcd.io/schemas/');
@@ -415,10 +416,10 @@ var doUpdateSchemas = function()
else{ schemasTodayTmp[schema] = hits; }
});
schemas[today] = schemasTodayTmp;
-
+
var slug = makeSlug(schema);
var name = makeName(schema);
-
+
$('#schemas .table tbody').append(
newTr = $(' |
').attr('data-name', schema).on('mouseover', function(){
chart.get('schema-' + slug).setState('hover');
@@ -441,22 +442,22 @@ var doUpdateSchemas = function()
$('').addClass('stat total').html('' + formatNumber(hits) + '')
)
);
-
+
if(!chart.get('schema-' + slug))
series.addPoint({id: 'schema-' + slug, name: name, y: parseInt(hits)}, false);
else
chart.get('schema-' + slug).update(parseInt(hits), false);
-
+
newTr.find('.square').css('background', chart.get('schema-' + slug).color);
});
-
+
chart.redraw();
-
+
$('#schemas').find(".stat").removeClass("warning").each(function() {
if ($(this).html() == "0")
$(this).addClass("warning");
});
-
+
$('#schemas').find(".update_timestamp").html(d.toString("yyyy-MM-dd HH:mm:ss"));
}
});
@@ -469,36 +470,36 @@ var doUpdates = function(type){
$("select[name=" + type + "] option").each(function(){
var currentItem = $(this).html(),
isSelected = $(this).is(':selected');
-
+
$.ajax({
dataType: "json",
url: $(this).val(),
success: function(data){
d = new Date();
-
+
stats[type][currentItem]['lastUpdate'] = d.toString("yyyy-MM-dd HH:mm:ss");
stats[type][currentItem]['last'] = data;
-
+
if(isSelected)
showStats(type, currentItem);
-
+
var chart = $("#" + type + " .chart[data-name='" + currentItem + "']").highcharts();
-
+
shift = chart.get('inbound').data.length > 60;
chart.get('inbound').addPoint([d.getTime(), (data['inbound'] || {})['1min'] || 0], true, shift);
-
+
if(type == 'gateways')
{
shift = chart.get('invalid').data.length > 60;
chart.get('invalid').addPoint([d.getTime(), (data['invalid'] || {})['1min'] || 0], true, shift);
}
-
+
if(type == 'relays')
{
shift = chart.get('duplicate').data.length > 60;
chart.get('duplicate').addPoint([d.getTime(), (data['duplicate'] || {})['1min'] || 0], true, shift);
}
-
+
shift = chart.get('outbound').data.length > 60;
chart.get('outbound').addPoint([d.getTime(), (data['outbound'] || {})['1min'] || 0], true, shift);
}
@@ -509,46 +510,46 @@ var doUpdates = function(type){
var showStats = function(type, currentItem){
var el = $('#' + type),
currentItemStats = stats[type][currentItem]['last'];
-
+
el.find(".inbound_1min").html((currentItemStats['inbound'] || {})['1min'] || 0);
el.find(".inbound_5min").html((currentItemStats["inbound"] || {})['5min'] || 0);
el.find(".inbound_60min").html((currentItemStats["inbound"] || {})['60min'] || 0);
-
+
if(type == 'gateways')
{
el.find(".invalid_1min").html((currentItemStats["invalid"] || {})['1min'] || 0);
el.find(".invalid_5min").html((currentItemStats["invalid"] || {})['5min'] || 0);
el.find(".invalid_60min").html((currentItemStats["invalid"] || {})['60min'] || 0);
-
+
el.find(".outdated_1min").html((currentItemStats["outdated"] || {})['1min'] || 0);
el.find(".outdated_5min").html((currentItemStats["outdated"] || {})['5min'] || 0);
el.find(".outdated_60min").html((currentItemStats["outdated"] || {})['60min'] || 0);
}
-
+
if(type == 'relays')
{
el.find(".duplicate_1min").html((currentItemStats["duplicate"] || {})['1min'] || 0);
el.find(".duplicate_5min").html((currentItemStats["duplicate"] || {})['5min'] || 0);
el.find(".duplicate_60min").html((currentItemStats["duplicate"] || {})['60min'] || 0);
}
-
+
el.find(".outbound_1min").html((currentItemStats["outbound"] || {})['1min'] || 0);
el.find(".outbound_5min").html((currentItemStats["outbound"] || {})['5min'] || 0);
el.find(".outbound_60min").html((currentItemStats["outbound"] || {})['60min'] || 0);
-
+
el.find(".update_timestamp").html(stats[type][currentItem]['lastUpdate']);
el.find(".version").html(currentItemStats['version'] || 'N/A');
-
+
if (currentItemStats['uptime'])
el.find(".uptime").html(secondsToDurationString(currentItemStats['uptime']));
else
el.find(".uptime").html('N/A');
-
+
el.find(".stat").removeClass("warning").each(function() {
if ($(this).html() == "0")
$(this).addClass("warning");
});
-
+
el.find(".chart").hide();
el.find(".chart[data-name='" + currentItem + "']").show();
$(window).trigger('resize'); // Fix wrong size in chart
@@ -561,24 +562,24 @@ var showStats = function(type, currentItem){
*/
var start = function(){
Highcharts.setOptions({global: {useUTC: false}});
-
+
// Grab gateways
//gateways = gateways.sort();
$.each(gateways, function(k, gateway){
gateway = gateway.replace('tcp://', '');
gateway = gateway.replace(':8500', '');
-
- $("select[name=gateways]").append($(' |