blob: a2ced03777513c1301bed50cc1e6f28964c96f31 [file] [log] [blame]
window.angular && (function(angular) {
'use strict';
angular.module('app.common.directives')
.directive('appNavigation', function() {
return {
'restrict': 'E',
'template': require('./app-navigation.html'),
'scope': {'path': '=', 'showNavigation': '='},
'controller': [
'$scope', '$location', 'dataService',
function($scope, $location, dataService) {
$scope.showHealthMenu = false;
$scope.showControlMenu = false;
$scope.showConfigMenu = false;
$scope.showAccessMenu = false;
$scope.dataService = dataService;
$scope.change = function(firstLevel) {
switch (firstLevel) {
case 'server-health':
$scope.showHealthMenu = !$scope.showHealthMenu;
break;
case 'server-control':
$scope.showControlMenu = !$scope.showControlMenu;
break;
case 'configuration':
$scope.showConfigMenu = !$scope.showConfigMenu;
break;
case 'access-control':
$scope.showAccessMenu = !$scope.showAccessMenu;
break;
case 'overview':
$location.url('/overview/server');
break;
};
};
$scope.$watch('path', function() {
var urlRoot = $location.path().split('/')[1];
if (urlRoot != '') {
$scope.firstLevel = urlRoot;
} else {
$scope.firstLevel = 'overview';
}
$scope.showSubMenu = true;
});
$scope.$watch('showNavigation', function() {
var urlRoot = $location.path().split('/')[1];
if (urlRoot != '') {
$scope.firstLevel = urlRoot;
} else {
$scope.firstLevel = 'overview';
}
});
}
],
link: function(scope, element, attributes) {
var rawNavElement = angular.element(element)[0];
angular.element(window.document).bind('click', function(event) {
if (rawNavElement.contains(event.target)) return;
if (scope.showSubMenu) {
scope.$apply(function() {
scope.showSubMenu = true;
});
}
});
}
};
});
})(window.angular);