nagios4/html/js/histogram.js
2017-05-19 23:37:19 +02:00

132 lines
3.6 KiB
JavaScript

angular.module("histogramApp", ["ui.bootstrap", "ui.utils",
"histogramEvents", "nagiosDecorations", "nagiosTime"])
// Statistics breakdown list
.constant("statisticsBreakdown", [
{ value: "monthly", label: "Month" },
{ value: "dayofmonth", label: "Day of the Month" },
{ value: "dayofweek", label: "Day of the Week" },
{ value: "hourly", label: "Hour of the Day" }
])
.config(function($locationProvider) {
$locationProvider.html5Mode({
enabled: true,
requireBase: false
})
})
.controller("histogramCtrl", function($scope, $location, $modal) {
// Parameters found in the URL
$scope.search = $location.search();
// URL parameters
$scope.params = {
cgiurl: $scope.search.cgiurl ? $scope.search.cgiurl :
$location.absUrl().replace(/histogram\.html.*$/, "cgi-bin/"),
reporttype: $scope.search.reporttype ?
$scope.search.reporttype : "",
host: $scope.search.host ? $scope.search.host : "",
service: $scope.search.service ?
$scope.search.service : "",
timeperiod: $scope.search.timeperiod ?
$scope.search.timeperiod : "",
t1: $scope.search.t1 ? $scope.search.t1 : 0,
t2: $scope.search.t2 ? $scope.search.t2 : 0,
breakdown: $scope.search.breakdown ? $scope.search.breakdown :
"dayofmonth",
graphevents: $scope.search.graphevents ?
parseInt($scope.search.graphevents) : 0,
graphstatetypes: $scope.search.graphstatetypes ?
parseInt($scope.search.graphstatetypes) : 3,
assumestateretention: $scope.search.assumestateretention ?
$scope.search.assumestateretention : false,
initialstateslogged: $scope.search.initialstateslogged ?
$scope.search.initialstateslogged : false,
ignorerepeatedstates: $scope.search.ignorerepeatedstates ?
$scope.search.ignorerepeatedstates : false
};
// Reload index - increment to cause nagios-histogram to reload
$scope.reload = 0;
// Application state variables
$scope.formDisplayed = false;
// Decoration-related variables
$scope.lastUpdate = "none";
var notBlank = function(value) {
return value != undefined && value != "";
};
// Do we have everything necessary to build a histogram?
$scope.canBuildHistogram = function() {
if ($scope.params.reporttype == "services" ||
(notBlank($scope.params.host) &&
notBlank($scope.params.service))) {
if ((($scope.params.timeperiod != "") ||
(($scope.params.t1 != 0) &&
($scope.params.t2 != 0)))) {
$scope.params.reporttype = "services";
return true;
}
return false;
}
else if ($scope.params.reporttype == "hosts" ||
notBlank($scope.params.host)) {
if ((($scope.params.timeperiod != "") ||
(($scope.params.t1 != 0) &&
($scope.params.t2 != 0)))) {
$scope.params.reporttype = "hosts";
return true;
}
return false;
}
return false;
};
$scope.displayForm = function(size) {
$scope.formDisplayed = true;
var modalInstance = $modal.open({
templateUrl: 'histogram-form.html',
controller: 'histogramFormCtrl',
size: size,
resolve: {
params: function () {
return $scope.params;
}
}
});
modalInstance.result.then(function(params) {
$scope.formDisplayed = false;
$scope.params = params;
$scope.reload++;
},
function(reason) {
$scope.formDisplayed = false;
});
};
if(!$scope.canBuildHistogram()) {
$scope.displayForm();
}
$scope.infoBoxTitle = function() {
switch ($scope.params.reporttype) {
case "hosts":
return "Host Alert Histogram";
break;
case "services":
return "Service Alert Histogram";
break;
default:
return "Alert Histogram";
break;
}
};
});