nitweb/angular: show entities graph
authorAlexandre Terrasa <alexandre@moz-code.org>
Thu, 9 Jun 2016 15:25:10 +0000 (11:25 -0400)
committerAlexandre Terrasa <alexandre@moz-code.org>
Tue, 21 Jun 2016 14:23:57 +0000 (10:23 -0400)
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

share/nitweb/javascripts/entities.js
share/nitweb/javascripts/model.js
share/nitweb/views/class.html
share/nitweb/views/group.html
share/nitweb/views/module.html
share/nitweb/views/package.html

index 9eefc9f..545bf08 100644 (file)
@@ -16,9 +16,9 @@
 
 (function() {
        angular
-               .module('entities', ['ui', 'model'])
+               .module('entities', ['ngSanitize', 'ui', 'model'])
 
-               .controller('EntityCtrl', ['Model', '$routeParams', '$scope', function(Model, $routeParams, $scope) {
+               .controller('EntityCtrl', ['Model', '$routeParams', '$scope', '$sce', function(Model, $routeParams, $scope, $sce) {
                        this.loadEntityLinearization = function() {
                                Model.loadEntityLinearization($routeParams.id,
                                        function(data) {
                                        });
                        };
 
+                       this.loadEntityGraph = function(e) {
+                               Model.loadEntityGraph($routeParams.id,
+                                       function(data) {
+                                               $scope.graph = $sce.trustAsHtml(data);
+                                       }, function(err) {
+                                               $scope.error = err;
+                                       });
+                       };
+
                        Model.loadEntity($routeParams.id,
                                function(data) {
                                        $scope.mentity = data;
index 2144983..8812a7a 100644 (file)
                                                .error(cbErr);
                                },
 
+                               loadEntityGraph: function(id, cb, cbErr) {
+                                       $http.get(apiUrl + '/graph/inheritance/' + id + '?cdepth=3')
+                                               .success(cb)
+                                               .error(cbErr);
+                               },
+
                                search: function(q, n, cb, cbErr) {
                                        $http.get(apiUrl + '/search?q=' + q + '&n=' + n)
                                                .success(cb)
index 4950546..33c9fad 100644 (file)
                        </a>
                </li>
                <li role='presentation'>
+                       <a data-toggle='tab' data-target='#graph' ng-click="entityCtrl.loadEntityGraph()">
+                               <span class='glyphicon glyphicon-object-align-vertical'/> Inheritance
+                       </a>
+               </li>
+               <li role='presentation'>
                        <a data-toggle='tab' data-target='#all_props'>
                                <span class='glyphicon glyphicon-tags'/> All properties
                        </a>
                                list-entities='linearization'
                                list-focus='mentity.intro' />
                </div>
+               <div role='tabpanel' class='tab-pane fade' id='graph'>
+                       <div class='card'>
+                               <div class='card-body text-center'>
+                                       <div class='graph' ng-bind-html='graph'></div>
+                               </div>
+                       </div>
+               </div>
        </div>
 </div>
index ca19974..53a1d2d 100644 (file)
@@ -1,29 +1,40 @@
 <div class='container-fluid'>
-               <div class='page-header'>
-                       <h2><entity-signature mentity='mentity' /></h2>
-                       <entity-link mentity='mentity.mpackage' /> :: {{mentity.name}}
-               </div>
+       <div class='page-header'>
+               <h2><entity-signature mentity='mentity' /></h2>
+               <entity-link mentity='mentity.mpackage' /> :: {{mentity.name}}
+       </div>
 
-               <ul class='nav nav-tabs'>
-                       <li class='active'>
-                               <a data-toggle='tab' data-target='#doc'>
-                                       <span class='glyphicon glyphicon-book'/> Doc
-                               </a>
-                       </li>
-               </ul>
+       <ul class='nav nav-tabs'>
+               <li class='active'>
+                       <a data-toggle='tab' data-target='#doc'>
+                               <span class='glyphicon glyphicon-book'/> Doc
+                       </a>
+               </li>
+               <li role='presentation'>
+                       <a data-toggle='tab' data-target='#graph' ng-click="entityCtrl.loadEntityGraph()">
+                               <span class='glyphicon glyphicon-object-align-vertical'/> Imports
+                       </a>
+               </li>
+       </ul>
 
-               <div class='tab-content'>
-                       <div class='tab-pane fade in active' id='doc'>
-                               <entity-doc mentity='mentity'/>
+       <div class='tab-content'>
+               <div role='tabpanel' class='tab-pane fade in active' id='doc'>
+                       <entity-doc mentity='mentity'/>
 
-                               <entity-list list-title='Parent group' list-entities='[mentity.parent]'
-                                       list-object-filter='{}' ng-if='mentity.parent' />
+                       <entity-list list-title='Parent group' list-entities='[mentity.parent]'
+                               list-object-filter='{}' ng-if='mentity.parent' />
 
-                               <entity-list list-title='Subgroups' list-entities='mentity.mgroups'
-                                       list-object-filter='{}' />
+                       <entity-list list-title='Subgroups' list-entities='mentity.mgroups'
+                               list-object-filter='{}' />
 
-                               <entity-list list-title='Modules' list-entities='mentity.mmodules'
-                                       list-object-filter='{}' />
+                       <entity-list list-title='Modules' list-entities='mentity.mmodules'
+                               list-object-filter='{}' />
+               </div>
+               <div role='tabpanel' class='tab-pane fade' id='graph'>
+                       <div class='card'>
+                               <div class='card-body text-center'>
+                                       <div class='graph' ng-bind-html='graph'></div>
+                               </div>
                        </div>
                </div>
        </div>
index 9a15c76..ec33908 100644 (file)
                        </a>
                </li>
                <li role='presentation'>
+                       <a data-toggle='tab' data-target='#graph' ng-click="entityCtrl.loadEntityGraph()">
+                               <span class='glyphicon glyphicon-object-align-vertical'/> Imports
+                       </a>
+               </li>
+               <li role='presentation'>
                        <a data-toggle='tab' data-target='#code' ng-click="entityCtrl.loadEntityCode()">
                                <span class='glyphicon glyphicon-console'/> Code
                        </a>
@@ -36,7 +41,7 @@
                                list-object-filter='{}' />
 
                </div>
-               <div class='tab-pane fade' id='code'>
+               <div role='tabpanel' class='tab-pane fade' id='code'>
                        <div class='card'>
                                <div class='card-body'>
                                        <pre ng-bind-html='code' />
                        <entity-list list-title='Class definitions' list-entities='defs'
                                list-object-filter='{}' />
                </div>
+               <div class='tab-pane fade' id='graph'>
+                       <div class='card'>
+                               <div class='card-body text-center'>
+                                       <div class='graph' ng-bind-html='graph'></div>
+                               </div>
+                       </div>
+               </div>
        </div>
 </div>
index ee19aa5..544c56d 100644 (file)
@@ -9,6 +9,11 @@
                                <span class='glyphicon glyphicon-book'/> Doc
                        </a>
                </li>
+               <li role='presentation'>
+                       <a data-toggle='tab' data-target='#graph' ng-click="entityCtrl.loadEntityGraph()">
+                               <span class='glyphicon glyphicon-object-align-vertical'/> Dependencies
+                       </a>
+               </li>
        </ul>
 
        <div class='tab-content'>
                        <entity-list list-title='Groups' list-entities='mentity.mgroups'
                                list-object-filter='{}' />
                </div>
+               <div role='tabpanel' class='tab-pane fade' id='graph'>
+                       <div class='card'>
+                               <div class='card-body text-center'>
+                                       <div class='graph' ng-bind-html='graph'></div>
+                               </div>
+                       </div>
+               </div>
        </div>
 </div>