nitweb: split mentity module into views
[nit.git] / share / nitweb / javascripts / entities.js
index 762b8fd..352c7e4 100644 (file)
        angular
                .module('entities', ['ngSanitize', 'ui'])
 
+               /* Router */
+
                .config(function($stateProvider, $locationProvider) {
                        $stateProvider
                                .state('doc', {
                                        url: '/doc/:id',
-                                       templateUrl: 'views/doc.html',
-                                       controller: 'EntityCtrl',
-                                       controllerAs: 'entityCtrl',
+                                       templateUrl: 'views/doc/index.html',
+                                       resolve: {
+                                               mentity: function(Model, $q, $stateParams, $state) {
+                                                       var d = $q.defer();
+                                                       Model.loadEntity($stateParams.id, d.resolve,
+                                                               function() {
+                                                                       $state.go('404', null, { location: false })
+                                                               });
+                                                       return d.promise;
+                                               }
+                                       },
+                                       controller: function(mentity) {
+                                               this.mentity = mentity;
+                                       },
+                                       controllerAs: 'vm',
+                                       abstract: true
+                               })
+                               .state('doc.entity', {
+                                       url: '',
+                                       templateUrl: 'views/doc/entity.html',
+                                       controller: function(mentity) {
+                                               this.mentity = mentity;
+                                       },
+                                       controllerAs: 'vm',
+                                       abstract: true
+                               })
+                               .state('doc.entity.doc', {
+                                       url: '',
+                                       templateUrl: 'views/doc/doc.html',
+                                       controller: function(mentity) {
+                                               this.mentity = mentity;
+                                       },
+                                       controllerAs: 'vm',
+                               })
+                               .state('doc.entity.graph', {
+                                       url: '/graph',
+                                       templateUrl: 'views/doc/graph.html',
+                                       resolve: {
+                                               graph: function(Model, $q, $stateParams, $state) {
+                                                       var d = $q.defer();
+                                                       Model.loadEntityGraph($stateParams.id, d.resolve,
+                                                               function() {
+                                                                       $state.go('404', null, { location: false })
+                                                               });
+                                                       return d.promise;
+                                               }
+                                       },
+                                       controller: function(graph, $sce) {
+                                               this.graph = $sce.trustAsHtml(graph);
+                                       },
+                                       controllerAs: 'vm',
+                               })
+                               .state('doc.entity.metrics', {
+                                       url: '/metrics',
+                                       templateUrl: 'views/doc/metrics.html',
+                                       resolve: {
+                                               metrics: function(Metrics, $q, $stateParams, $state) {
+                                                       var d = $q.defer();
+                                                       Metrics.loadStructuralMetrics($stateParams.id, d.resolve,
+                                                               function() {
+                                                                       $state.go('404', null, { location: false })
+                                                               });
+                                                       return d.promise;
+                                               }
+                                       },
+                                       controller: function(mentity, metrics) {
+                                               this.mentity = mentity;
+                                               this.metrics = metrics;
+                                       },
+                                       controllerAs: 'vm',
+                               })
+                               .state('doc.entity.code', {
+                                       url: '/code',
+                                       templateUrl: 'views/doc/code.html',
+                                       resolve: {
+                                               code: function(Model, $q, $stateParams, $state) {
+                                                       var d = $q.defer();
+                                                       Model.loadEntityCode($stateParams.id, d.resolve,
+                                                               function() {
+                                                                       $state.go('404', null, { location: false })
+                                                               });
+                                                       return d.promise;
+                                               }
+                                       },
+                                       controller: function(mentity, code) {
+                                               this.mentity = mentity;
+                                               this.code = code;
+                                       },
+                                       controllerAs: 'vm',
+                               })
+                               .state('doc.entity.defs', {
+                                       url: '/defs',
+                                       templateUrl: 'views/doc/defs.html',
+                                       resolve: {
+                                               defs: function(Model, $q, $stateParams, $state) {
+                                                       var d = $q.defer();
+                                                       Model.loadEntityDefs($stateParams.id, d.resolve,
+                                                               function() {
+                                                                       $state.go('404', null, { location: false })
+                                                               });
+                                                       return d.promise;
+                                               }
+                                       },
+                                       controller: function(mentity, defs) {
+                                               this.mentity = mentity;
+                                               this.defs = defs;
+                                       },
+                                       controllerAs: 'vm',
+                               })
+                               .state('doc.entity.lin', {
+                                       url: '/lin',
+                                       templateUrl: 'views/doc/lin.html',
+                                       resolve: {
+                                               lin: function(Model, $q, $stateParams, $state) {
+                                                       var d = $q.defer();
+                                                       Model.loadEntityLinearization($stateParams.id, d.resolve,
+                                                               function() {
+                                                                       $state.go('404', null, { location: false })
+                                                               });
+                                                       return d.promise;
+                                               }
+                                       },
+                                       controller: function(mentity, lin) {
+                                               this.mentity = mentity;
+                                               this.lin = lin;
+                                       },
+                                       controllerAs: 'vm',
+                               })
+                               .state('doc.entity.all', {
+                                       url: '/all',
+                                       templateUrl: 'views/doc/all.html',
+                                       controller: function(mentity) {
+                                               this.mentity = mentity;
+                                       },
+                                       controllerAs: 'vm',
                                })
                })
 
+               /* Model */
+
                .factory('Model', [ '$http', function($http) {
                        return {
 
                        };
                }])
 
-               .controller('EntityCtrl', ['Model', 'Metrics', 'Feedback', '$stateParams', '$scope', '$sce', function(Model, Metrics, Feedback, $stateParams, $scope, $sce) {
-                       $scope.entityId = $stateParams.id;
-
-                       this.loadEntityLinearization = function() {
-                               Model.loadEntityLinearization($stateParams.id,
-                                       function(data) {
-                                               $scope.linearization = data;
-                                       }, function(err) {
-                                               $scope.error = err;
-                                       });
-                       };
-
-                       this.loadEntityDefs = function() {
-                               Model.loadEntityDefs($stateParams.id,
-                                       function(data) {
-                                               $scope.defs = data;
-                                       }, function(err) {
-                                               $scope.error = err;
-                                       });
-                       };
-
-                       this.loadEntityCode = function() {
-                               Model.loadEntityCode($stateParams.id,
-                                       function(data) {
-                                               $scope.code = data;
-                                       }, function(err) {
-                                               $scope.code = err;
-                                       });
-                       };
-
-                       this.loadEntityGraph = function(e) {
-                               Model.loadEntityGraph($stateParams.id,
-                                       function(data) {
-                                               $scope.graph = $sce.trustAsHtml(data);
-                                       }, function(err) {
-                                               $scope.error = err;
-                                       });
-                       };
-
-                       this.loadStructuralMetrics = function() {
-                               Metrics.loadStructuralMetrics($stateParams.id,
-                                       function(data) {
-                                               $scope.metrics = data;
-                                       }, function(message, status) {
-                                               $scope.error = {message: message, status: status};
-                                       });
-                       };
-
-                       Model.loadEntity($stateParams.id,
-                               function(data) {
-                                       $scope.mentity = data;
-                               }, function(message, status) {
-                                       $scope.error = {message: message, status: status};
-                               });
-               }])
+               /* Directives */
 
                .directive('entityLink', function() {
                        return {