You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2016/12/15 10:58:52 UTC

[5/9] kylin git commit: KYLIN 1875 model visualization

KYLIN 1875 model visualization

Signed-off-by: zhongjian <ji...@163.com>


Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/36a42d86
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/36a42d86
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/36a42d86

Branch: refs/heads/master
Commit: 36a42d86f84e0b0ba69b44e809e68fcee5437d65
Parents: d5b8c7f
Author: chenzhx <34...@qq.com>
Authored: Mon Dec 12 10:56:17 2016 +0800
Committer: Li Yang <li...@apache.org>
Committed: Thu Dec 15 18:57:36 2016 +0800

----------------------------------------------------------------------
 webapp/app/js/controllers/modelDataModel.js     | 10 ++--
 webapp/app/js/controllers/models.js             |  1 +
 webapp/app/js/services/tree.js                  | 60 ++++++--------------
 .../app/partials/modelDesigner/data_model.html  |  8 +--
 webapp/app/partials/models/model_detail.html    | 18 +-----
 5 files changed, 26 insertions(+), 71 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/36a42d86/webapp/app/js/controllers/modelDataModel.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/modelDataModel.js b/webapp/app/js/controllers/modelDataModel.js
index d17af91..95a4c70 100644
--- a/webapp/app/js/controllers/modelDataModel.js
+++ b/webapp/app/js/controllers/modelDataModel.js
@@ -21,7 +21,7 @@
 KylinApp.controller('ModelDataModelCtrl', function ($location,$scope, $modal,cubeConfig,MetaModel,SweetAlert,ModelGraphService,$log,TableModel,ModelService,loadingRequest,modelsManager,VdmUtil) {
     $scope.modelsManager = modelsManager;
     $scope.init = function (){
-      $scope.rootFactTable=$scope.modelsManager.selectedModel.fact_table;
+      $scope.FactTable={root:$scope.modelsManager.selectedModel.fact_table};
       $scope.aliasTableMap[VdmUtil.removeNameSpace($scope.modelsManager.selectedModel.fact_table)]=$scope.modelsManager.selectedModel.fact_table;
       $scope.tableAliasMap[$scope.modelsManager.selectedModel.fact_table]=VdmUtil.removeNameSpace($scope.modelsManager.selectedModel.fact_table);
       $scope.aliasName.push(VdmUtil.removeNameSpace($scope.modelsManager.selectedModel.fact_table));
@@ -137,12 +137,12 @@ KylinApp.controller('ModelDataModelCtrl', function ($location,$scope, $modal,cub
     };
     $scope.changeFactTable = function () {
         delete $scope.aliasTableMap[VdmUtil.removeNameSpace($scope.modelsManager.selectedModel.fact_table)];
-        $scope.aliasTableMap[VdmUtil.removeNameSpace($scope.rootFactTable)]=$scope.rootFactTable;
+        $scope.aliasTableMap[VdmUtil.removeNameSpace($scope.FactTable.root)]=$scope.FactTable.root;
         delete $scope.tableAliasMap[$scope.modelsManager.selectedModel.fact_table];
-        $scope.tableAliasMap[$scope.rootFactTable]=VdmUtil.removeNameSpace($scope.rootFactTable);
+        $scope.tableAliasMap[$scope.FactTable.root]=VdmUtil.removeNameSpace($scope.FactTable.root);
         $scope.aliasName.splice($scope.aliasName.indexOf(VdmUtil.removeNameSpace($scope.modelsManager.selectedModel.fact_table)),1);
-        $scope.aliasName.push(VdmUtil.removeNameSpace($scope.rootFactTable));
-        $scope.modelsManager.selectedModel.fact_table=$scope.rootFactTable;
+        $scope.aliasName.push(VdmUtil.removeNameSpace($scope.FactTable.root));
+        $scope.modelsManager.selectedModel.fact_table=$scope.FactTable.root;
     }
     $scope.changeJoinTable = function () {
         $scope.newLookup.alias=$scope.newLookup.table;

http://git-wip-us.apache.org/repos/asf/kylin/blob/36a42d86/webapp/app/js/controllers/models.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/models.js b/webapp/app/js/controllers/models.js
index 6fe2598..fb2c6d1 100644
--- a/webapp/app/js/controllers/models.js
+++ b/webapp/app/js/controllers/models.js
@@ -177,6 +177,7 @@ KylinApp.controller('ModelsCtrl', function ($scope, $q, $routeParams, $location,
   };
 
   var ModelDetailModalCtrl = function ($scope, $location, $modalInstance, scope) {
+    modelsManager.selectedModel.visiblePage='metadata';
     $scope.cancel = function () {
       $modalInstance.dismiss('cancel');
     };

http://git-wip-us.apache.org/repos/asf/kylin/blob/36a42d86/webapp/app/js/services/tree.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/services/tree.js b/webapp/app/js/services/tree.js
index 3b444c6..08e290b 100755
--- a/webapp/app/js/services/tree.js
+++ b/webapp/app/js/services/tree.js
@@ -17,8 +17,8 @@
 */
 
 KylinApp.service('ModelGraphService', function (VdmUtil) {
-    var tablesNodeList=[];
-    var aliasList=[];
+    var tablesNodeList={};
+  //  var aliasList=[];
     var margin = {top: 20, right: 100, bottom: 20, left: 100},
         width = 1100 - margin.right - margin.left,
         height = 600;
@@ -42,12 +42,12 @@ KylinApp.service('ModelGraphService', function (VdmUtil) {
             "name": VdmUtil.removeNameSpace(model.fact_table),
             "children": []
         };
-        tablesNodeList.push(graphData);
-        aliasList.push(graphData.name);
+        tablesNodeList[graphData.name]=graphData;
+      //   aliasList.push(graphData.name);
         model.graph = (!!model.graph) ? model.graph : {};
 
-        angular.forEach(model.lookups, function (lookup, index) {
-          if (lookup.join && aliasList.indexOf(lookup.alias)==-1) {
+        angular.forEach(model.lookups,function (lookup, index) {
+          if (lookup.join && lookup.join.primary_key.length > 0) {
             var  dimensionNode={
                 "type": lookup.kind,
                 "name": lookup.alias,
@@ -55,49 +55,21 @@ KylinApp.service('ModelGraphService', function (VdmUtil) {
                 "children": [],
                 "_children": []
               }
-              aliasList.push(dimensionNode.name);
-              tablesNodeList.push(dimensionNode);
+        //      aliasList.push(dimensionNode.name);
+              tablesNodeList[dimensionNode.name]=dimensionNode;
             }
 
         });
-        angular.forEach(model.lookups, function (lookup) {
-           if (lookup.join && lookup.join.primary_key.length > 0) {
-                  VdmUtil.getNameSpaceAliasName(lookup.join.primary_key[0]);
-                  VdmUtil.getNameSpaceAliasName(lookup.join.foreign_key[0]);
-           }
-        });
-
-
-/* Loop through the graphData.children array to find out: If the LKP table is already existed *//*
-
-          for(var j = 0; j < graphData.children.length; j++ ) {
-            if(graphData.children[j].name == lookup.alias){
-              dimensionNode = graphData.children[j];
-              break;
-            }
-          }
 
-          */
-/* If not existed, create dimensionNode and push it *//*
-
-          if(j == graphData.children.length) {
-            dimensionNode = {
-              "type": "dimension",
-              "name": lookup.alias,
-              "join": lookup.join,
-              "children": [],
-              "_children": []
-            };
+        angular.forEach(model.lookups,function(joinTable){
+          if (joinTable.join && joinTable.join.primary_key.length > 0) {
+            var fkAliasName=VdmUtil.getNameSpaceAliasName(joinTable.join.foreign_key[0]);
+            var pkAliasName=VdmUtil.getNameSpaceAliasName(joinTable.join.primary_key[0]);
+            tablesNodeList[fkAliasName].children.push(tablesNodeList[pkAliasName]);
           }
+        });
 
-          if(j == graphData.children.length) {
-            graphData.children.push(dimensionNode);
-          }
-
-        }
-*/
-
-      angular.forEach(model.dimensions, function (dimension, index) {
+/*      angular.forEach(model.dimensions, function (dimension, index) {
         // for dimension on lookup table
         if(model.fact_table!==dimension.table){
             var lookup = _.find(graphData.children,function(item){
@@ -117,7 +89,7 @@ KylinApp.service('ModelGraphService', function (VdmUtil) {
                   }
           });
         };
-      });
+      });*/
         model.graph.columnsCount = 0;
         model.graph.tree = tree;
         model.graph.root = graphData;

http://git-wip-us.apache.org/repos/asf/kylin/blob/36a42d86/webapp/app/partials/modelDesigner/data_model.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/modelDesigner/data_model.html b/webapp/app/partials/modelDesigner/data_model.html
index 82be964..f1192f4 100644
--- a/webapp/app/partials/modelDesigner/data_model.html
+++ b/webapp/app/partials/modelDesigner/data_model.html
@@ -23,10 +23,10 @@
     <div class="form-group" ng-class="{'required':state.mode=='edit'}">
         <div class="row">
             <label class="col-xs-12 col-sm-2 control-label concube.detailtrol-label no-padding-right font-color-default">
-                <b>Fact Table</b>
+                <b>Root Fact Table</b>
             </label>
             <div class="col-xs-12 col-sm-6" ng-class="{'has-error':forms.data_model_form.table_name.$invalid && (forms.data_model_form.table_name.$dirty||forms.data_model_form.$submitted)}">
-              <select chosen ng-model="$parent.rootFactTable" ng-if="state.mode=='edit'"
+              <select chosen ng-model="FactTable.root" ng-if="state.mode=='edit'"
                       ng-options="table.name as table.name for table in tableModel.selectProjectTables"
                       style="width:100%;" ng-change="changeFactTable()"
                       name="table_name"
@@ -35,9 +35,7 @@
                       class="chosen-select">
                 <option value=""> -- Select Fact Table -- </option>
               </select>
-
-                <small class="help-block" ng-show="forms.data_model_form.innerform.typeahead.$error.required && (forms.data_model_form.innerform.typeahead.$dirty||forms.data_model_form.$submitted)">The fact table is required</small>
-                <span ng-if="state.mode=='view'">{{$parent.rootFactTable}}</span>
+              <span ng-if="state.mode=='view'">{{modelsManager.selectedModel.fact_table}}</span>
             </div>
         </div>
     </div>

http://git-wip-us.apache.org/repos/asf/kylin/blob/36a42d86/webapp/app/partials/models/model_detail.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/models/model_detail.html b/webapp/app/partials/models/model_detail.html
index dcf782a..2549da2 100644
--- a/webapp/app/partials/models/model_detail.html
+++ b/webapp/app/partials/models/model_detail.html
@@ -32,23 +32,7 @@
       <li class="{{modelsManager.selectedModel.visiblePage=='json_model'? 'active':''}}">
         <a href="" ng-click="modelsManager.selectedModel.visiblePage='json_model';">JSON</a>
       </li>
-        <li class="dropdown" ng-if="userService.hasRole('ROLE_ADMIN') || hasPermission(modelsManager.selectedModel, permissions.ADMINISTRATION.mask, permissions.MANAGEMENT.mask, permissions.OPERATION.mask)">
-            <a class="dropdown-toggle highlight-bule" data-toggle="dropdown" href="#" aria-expanded="true">
-                <i class="fa fa-star"> Action </i> <span class="caret"></span>
-            </a>
-            <ul class="dropdown-menu">
-                <li ng-if="userService.hasRole('ROLE_ADMIN') || hasPermission(modelsManager.selectedModel, permissions.ADMINISTRATION.mask, permissions.MANAGEMENT.mask, permissions.OPERATION.mask)">
-                    <a href="models/edit/{{modelsManager.selectedModel.name}}" data-widget="collapse">Edit</a>
-                </li>
-                <li ng-if="userService.hasRole('ROLE_ADMIN')">
-                    <a ng-click="dropModel(modelsManager.selectedModel)">Drop</a>
-                </li>
-                <li role="presentation" class="divider"></li>
-                <li ng-if="userService.hasRole('ROLE_ADMIN') || hasPermission(modelsManager.selectedModel, permissions.ADMINISTRATION.mask, permissions.MANAGEMENT.mask, permissions.OPERATION.mask)">
-                    <a href="cubes/add/{{modelsManager.selectedModel.name}}" data-widget="collapse">Create Cube</a>
-                </li>
-            </ul>
-        </li>
+
     </ul>
 
     <div class="model-detail" ng-if="!modelsManager.selectedModel.visiblePage || modelsManager.selectedModel.visiblePage=='metadata'">