angular.module("core-ui", []) .directive('corLogBox', function() { var directiveDefinitionObject = { priority: 1, templateUrl: '/static/directives/cor-log-box.html', replace: true, transclude: true, restrict: 'C', scope: { 'logs': '=logs' }, controller: function($rootScope, $scope, $element, $timeout) { $scope.hasNewLogs = false; var scrollHandlerBound = false; var isAnimatedScrolling = false; var isScrollBottom = true; var scrollHandler = function() { if (isAnimatedScrolling) { return; } var element = $element.find("#co-log-viewer")[0]; isScrollBottom = element.scrollHeight - element.scrollTop === element.clientHeight; if (isScrollBottom) { $scope.hasNewLogs = false; } }; var animateComplete = function() { isAnimatedScrolling = false; }; $scope.moveToBottom = function() { $scope.hasNewLogs = false; isAnimatedScrolling = true; isScrollBottom = true; $element.find("#co-log-viewer").animate( { scrollTop: $element.find("#co-log-content").height() }, "slow", null, animateComplete); }; $scope.$watch('logs', function(value, oldValue) { if (!value) { return; } $timeout(function() { if (!scrollHandlerBound) { $element.find("#co-log-viewer").on('scroll', scrollHandler); scrollHandlerBound = true; } if (!isScrollBottom) { $scope.hasNewLogs = true; return; } $scope.moveToBottom(); }, 500); }); } }; return directiveDefinitionObject; }) .directive('corOptionsMenu', function() { var directiveDefinitionObject = { priority: 1, templateUrl: '/static/directives/cor-options-menu.html', replace: true, transclude: true, restrict: 'C', scope: {}, controller: function($rootScope, $scope, $element) { } }; return directiveDefinitionObject; }) .directive('corOption', function() { var directiveDefinitionObject = { priority: 1, templateUrl: '/static/directives/cor-option.html', replace: true, transclude: true, restrict: 'C', scope: { 'optionClick': '&optionClick' }, controller: function($rootScope, $scope, $element) { } }; return directiveDefinitionObject; }) .directive('corTitle', function() { var directiveDefinitionObject = { priority: 1, templateUrl: '/static/directives/cor-title.html', replace: true, transclude: true, restrict: 'C', scope: {}, controller: function($rootScope, $scope, $element) { } }; return directiveDefinitionObject; }) .directive('corTitleContent', function() { var directiveDefinitionObject = { priority: 1, templateUrl: '/static/directives/cor-title-content.html', replace: true, transclude: true, restrict: 'C', scope: {}, controller: function($rootScope, $scope, $element) { } }; return directiveDefinitionObject; }) .directive('corTitleLink', function() { var directiveDefinitionObject = { priority: 1, templateUrl: '/static/directives/cor-title-link.html', replace: true, transclude: true, restrict: 'C', scope: {}, controller: function($rootScope, $scope, $element) { } }; return directiveDefinitionObject; }) .directive('corTabPanel', function() { var directiveDefinitionObject = { priority: 1, templateUrl: '/static/directives/cor-tab-panel.html', replace: true, transclude: true, restrict: 'C', scope: {}, controller: function($rootScope, $scope, $element) { } }; return directiveDefinitionObject; }) .directive('corTabContent', function() { var directiveDefinitionObject = { priority: 2, templateUrl: '/static/directives/cor-tab-content.html', replace: true, transclude: true, restrict: 'C', scope: {}, controller: function($rootScope, $scope, $element) { } }; return directiveDefinitionObject; }) .directive('corTabs', function() { var directiveDefinitionObject = { priority: 3, templateUrl: '/static/directives/cor-tabs.html', replace: true, transclude: true, restrict: 'C', scope: {}, controller: function($rootScope, $scope, $element) { } }; return directiveDefinitionObject; }) .directive('corTab', function() { var directiveDefinitionObject = { priority: 4, templateUrl: '/static/directives/cor-tab.html', replace: true, transclude: true, restrict: 'C', scope: { 'tabActive': '@tabActive', 'tabTitle': '@tabTitle', 'tabTarget': '@tabTarget', 'tabInit': '&tabInit' }, controller: function($rootScope, $scope, $element) { } }; return directiveDefinitionObject; });