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

99 lines
2.4 KiB
JavaScript

angular.module("nagiosDecorations", [])
.config(function($locationProvider) {
$locationProvider.html5Mode({
enabled: true,
requireBase: false
})
})
.filter("uriComponentEncode", function () {
return function (component) {
return encodeURIComponent(component);
}
})
.directive("infoBox", function() {
return {
templateUrl: "infobox.html",
restrict: "AE",
scope: {
cgiurl: "@cgiurl",
decorationTitle: "@decorationTitle",
updateIntervalValue: "@updateInterval",
lastUpdate: "=lastUpdate",
initialState: "@initialState",
collapsable: "@collapsable",
includePartial: "@includePartial"
},
controller: function($scope, $element, $attrs, $http) {
$scope.updateInterval = parseInt($scope.updateIntervalValue);
$scope.isPermanentlyCollapsed = $scope.isCollapsed =
$scope.initialState == "collapsed";
$scope.isCollapsable = $scope.collapsable == "true";
$scope.haveProgramStatus = false;
$scope.$watch("cgiurl", function() {
getStatus();
});
var getStatus = function() {
var parameters = {
query: "programstatus"
};
var getConfig = {
params: parameters,
withCredentials: true
};
// Send the AJAX query
$http.get($scope.cgiurl + "statusjson.cgi", getConfig)
.error(function(err) {
console.warn(err);
})
.success(function(json) {
$scope.haveProgramStatus = true;
$scope.json = json;
});
};
getStatus();
$scope.notificationsDisabled = function() {
return $scope.haveProgramStatus &&
!$scope.json.data.programstatus.enable_notifications;
};
$scope.serviceChecksDisabled = function() {
return $scope.haveProgramStatus &&
!$scope.json.data.programstatus.execute_service_checks;
};
$scope.toggleDisplay = function() {
$scope.isPermanentlyCollapsed =
!$scope.isPermanentlyCollapsed;
if (!$scope.isMousedOver) {
$scope.isCollapsed = $scope.isPermanentlyCollapsed;
}
};
if ($scope.isCollapsable) {
$element.on("mouseover", function() {
$scope.isMousedOver = true;
$scope.isCollapsed = false;
$scope.$apply("isCollapsed");
});
$element.on("mouseout", function() {
$scope.isMousedOver = false;
$scope.isCollapsed = $scope.isPermanentlyCollapsed;
$scope.$apply("isCollapsed");
});
}
}
};
});