132 lines
3.6 KiB
JavaScript
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;
|
|
}
|
|
};
|
|
|
|
});
|