X-Git-Url: http://nitlanguage.org diff --git a/share/nitweb/javascripts/entities.js b/share/nitweb/javascripts/entities.js index 820af42..9eefc9f 100644 --- a/share/nitweb/javascripts/entities.js +++ b/share/nitweb/javascripts/entities.js @@ -16,7 +16,43 @@ (function() { angular - .module('entities', ['model', 'ui']) + .module('entities', ['ui', 'model']) + + .controller('EntityCtrl', ['Model', '$routeParams', '$scope', function(Model, $routeParams, $scope) { + this.loadEntityLinearization = function() { + Model.loadEntityLinearization($routeParams.id, + function(data) { + $scope.linearization = data; + }, function(err) { + $scope.error = err; + }); + }; + + this.loadEntityDefs = function() { + Model.loadEntityDefs($routeParams.id, + function(data) { + $scope.defs = data; + }, function(err) { + $scope.error = err; + }); + }; + + this.loadEntityCode = function() { + Model.loadEntityCode($routeParams.id, + function(data) { + $scope.code = data; + }, function(err) { + $scope.code = err; + }); + }; + + Model.loadEntity($routeParams.id, + function(data) { + $scope.mentity = data; + }, function(err) { + $scope.error = err; + }); + }]) .directive('entityLink', function() { return { @@ -47,4 +83,110 @@ templateUrl: '/directives/entity/signature.html' }; }) + + .directive('entityTag', function() { + return { + restrict: 'E', + scope: { + mentity: '=' + }, + replace: true, + templateUrl: '/directives/entity/tag.html' + }; + }) + + .directive('entityLocation', function() { + return { + restrict: 'E', + scope: { + mentity: '=' + }, + templateUrl: '/directives/entity/location.html' + }; + }) + + .directive('entityCard', function() { + return { + restrict: 'E', + scope: { + mentity: '=' + }, + replace: true, + templateUrl: '/directives/entity/card.html' + }; + }) + + .directive('entityList', function() { + return { + restrict: 'E', + scope: { + listEntities: '=', + listId: '@', + listTitle: '@', + listObjectFilter: '=', + }, + templateUrl: '/directives/entity/list.html', + link: function ($scope, element, attrs) { + $scope.showFilters = false; + if(!$scope.listObjectFilter) { + $scope.listObjectFilter = {}; + } + if(!$scope.visibilityFilter) { + $scope.visibilityFilter = { + public: true, + protected: true, + private: false + }; + } + $scope.toggleFilters = function() { + $scope.showFilters = !$scope.showFilters; + }; + } + }; + }) + + .directive('entityLinearization', function() { + return { + restrict: 'E', + scope: { + listEntities: '=', + listTitle: '@', + listFocus: '=' + }, + templateUrl: '/directives/entity/linearization.html' + }; + }) + + .directive('entityDef', ['Model', function(Model, Code) { + return { + restrict: 'E', + scope: { + definition: '=', + focus: '=' + }, + templateUrl: '/directives/entity/defcard.html', + link: function ($scope, element, attrs) { + $scope.codeId = 'code_' + $scope.definition.full_name.replace(/[^a-zA-Z0-9]/g, '_'); + $scope.loadCardCode = function() { + if(!$scope.code) { + Model.loadEntityCode($scope.definition.full_name, + function(data) { + $scope.code = data; + setTimeout(function() { // smooth collapse + $('#' + $scope.codeId).collapse('show') + }, 1); + }, function(err) { + $scope.code = err; + }); + } else { + if($('#' + $scope.codeId).hasClass('in')) { + $('#' + $scope.codeId).collapse('hide'); + } else { + $('#' + $scope.codeId).collapse('show'); + } + } + }; + } + }; + }]) })();