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

193 lines
4.5 KiB
JavaScript

angular.module("trendsApp")
.controller("trendsFormCtrl", function($scope, $modalInstance, $http,
nagiosTimeService, params) {
$scope.params = params;
$scope.hostlist = [];
$scope.servicelist = [];
$scope.timeperiodlist = nagiosTimeService.timeperiodlist();
$scope.initialAssumedStates = {
"": [],
"hosts": [
{ value: "", label: "Unspecified" },
{ value: "current", label: "Current State" },
{ value: "up", label: "Host Up" },
{ value: "down", label: "Host Down" },
{ value: "unreachable", label: "Host Unreachable" }
],
"services": [
{ value: "", label: "Unspecified" },
{ value: "current", label: "Current State" },
{ value: "ok", label: "Service Ok" },
{ value: "warning", label: "Service Warning" },
{ value: "unknown", label: "Service Unknown" },
{ value: "critical", label: "Service Critical" },
]
};
if (!$scope.params.hasOwnProperty("t1")) {
$scope.params.t1 = 0;
}
if (!$scope.params.hasOwnProperty("t2")) {
$scope.params.t2 = 0;
}
$scope.apply = function () {
if ($scope.params.timeperiod != "custom") {
var times = nagiosTimeService.calculateReportTimes(new Date(),
$scope.params.timeperiod);
$scope.params.t1 = times.start.getTime() / 1000;
$scope.params.t2 = times.end.getTime() / 1000;
}
$modalInstance.close($scope.params);
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
$scope.showHost = function() {
return $scope.params.reporttype != "";
};
$scope.showService = function() {
return $scope.params.reporttype == "services";
};
$scope.showTimeperiod = function() {
switch ($scope.params.reporttype) {
case "":
return false;
break;
case "hosts":
return $scope.params.host != "";
break;
case "services":
return $scope.params.host != "" &&
$scope.params.service != "";
break;
}
};
$scope.showDates = function() {
return $scope.params.timeperiod == "custom";
};
var isTimeperiodValid = function() {
switch ($scope.params.timeperiod) {
case "":
return false;
break;
case "custom":
if ($scope.params.t1 == 0 ||
$scope.params.t1 == "Invalid Date" ||
$scope.params.t2 == 0 ||
$scope.params.t2 == "Invalid Date") {
return false;
}
else {
return true;
}
break;
default:
return true;
break;
}
};
$scope.disableApply = function() {
switch ($scope.params.reporttype) {
case "":
return true;
break;
case "hosts":
if ($scope.params.host == "") {
return true;
}
return !isTimeperiodValid();
break;
case "services":
if ($scope.params.host == "" ||
$scope.params.service == "") {
return true;
}
return !isTimeperiodValid();
break;
}
}
var getHostList = function() {
var url = $scope.params.cgiurl +
"/objectjson.cgi?query=hostlist";
$http.get(url, { withCredentials: true})
.success(function(results) {
$scope.hostlist = results.data.hostlist;
})
.error(function(err) {
console.log(err);
});
};
var getServiceList = function(hostname) {
if (hostname != "") {
var url = $scope.params.cgiurl +
"/objectjson.cgi?query=servicelist&hostname=" +
hostname;
$http.get(url, { withCredentials: true})
.success(function(results) {
$scope.servicelist =
results.data.servicelist[hostname];
})
.error(function(err) {
console.log(err);
});
}
};
$scope.onBlurCgiurl = function(evt) {
getHostList();
};
$scope.$watch('params.reporttype', function(newValue) {
if (newValue != "") {
getHostList();
}
});
$scope.$watch('params.host', function(newValue) {
if (newValue != "") {
getServiceList($scope.params.host);
}
});
$scope.$watch("params.timeperiod", function(newValue) {
if (newValue != null || newValue != "custom") {
var times = nagiosTimeService.calculateReportTimes(new Date, newValue);
$scope.params.t1 = times.start / 1000;
$scope.params.t2 = times.start / 1000;
}
});
$scope.$watch('params.startDate', function(newValue) {
if (newValue != undefined) {
time = new Date(newValue);
if (time != "Invalid Date") {
$scope.params.t1 = time.getTime() / 1000;
}
}
});
$scope.$watch('params.endDate', function(newValue) {
if (newValue != undefined) {
time = new Date(newValue);
if (time != "Invalid Date") {
$scope.params.t2 = time.getTime() / 1000;
}
}
});
});