nitweb: migrate frontend to new json/commands
authorAlexandre Terrasa <alexandre@moz-code.org>
Wed, 25 Oct 2017 19:03:22 +0000 (15:03 -0400)
committerAlexandre Terrasa <alexandre@moz-code.org>
Mon, 18 Dec 2017 18:59:12 +0000 (13:59 -0500)
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

16 files changed:
share/nitweb/directives/entity/card.html
share/nitweb/directives/entity/defcard.html
share/nitweb/directives/entity/link.html
share/nitweb/directives/entity/location.html
share/nitweb/directives/entity/signature.html
share/nitweb/directives/ui/pagination.html
share/nitweb/javascripts/catalog.js
share/nitweb/javascripts/entities.js
share/nitweb/javascripts/ui.js
share/nitweb/views/catalog/index.html
share/nitweb/views/catalog/tag.html
share/nitweb/views/doc/code.html
share/nitweb/views/doc/defs.html
share/nitweb/views/doc/doc.html
share/nitweb/views/doc/graph.html
share/nitweb/views/doc/lin.html

index 18675a0..9b295be 100644 (file)
@@ -6,29 +6,28 @@
                <h5 class='card-heading'>
                        <entity-signature mentity='mentity' />
                        <small ng-if='mentity.class_name == "MPackage"'>
-                               <span ng-repeat='tag in mentity.metadata.tags'>
+                               <span ng-repeat='tag in mentity.tags'>
                                        <a ui-sref='tag({id: tag})' class='text-muted'>{{tag}}</a>
                                        <span ng-if='!$last'>,</span>
                                </span>
                        </small>
                </h5>
-               <span class='synopsis' ng-bind-html='mentity.mdoc.html_synopsis' />
+               <span class='synopsis' ng-bind-html='mentity.html_synopsis' />
        </div>
        <div class='card-body' ng-if='mentity.class_name != "MPackage"'>
                <h5 class='card-heading'>
                        <entity-signature mentity='mentity' />
                </h5>
-               <span class='synopsis' ng-bind-html='mentity.mdoc.html_synopsis' />
+               <span class='synopsis' ng-bind-html='mentity.html_synopsis' />
        </div>
        <div class='card-right' ng-if='mentity.class_name == "MPackage"' style='width: 25%'>
-               <span ng-repeat='maintainer in mentity.metadata.maintainers'>
-                       <img class='avatar' src='https://secure.gravatar.com/avatar/{{maintainer.gravatar}}?size=14&amp;default=retro' />
-                       <a ui-sref='person({id: maintainer.name})'>{{maintainer.name}}</a>
+                       <img class='avatar' src='https://secure.gravatar.com/avatar/{{mentity.maintainer.gravatar}}?size=14&amp;default=retro' />
+                       <a ui-sref='person({id: mentity.maintainer.name})'>{{mentity.maintainer.name}}</a>
                </span>
                <br>
-               <span ng-if='mentity.metadata.license'>
+               <span ng-if='mentity.license'>
                        <span class='text-muted'>
-                               <a href='http://opensource.org/licenses/{{mentity.license}}' class='text-muted'>{{mentity.metadata.license}}</a>
+                               <a href='http://opensource.org/licenses/{{mentity.license}}' class='text-muted'>{{mentity.license}}</a>
                        </span>
                </span>
        </div>
index 2d14d83..cff100d 100644 (file)
@@ -19,8 +19,8 @@
                        </div>
                </h5>
                <div id='{{codeId}}' class='collapse'>
-                       <pre ng-bind-html='code' />
-                       <entity-location mentity='definition' />
+                       <pre ng-bind-html='code.code' />
+                       <entity-location loc='code.location' />
                </div>
        </div>
 </div>
index 740ea8b..60b9348 100644 (file)
@@ -1,3 +1 @@
-<span>
-       <a ng-href='{{mentity.web_url}}'>{{mentity.name}}</a>
-</span>
+<span><a ng-href='{{mentity.web_url}}' title='{{mentity.synopsis}}'>{{mentity.name}}</a></span>
index 05f8ccb..8e058fc 100644 (file)
@@ -1,4 +1,3 @@
-<span ng-if='mentity.location' class='text-muted'>
-       {{mentity.location.file}}
-       <span ng-if='mentity.location.line_start'>:{{mentity.location.line_start}}</span>
+<span class='text-muted'>
+       {{vm.loc.file}}<span ng-if='vm.loc.line_start'>:{{vm.loc.line_start}}</span>
 </span>
index f3f2dc6..28de5e7 100644 (file)
@@ -14,7 +14,7 @@
                                        <span>: </span>
                                        <entity-signature mentity='mparam.mtype' />
                                </span>
-                               <span ng-if='$middle'>, </span>
+                               <span ng-if='!$last'>, </span>
                        </span>
                        <span>]</span>
                </span>
@@ -22,7 +22,7 @@
        <span ng-if='mentity.msignature'>
                <span ng-if='mentity.msignature.arity > 0'>
                        <span>(</span>
-                       <span ng-repeat='mparam in mentity.msignature.mparams'>
+                       <span ng-repeat='mparam in mentity.msignature.mparameters'>
                                <span>
                                        <span>{{mparam.name}}</span>
                                        <span ng-if='mentity.is_intro !== false'>
index 4af87d2..3b7d62d 100644 (file)
@@ -1,14 +1,16 @@
 <nav>
-       <ul class='pagination' ng-if='pagination.pagination.max > 1'>
-               <li ng-class='{disabled: pagination.pagination.page <= 1}'>
-                       <a ng-click='pagination.changePage(pagination.pagination.page - 1, pagination.pagination.limit)'><span>&laquo;</span></a>
+       <ul class='pagination' ng-if='vm.pagination.max > 1'>
+               <li ng-class='{disabled: vm.pagination.page <= 1}'>
+                       <a ng-click='vm.changePage(vm.pagination.page - 1, vm.pagination.limit)'>
+                               <span>&laquo;</span></a>
                </li>
-               <li ng-repeat='page in pagination.pages'
-                       ng-class='{disabled: pagination.pagination.page == page}'>
-                       <a ng-click='pagination.changePage(page, pagination.pagination.limit)'>{{page}}</a>
+               <li ng-repeat='page in vm.pages'
+                       ng-class='{disabled: vm.pagination.page == page}'>
+                       <a ng-click='vm.changePage(page, vm.pagination.limit)'>{{page}}</a>
                </li>
-               <li ng-class='{disabled: pagination.pagination.page >= pagination.pagination.max}'>
-                       <a ng-click='pagination.changePage(pagination.pagination.page + 1, pagination.pagination.limit)'><span>&raquo;</span></a>
+               <li ng-class='{disabled: vm.pagination.page >= vm.pagination.max}'>
+                       <a ng-click='vm.changePage(vm.pagination.page + 1, vm.pagination.limit)'>
+                               <span>&raquo;</span></a>
                </li>
        </ul>
 </nav>
index 2667db3..9926712 100644 (file)
                                        .success(cb)
                                        .error(cbErr);
                        },
-                       packages: function(p, n, cb, cbErr) {
-                               $http.get('/api/catalog/packages?p=' + p + '&n=' + n)
+                       packages: function(p, l, cb, cbErr) {
+                               $http.get('/api/catalog/packages?p=' + p + '&l=' + l)
                                        .success(cb)
                                        .error(cbErr);
                        },
                                        .success(cb)
                                        .error(cbErr);
                        },
-                       personMaintaining: function(id, p, n, cb, cbErr) {
-                               $http.get('/api/catalog/person/' + id + '/maintaining?p=' + p + '&n=' + n)
+                       personMaintaining: function(id, p, l, cb, cbErr) {
+                               $http.get('/api/catalog/person/' + id + '/maintaining?p=' + p + '&l=' + l)
                                        .success(cb)
                                        .error(cbErr);
                        },
-                       personContributing: function(id, p, n, cb, cbErr) {
-                               $http.get('/api/catalog/person/' + id + '/contributing?p=' + p + '&n=' + n)
+                       personContributing: function(id, p, l, cb, cbErr) {
+                               $http.get('/api/catalog/person/' + id + '/contributing?p=' + p + '&l=' + l)
                                        .success(cb)
                                        .error(cbErr);
                        },
-                       tag: function(id, p, n, cb, cbErr) {
-                               $http.get('/api/catalog/tag/' + id + '?p=' + p + '&n=' + n)
+                       tag: function(id, p, l, cb, cbErr) {
+                               $http.get('/api/catalog/tag/' + id + '?p=' + p + '&l=' + l)
                                        .success(cb)
                                        .error(cbErr);
                        }
                vm.packages = packages;
                vm.tags = tags;
                vm.stats = stats;
-
                $scope.$on('change-page', function(e, page, limit) {
                        $state.go('catalog', {p: page, l: limit});
                })
                vm.contributing = contributing;
 
                var p1 = $stateParams.p1 ? $stateParams.p1 : 1;
-               var n1 = $stateParams.n1 ? $stateParams.n1 : 10;
+               var l1 = $stateParams.l1 ? $stateParams.l1 : 10;
                var p2 = $stateParams.p2 ? $stateParams.p2 : 1;
-               var n2 = $stateParams.n2 ? $stateParams.n2 : 10;
+               var l2 = $stateParams.l2 ? $stateParams.l2 : 10;
 
                $scope.$on('change-page1', function(e, page, limit) {
-                       $state.go('person', {id: $stateParams.id, p1: page, n1: limit, p2: p2, n2: n2});
+                       $state.go('person', {id: $stateParams.id, p1: page, l1: limit, p2: p2, l2: l2});
                })
 
                $scope.$on('change-page2', function(e, page, limit) {
-                       $state.go('person', {id: $stateParams.id, p1: p1, n1: n1, p2: page, n2: limit});
+                       $state.go('person', {id: $stateParams.id, p1: p1, l1: l1, p2: page, l2: limit});
                })
        })
 
        .controller('TagCtrl', function($state, $scope, tag) {
                var vm = this;
                vm.tag = tag;
-
                $scope.$on('change-page', function(e, page, limit) {
                        $state.go('tag', {id: vm.tag.tag, p: page, l: limit});
                })
index 545e487..2ca4e04 100644 (file)
                                                                        $state.go('404', null, { location: false })
                                                                });
                                                        return d.promise;
+                                               },
+                                               parents: function(Model, $q, $stateParams, $state) {
+                                                       var d = $q.defer();
+                                                       Model.loadEntityParents($stateParams.id, d.resolve,
+                                                               function() {
+                                                                       $state.go('404', null, { location: false })
+                                                               });
+                                                       return d.promise;
+                                               },
+                                               children: function(Model, $q, $stateParams, $state) {
+                                                       var d = $q.defer();
+                                                       Model.loadEntityChildren($stateParams.id, d.resolve,
+                                                               function() {
+                                                                       $state.go('404', null, { location: false })
+                                                               });
+                                                       return d.promise;
+                                               },
+                                               intros: function(Model, $q, $stateParams, $state) {
+                                                       var d = $q.defer();
+                                                       Model.loadEntityIntros($stateParams.id, d.resolve,
+                                                               function() {
+                                                                       $state.go('404', null, { location: false })
+                                                               });
+                                                       return d.promise;
+                                               },
+                                               redefs: function(Model, $q, $stateParams, $state) {
+                                                       var d = $q.defer();
+                                                       Model.loadEntityRedefs($stateParams.id, d.resolve,
+                                                               function() {
+                                                                       $state.go('404', null, { location: false })
+                                                               });
+                                                       return d.promise;
+                                               },
+                                               meta: function(Model, $q, $stateParams, $state) {
+                                                       var d = $q.defer();
+                                                       Model.loadEntityMeta($stateParams.id, d.resolve,
+                                                               function() {
+                                                                       $state.go('404', null, { location: false })
+                                                               });
+                                                       return d.promise;
                                                }
                                        },
-                                       controller: function(mentity, doc) {
+                                       controller: function(mentity, doc, parents, children, intros, redefs, meta) {
                                                this.mentity = mentity;
                                                this.doc = doc;
+                                               this.parents = parents;
+                                               this.children = children;
+                                               this.intros = intros;
+                                               this.redefs = redefs;
+                                               this.meta = meta;
 
                                                this.date = function(date) {
                                                        return new Date(date);
                                                                });
                                                        return d.promise;
                                                },
-                                               inh: function(Model, $q, $stateParams, $state) {
+                                               ancestors: function(Model, $q, $stateParams, $state) {
                                                        var d = $q.defer();
-                                                       Model.loadEntityInh($stateParams.id, d.resolve,
+                                                       Model.loadEntityAncestors($stateParams.id, d.resolve,
                                                                function() {
                                                                        $state.go('404', null, { location: false })
                                                                });
                                                        return d.promise;
-                                               }
+                                               },
+                                               parents: function(Model, $q, $stateParams, $state) {
+                                                       var d = $q.defer();
+                                                       Model.loadEntityParents($stateParams.id, d.resolve,
+                                                               function() {
+                                                                       $state.go('404', null, { location: false })
+                                                               });
+                                                       return d.promise;
+                                               },
+                                               children: function(Model, $q, $stateParams, $state) {
+                                                       var d = $q.defer();
+                                                       Model.loadEntityChildren($stateParams.id, d.resolve,
+                                                               function() {
+                                                                       $state.go('404', null, { location: false })
+                                                               });
+                                                       return d.promise;
+                                               },
+                                               descendants: function(Model, $q, $stateParams, $state) {
+                                                       var d = $q.defer();
+                                                       Model.loadEntityDescendants($stateParams.id, d.resolve,
+                                                               function() {
+                                                                       $state.go('404', null, { location: false })
+                                                               });
+                                                       return d.promise;
+                                               },
                                        },
-                                       controller: function(inh, graph, $sce) {
-                                               this.graph = $sce.trustAsHtml(graph);
-                                               this.inh = inh;
+                                       controller: function(ancestors, parents, children, descendants, graph, $sce) {
+                                               this.graph = $sce.trustAsHtml(graph.graph);
+                                               this.ancestors = ancestors;
+                                               this.parents = parents;
+                                               this.children = children;
+                                               this.descendants = descendants;
                                        },
                                        controllerAs: 'vm',
                                })
                                        resolve: {
                                                lin: function(Model, $q, $stateParams, $state) {
                                                        var d = $q.defer();
-                                                       Model.loadEntityLinearization($stateParams.id, d.resolve,
+                                                       Model.loadEntityLin($stateParams.id, d.resolve,
                                                                function() {
                                                                        $state.go('404', null, { location: false })
                                                                });
                                        controller: function(mentity, lin, $scope, $location, $anchorScroll) {
                                                var vm = this;
                                                vm.focus = $location.hash() ?
-                                                       $location.hash() : mentity.intro.full_name;
+                                                       $location.hash() : lin.results[0].full_name;
                                                vm.mentity = mentity;
                                                vm.linearization = lin;
                                                setTimeout(function() {
                                                        return $location.hash();
                                                }, function (value) {
                                                        vm.focus = $location.hash() ?
-                                                               $location.hash() : mentity.intro.full_name;
+                                                               $location.hash() : lin.results[0].full_name;
                                                        $anchorScroll();
                                                });
                                        },
                                })
                                .state('doc.entity.all', {
                                        url: '/all',
-                                       templateUrl: 'views/doc/all.html',
-                                       controller: function(mentity) {
+                                       templateUrl: 'views/doc/defs.html',
+                                       resolve: {
+                                               defs: function(Model, $q, $stateParams, $state) {
+                                                       var d = $q.defer();
+                                                       Model.loadEntityAll($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',
                                })
                                },
 
                                loadEntityDoc: function(id, cb, cbErr) {
-                                       $http.get('/api/entity/' + id + '/doc')
+                                       $http.get('/api/doc/' + id + '?format=html')
                                                .success(cb)
                                                .error(cbErr);
                                },
 
-                               loadEntityLinearization: function(id, cb, cbErr) {
-                                       $http.get('/api/linearization/' + id)
+                               loadEntityLin: function(id, cb, cbErr) {
+                                       $http.get('/api/lin/' + id)
                                                .success(cb)
                                                .error(cbErr);
                                },
                                                .error(cbErr);
                                },
 
+                               loadEntityIntros: function(id, cb, cbErr) {
+                                       $http.get('/api/intros/' + id)
+                                               .success(cb)
+                                               .error(cbErr);
+                               },
+
+                               loadEntityRedefs: function(id, cb, cbErr) {
+                                       $http.get('/api/redefs/' + id)
+                                               .success(cb)
+                                               .error(cbErr);
+                               },
+
+                               loadEntityAll: function(id, cb, cbErr) {
+                                       $http.get('/api/all/' + id)
+                                               .success(cb)
+                                               .error(cbErr);
+                               },
+
                                loadEntityCode: function(id, cb, cbErr) {
-                                       $http.get('/api/code/' + id)
+                                       $http.get('/api/code/' + id + '?format=html')
                                                .success(cb)
                                                .error(cbErr);
                                },
 
-                               loadEntityGraph: function(id, cb, cbErr) {
-                                       $http.get('/api/graph/inheritance/' + id + '?cdepth=3')
+                               loadEntityAncestors: function(id, cb, cbErr) {
+                                       $http.get('/api/ancestors/' + id)
+                                               .success(cb)
+                                               .error(cbErr);
+                               },
+
+                               loadEntityParents: function(id, cb, cbErr) {
+                                       $http.get('/api/parents/' + id)
+                                               .success(cb)
+                                               .error(cbErr);
+                               },
+
+                               loadEntityChildren: function(id, cb, cbErr) {
+                                       $http.get('/api/children/' + id)
+                                               .success(cb)
+                                               .error(cbErr);
+                               },
+
+                               loadEntityDescendants: function(id, cb, cbErr) {
+                                       $http.get('/api/descendants/' + id)
+                                               .success(cb)
+                                               .error(cbErr);
+                               },
+
+                               loadEntityMeta: function(id, cb, cbErr) {
+                                       $http.get('/api/meta/' + id)
                                                .success(cb)
                                                .error(cbErr);
                                },
 
-                               loadEntityInh: function(id, cb, cbErr) {
-                                       $http.get('/api/inheritance/' + id)
+                               loadEntityGraph: function(id, cb, cbErr) {
+                                       $http.get('/api/graph/inheritance/' + id + '?format=svg&cdepth=3')
                                                .success(cb)
                                                .error(cbErr);
                                },
+
                                search: function(q, p, n, cb, cbErr) {
-                                       $http.get('/api/search?q=' + q + '&p=' + p + '&n=' + n)
+                                       $http.get('/api/search?q=' + q + '&p=' + p + '&l=' + n)
                                                .success(cb)
                                                .error(cbErr);
                                }
                                scope: {
                                        mentity: '='
                                },
+                               replace: true,
                                templateUrl: '/directives/entity/link.html'
                        };
                })
                .directive('entityLocation', function() {
                        return {
                                restrict: 'E',
-                               scope: {
-                                       mentity: '='
+                               replace: true,
+                               scope: {},
+                               bindToController: {
+                                       loc: '='
                                },
+                               controller: function() {},
+                               controllerAs: 'vm',
                                templateUrl: '/directives/entity/location.html'
                        };
                })
index 5327782..e3d13d7 100644 (file)
                        return {
                                restrict: 'E',
                                replace: true,
+                               scope: {},
                                bindToController: {
                                        pagination: '=',
                                        suffix: '=?'
                                controller: function($scope) {
                                        var vm = this;
 
-                                       $scope.$watch('pagination.pagination', function(pagination) {
+                                       $scope.$watch('vm.pagination', function(pagination) {
                                                if(!pagination) return;
                                                vm.computePages(pagination);
                                        })
                                                $scope.$emit('change-page' + suffix, page, limit);
                                        }
                                },
-                               controllerAs: 'pagination',
+                               controllerAs: 'vm',
                                templateUrl: 'directives/ui/pagination.html'
                        };
                })
index 2333a0a..c45e0dc 100644 (file)
@@ -29,7 +29,7 @@
                        <entity-card mentity='package' ng-repeat='package in vm.packages.results' />
                </div>
                <div class='container text-center' ng-if='vm.packages'>
-                       <ui-pagination pagination='vm.packages'/>
+                       <ui-pagination pagination='vm.packages' />
                </div>
        </div>
 </div>
index 6c0a37e..e4bc086 100644 (file)
@@ -1,16 +1,16 @@
 <div class='container'>
        <h1>
                {{vm.tag.tag}}
-               <small>{{vm.tag.packages.total}} packages</small>
+               <small>{{vm.tag.count}} packages</small>
        </h1>
        <hr/>
 
-       <div class='container-fluid no-padding' ng-if='vm.tag.packages.results.length > 0'>
+       <div class='container-fluid no-padding' ng-if='vm.tag.results.length > 0'>
                <div class='card-list'>
-                       <entity-card mentity='package' ng-repeat='package in vm.tag.packages.results' />
+                       <entity-card mentity='package' ng-repeat='package in vm.tag.results' />
                </div>
-               <div class='container text-center' ng-if='vm.tag.packages'>
-                       <ui-pagination pagination='vm.tag.packages'/>
+               <div class='container text-center' ng-if='vm.tag'>
+                       <ui-pagination pagination='vm.tag'/>
                </div>
        </div>
 </div>
index 48f4282..517bf47 100644 (file)
@@ -1,6 +1,6 @@
 <div class='card'>
        <div class='card-body'>
-               <pre ng-bind-html='vm.code' />
-               <entity-location mentity='vm.mentity' />
+               <pre ng-bind-html='vm.code.code' />
+               <entity-location loc='vm.code.location' />
        </div>
 </div>
index 7cd0ea2..17d9a92 100644 (file)
@@ -1,10 +1,13 @@
 <div>
        <entity-list list-title='Groups' ng-if='vm.mentity.class_name == "MPackage"'
-               list-entities='vm.defs' list-object-filter='{}' />
+               list-entities='vm.defs.results' list-object-filter='{}' />
 
        <entity-list list-title='Groups & Modules' ng-if='vm.mentity.class_name == "MGroup"'
-               list-entities='vm.defs' list-object-filter='{}' />
+               list-entities='vm.defs.results' list-object-filter='{}' />
 
        <entity-list list-title='Class definitions' ng-if='vm.mentity.class_name == "MModule"'
-               list-entities='vm.defs' list-object-filter='{}' />
+               list-entities='vm.defs.results' list-object-filter='{}' />
+
+       <entity-list list-title='All properties' ng-if='vm.mentity.class_name == "MClass"'
+               list-entities='vm.defs.results' list-object-filter='{}' />
 </div>
index eadcf37..d29b2cd 100644 (file)
@@ -7,32 +7,30 @@
        }'>
                <div class='card'>
                        <div class='card-body'>
-                               <div ng-if='vm.doc'>
+                               <div ng-if='vm.doc.documentation'>
                                        <div ng-bind-html='vm.doc.documentation'></div>
                                </div>
-                               <div ng-if='!vm.doc'>
+                               <div ng-if='!vm.doc.documentation'>
                                        <i class='text-muted'>No documentation for this entity.</i>
                                </div>
                        </div>
                </div>
 
-               <entity-list list-title='Introduced classes' list-entities='vm.mentity.intro_mclasses'
-                       list-object-filter='{}' />
+               <entity-list list-title='Introduced classes' list-entities='vm.intros.results'
+                       list-object-filter='{}' ng-if='vm.mentity.class_name == "MModule"' />
 
-               <entity-list list-title='Class redefinitions' list-entities='vm.mentity.redef_mclassdefs'
-                       list-object-filter='{}' />
+               <entity-list list-title='Class redefinitions' list-entities='vm.redefs.results'
+                       list-object-filter='{}' ng-if='vm.mentity.class_name == "MModule"' />
 
                <entity-list list-title='Constructors'
                        list-entities='vm.mentity.all_mproperties'
                        list-object-filter='{is_init: true}' />
 
-               <entity-list list-title='Introduced properties'
-                       list-entities='vm.mentity.intro_mproperties'
-                       list-object-filter='{is_init: "!true"}' />
+               <entity-list list-title='Introduced properties' list-entities='vm.intros.results'
+                       list-object-filter='{is_init: "!true"}' ng-if='vm.mentity.class_name == "MClass"' />
 
-               <entity-list list-title='Redefined properties'
-                       list-entities='vm.mentity.redef_mproperties'
-                       list-object-filter='{is_init: "!true"}' />
+               <entity-list list-title='Redefined properties' list-entities='vm.redefs.results'
+                       list-object-filter='{is_init: "!true"}' ng-if='vm.mentity.class_name == "MClass"' />
 
        </div>
 
                "hidden": vm.mentity.class_name != "MPackage"
        }'>
                <br>
-               <p ng-repeat='maintainer in vm.mentity.metadata.maintainers' class='lead'>
+               <p ng-repeat='maintainer in vm.meta.maintainers' class='lead'>
                        <img class='avatar' src='https://secure.gravatar.com/avatar/{{maintainer.gravatar}}?size=20&default=retro' />
                        <span>
                                <a ui-sref='person({id: maintainer.name})'>{{maintainer.name}}</a>
                        </span>
                        <br>
                </p>
-               <span ng-if='vm.mentity.metadata.license'>
+               <span ng-if='vm.meta.license'>
                        <span class='text-muted'>
-                               <a href='http://opensource.org/licenses/{{vm.mentity.metadata.license}}'>{{vm.mentity.metadata.license}}</a>
+                               <a href='http://opensource.org/licenses/{{vm.meta.license}}'>{{vm.meta.license}}</a>
                                license
                        </span>
                        <br>
                </span>
 
-               <div ng-if='vm.mentity.metadata.homepage || vm.mentity.metadata.issues'>
+               <div ng-if='vm.meta.homepage || vm.meta.issues'>
                        <h3>Links</h3>
                        <ul class='list-unstyled'>
-                               <li ng-if='vm.mentity.metadata.homepage'>
-                                       <a href='{{vm.mentity.metadata.homepage}}'>Homepage</a>
+                               <li ng-if='vm.meta.homepage'>
+                                       <a href='{{vm.meta.homepage}}'>Homepage</a>
                                </li>
-                               <li ng-if='vm.mentity.metadata.browse'>
-                                       <a href='{{vm.mentity.metadata.browse}}'>Source Code</a>
+                               <li ng-if='vm.meta.browse'>
+                                       <a href='{{vm.meta.browse}}'>Source Code</a>
                                </li>
-                               <li ng-if='vm.mentity.metadata.issues'>
-                                       <a href='{{vm.mentity.metadata.issues}}'>Issues</a>
+                               <li ng-if='vm.meta.issues'>
+                                       <a href='{{vm.meta.issues}}'>Issues</a>
                                </li>
                        </ul>
                </div>
 
-               <div ng-if='vm.mentity.metadata.git || vm.mentity.stats.commits'>
+               <div ng-if='vm.meta.git || vm.mentity.stats.commits'>
                        <h3>Git</h3>
                        <ul class='list-unstyled' style='white-space: nowrap; overflow: hidden; text-overflow: ellipsis;'>
-                               <li ng-if='vm.mentity.metadata.git'>
-                                       <a href='{{vm.mentity.metadata.git}}'>{{vm.mentity.metadata.git}}</a>
+                               <li ng-if='vm.meta.git'>
+                                       <a href='{{vm.meta.git}}'>{{vm.meta.git}}</a>
                                </li>
                                <li ng-if='vm.mentity.stats.commits' class='text-muted'>
                                        <br><b>{{vm.mentity.stats.commits}} commits</b>
                                </li>
-                               <li ng-if='vm.mentity.metadata.last_date'><b class='text-muted'>Last:</b> {{vm.date(vm.mentity.metadata.last_date) | date: 'medium'}}</li>
-                               <li ng-if='vm.mentity.metadata.first_date'><b class='text-muted'>First: </b>{{vm.date(vm.mentity.metadata.first_date) | date: 'medium'}}</li>
+                               <li ng-if='vm.meta.last_date'><b class='text-muted'>Last:</b> {{vm.date(vm.meta.last_date) | date: 'medium'}}</li>
+                               <li ng-if='vm.meta.first_date'><b class='text-muted'>First: </b>{{vm.date(vm.meta.first_date) | date: 'medium'}}</li>
                        </ul>
                </div>
 
                        </ul>
                </div>
 
-               <div ng-if='vm.mentity.metadata.tags.length > 0'>
+               <div ng-if='vm.meta.tags.length > 0'>
                        <h3>Tags</h3>
-                       <span ng-repeat='tag in vm.mentity.metadata.tags'>
+                       <span ng-repeat='tag in vm.meta.tags'>
                                <a ui-sref='tag({id: tag})'>{{tag}}</a><span ng-if='!$last'>,</span>
                        </span>
                </div>
 
-               <div ng-if='vm.mentity.dependencies.length > 0'>
+               <div ng-if='vm.parents.results.length > 0'>
                        <h3>Requirements</h3>
-                       <span ng-repeat='parent in vm.mentity.dependencies'>
-                               <a ui-sref='mentity({id: parent.name})' title='{{parent.synopsis}}'>{{parent.name}}</a><span ng-if='!$last'>,</span>
+                       <span ng-repeat='parent in vm.parents.results'>
+                               <entity-link mentity='parent' /><span ng-if='!$last'>,</span>
                        </span>
                </div>
 
-               <div ng-if='vm.mentity.clients.length > 0'>
+               <div ng-if='vm.children.results.length > 0'>
                        <h3>Clients</h3>
-                       <span ng-repeat='client in vm.mentity.clients'>
-                               <a ui-sref='mentity({id: client.name})' title='{{client.synopsis}}'>{{client.name}}</a><span ng-if='!$last'>,</span>
+                       <span ng-repeat='client in vm.children.results'>
+                               <entity-link mentity='client' /><span ng-if='!$last'>,</span>
                        </span>
                </div>
 
-               <div ng-if='vm.mentity.metadata.contributors.length > 1'>
+               <div ng-if='vm.meta.contributors.length > 1'>
                        <h3>Contributors</h3>
                        <ul class='list-unstyled'>
-                               <li ng-repeat='contributor in vm.mentity.metadata.contributors'>
+                               <li ng-repeat='contributor in vm.meta.contributors'>
                                        <img class='avatar' src='https://secure.gravatar.com/avatar/{{contributor.gravatar}}?size=20&default=retro' />
                                        <a ui-sref='person({id: contributor.name})'>
                                        {{contributor.name}}</a>
index 2968cce..fdd9668 100644 (file)
@@ -7,9 +7,9 @@
 
        <!-- Parents -->
        <entity-list list-title='Parents'
-               list-entities='vm.inh.direct_greaters' list-object-filter='{}' />
+               list-entities='vm.parents.results' list-object-filter='{}' />
 
        <!-- Children -->
        <entity-list list-title='Children'
-               list-entities='vm.inh.direct_smallers' list-object-filter='{}' />
+               list-entities='vm.children.results' list-object-filter='{}' />
 </div>
index 96d9b82..f99473c 100644 (file)
@@ -1,6 +1,6 @@
 <div>
        <entity-linearization
                list-title='Class definitions'
-               list-entities='vm.linearization'
+               list-entities='vm.linearization.results'
                list-focus='vm.focus' />
 </div>