224 lines
6.6 KiB
Plaintext
224 lines
6.6 KiB
Plaintext
|
/* global _ */
|
||
|
|
||
|
// accessible variables in this scope
|
||
|
var window, document, ARGS, $, jQuery, moment, kbn;
|
||
|
|
||
|
//parse arguments
|
||
|
parseArgs()
|
||
|
|
||
|
|
||
|
return function (callback) {
|
||
|
if (window.location.href.search('/dashboard-solo/') != -1) {
|
||
|
document.documentElement.style.background = '#FFF';
|
||
|
}
|
||
|
|
||
|
var url = 'https://<%= @monitorhost%>/histou/';
|
||
|
var configUrl = url+'index.php?host='+host+'&service='+service+'&height='+height+'&legend='+legend+debug+disablePanelTitle+disablePerfdataLookup+specificTemplate+'&annotations='+annotations;
|
||
|
|
||
|
var flotAddons = url + 'flotAddons.js';
|
||
|
$.getScript(flotAddons, function (){});
|
||
|
if (!_.isUndefined(ARGS.customCSSFile)) {
|
||
|
$('head').append('<link rel="stylesheet" href="' + ARGS.customCSSFile + '" type="text/css" />');
|
||
|
}
|
||
|
cssLoaded = false;
|
||
|
jQuery('body').on('DOMNodeInserted', 'DIV.drop-popover', function (e) {
|
||
|
var cssUrl = url+'lightbox/css/light.css'
|
||
|
if (!cssLoaded) {
|
||
|
$('head').append('<link rel="stylesheet" href="'+url+'lightbox/css/light.css" type="text/css" />');
|
||
|
$.getScript(url+'lightbox/js/light.js', function(){});
|
||
|
cssLoaded = true;
|
||
|
}
|
||
|
|
||
|
var box = $( e.currentTarget ).find( "DIV.sakuli-popup" );
|
||
|
if (box.length > 0 ){
|
||
|
$(box[0]).attr('class', 'sakuli-image');
|
||
|
var sakuliUrl = site[1] + box[0].innerHTML;
|
||
|
var svcoutput;
|
||
|
var imagename;
|
||
|
jQuery.when(
|
||
|
// fetch Sakuli serviceoutput file
|
||
|
$.get( sakuliUrl + "output.txt").always(function(data ,state) {
|
||
|
if (state != "success" ) {
|
||
|
data = "Could not find Sakuli service outputfile at " + sakuliUrl + "output.txt !"
|
||
|
}
|
||
|
console.log(data);
|
||
|
svcoutput = $("<div>").text(data).html().replace(/['"]+/g, '');
|
||
|
console.log("Sakuli service output: " + svcoutput);
|
||
|
}) &&
|
||
|
// fetch Sakuli screenshot (jpg/png)
|
||
|
$.get( sakuliUrl ).always(function(imgdata ,state) {
|
||
|
if (state != "success" ) {
|
||
|
imgdata = "Could not access screenshot list page at " + sakuliUrl + "!"
|
||
|
}
|
||
|
// the 3rd href on the apache index page contains the img name
|
||
|
imagename = $(imgdata).find('a')[2].text.trim();
|
||
|
console.log("Sakuli screenshot image name: " + imagename);
|
||
|
})
|
||
|
).then ( function() {
|
||
|
box[0].innerHTML = '<a href="' + sakuliUrl + imagename + '" data-lightbox="sakuli" data-title="'+ svcoutput +'"><img src="'+ sakuliUrl + imagename +'" alt="Sakuli error image" width=250px /></a>';
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
|
||
|
|
||
|
$.ajax(
|
||
|
{
|
||
|
method: 'GET',
|
||
|
url: configUrl,
|
||
|
dataType: "jsonp",
|
||
|
}
|
||
|
).done(
|
||
|
function (result) {
|
||
|
console.log(result);
|
||
|
callback(result);
|
||
|
}
|
||
|
).fail(
|
||
|
function (result) {
|
||
|
console.log(result);
|
||
|
console.log(configUrl);
|
||
|
if (result.status == 200) {
|
||
|
callback(createErrorDashboard('# HTTP code: '+result.status+'\n# Message: '+result.statusText+'\n# Url: '+configUrl+'\n# Probably the output is not valid json, because the returncode is 200!'));
|
||
|
} else {
|
||
|
callback(createErrorDashboard('# HTTP code: '+result.status+'\n# Message: '+result.statusText+'\n# Url: '+configUrl));
|
||
|
}
|
||
|
}
|
||
|
);
|
||
|
}
|
||
|
|
||
|
function createErrorDashboard(message)
|
||
|
{
|
||
|
return {
|
||
|
rows : [{
|
||
|
title: 'Chart',
|
||
|
height: '300px',
|
||
|
panels : [{
|
||
|
title: 'Error Message below',
|
||
|
type: 'text',
|
||
|
span: 12,
|
||
|
fill: 1,
|
||
|
content: message,
|
||
|
}]
|
||
|
}],
|
||
|
services : {},
|
||
|
title : 'JS Error / HTTP Error'
|
||
|
};
|
||
|
}
|
||
|
|
||
|
function parseArgs()
|
||
|
{
|
||
|
if (!_.isUndefined(ARGS.reduce)) {
|
||
|
$('head').append('<style>.panel-fullscreen {top:0}</style>');
|
||
|
|
||
|
//change ui to our needs
|
||
|
clearUi();
|
||
|
}
|
||
|
|
||
|
if (!_.isUndefined(ARGS.dynUnit)) {
|
||
|
dynUnit = true;
|
||
|
} else {
|
||
|
dynUnit = false;
|
||
|
}
|
||
|
|
||
|
if (!_.isUndefined(ARGS.host)) {
|
||
|
host = ARGS.host;
|
||
|
} else {
|
||
|
host = "";
|
||
|
}
|
||
|
|
||
|
if (!_.isUndefined(ARGS.service)) {
|
||
|
service = ARGS.service;
|
||
|
} else {
|
||
|
service = "";
|
||
|
}
|
||
|
|
||
|
if (!_.isUndefined(ARGS.command)) {
|
||
|
command = ARGS.command;
|
||
|
} else {
|
||
|
command = "";
|
||
|
}
|
||
|
|
||
|
if (!_.isUndefined(ARGS.perf)) {
|
||
|
perf = ARGS.perf;
|
||
|
} else {
|
||
|
perf = "";
|
||
|
}
|
||
|
|
||
|
if (!_.isUndefined(ARGS.height)) {
|
||
|
height = ARGS.height;
|
||
|
} else {
|
||
|
height = "";
|
||
|
}
|
||
|
|
||
|
if (_.isUndefined(ARGS.debug)) {
|
||
|
debug = '';
|
||
|
} else {
|
||
|
debug = "&debug";
|
||
|
}
|
||
|
|
||
|
if (!_.isUndefined(ARGS.legend)) {
|
||
|
legend = ARGS.legend;
|
||
|
} else {
|
||
|
legend = true;
|
||
|
}
|
||
|
|
||
|
if (!_.isUndefined(ARGS.annotations)) {
|
||
|
annotations = ARGS.annotations;
|
||
|
} else {
|
||
|
annotations = false;
|
||
|
}
|
||
|
|
||
|
if(_.isUndefined(ARGS.disablePanelTitle)) {
|
||
|
disablePanelTitle = '';
|
||
|
}else{
|
||
|
disablePanelTitle = "&disablePanelTitle";
|
||
|
}
|
||
|
|
||
|
if(_.isUndefined(ARGS.disablePerfdataLookup)) {
|
||
|
disablePerfdataLookup = '';
|
||
|
}else{
|
||
|
disablePerfdataLookup = "&disablePerfdataLookup";
|
||
|
}
|
||
|
|
||
|
if(_.isUndefined(ARGS.specificTemplate)) {
|
||
|
specificTemplate = '';
|
||
|
}else{
|
||
|
specificTemplate = "&specificTemplate="+ARGS.specificTemplate;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function clearUi()
|
||
|
{
|
||
|
//removes white space
|
||
|
var checkExist = setInterval(
|
||
|
function () {
|
||
|
if ($('.panel-content').length) {
|
||
|
clearInterval(checkExist);
|
||
|
document.getElementsByClassName("panel-content")[0].style.paddingBottom = '0px';
|
||
|
}
|
||
|
},
|
||
|
100
|
||
|
);
|
||
|
/*
|
||
|
.panel-header removes the headline of the graphs
|
||
|
.navbar-static-top removes the menubar on the top
|
||
|
.row-control-inner removes the row controll button on the left
|
||
|
.span12 removes the add new row button on the bottom
|
||
|
*/
|
||
|
divs = ['.panel-header','.navbar-static-top','.row-control-inner','.span12']
|
||
|
for (index = 0; index < divs.length; index++) {
|
||
|
waitForDivAndDeleteIt(divs[index]);
|
||
|
}
|
||
|
function waitForDivAndDeleteIt(div)
|
||
|
{
|
||
|
var checkExist = setInterval(
|
||
|
function () {
|
||
|
if ($(div).length) {
|
||
|
clearInterval(checkExist);
|
||
|
$(div).remove();
|
||
|
}
|
||
|
},
|
||
|
100
|
||
|
);
|
||
|
}
|
||
|
}
|