Repository: kylin
Updated Branches:
  refs/heads/master 61784b44b -> b8a96dbf4


KYLIN-2222 web ui uses rest api to decide which dim encoding is valid for 
different typed columns

Signed-off-by: Hongbin Ma <mahong...@apache.org>


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

Branch: refs/heads/master
Commit: b8a96dbf4df3ffa267c6cbdcadce9a1ea62b18bf
Parents: 61784b4
Author: luguosheng <550175...@qq.com>
Authored: Thu Feb 16 16:18:00 2017 +0800
Committer: Hongbin Ma <mahong...@apache.org>
Committed: Thu Feb 16 16:27:10 2017 +0800

----------------------------------------------------------------------
 webapp/app/js/controllers/cubeAdvanceSetting.js |  4 +-
 webapp/app/js/controllers/cubeEdit.js           | 41 ++++----------------
 webapp/app/js/controllers/cubeMeasures.js       |  4 +-
 webapp/app/js/controllers/cubeSchema.js         | 15 ++++++-
 webapp/app/js/model/modelsManager.js            | 36 ++++++++++++++++-
 5 files changed, 61 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/b8a96dbf/webapp/app/js/controllers/cubeAdvanceSetting.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeAdvanceSetting.js 
b/webapp/app/js/controllers/cubeAdvanceSetting.js
index 7aaa604..5e7de33 100644
--- a/webapp/app/js/controllers/cubeAdvanceSetting.js
+++ b/webapp/app/js/controllers/cubeAdvanceSetting.js
@@ -18,7 +18,7 @@
 
 'use strict';
 
-KylinApp.controller('CubeAdvanceSettingCtrl', function ($scope, 
$modal,cubeConfig,MetaModel,cubesManager,CubeDescModel,SweetAlert,VdmUtil) {
+KylinApp.controller('CubeAdvanceSettingCtrl', function ($scope, 
$modal,cubeConfig,MetaModel,cubesManager,CubeDescModel,SweetAlert,VdmUtil,modelsManager)
 {
   $scope.cubesManager = cubesManager;
 
   var needLengthKeyList=cubeConfig.needSetLengthEncodingList;
@@ -27,7 +27,7 @@ KylinApp.controller('CubeAdvanceSettingCtrl', function 
($scope, $modal,cubeConfi
     item.encoding=$scope.removeVersion(item.encoding);
     var _valueLength;
     var tableName=VdmUtil.getNameSpaceTopName(item.column);
-    var databaseName=$scope.getDatabaseByColumnName(item.column);
+    var databaseName=modelsManager.getDatabaseByColumnName(item.column);
     var baseKey=item.encoding.replace(/:\d+/,'');
     if(needLengthKeyList.indexOf(baseKey)>-1){
       var result=/:(\d+)/.exec(item.encoding);

http://git-wip-us.apache.org/repos/asf/kylin/blob/b8a96dbf/webapp/app/js/controllers/cubeEdit.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeEdit.js 
b/webapp/app/js/controllers/cubeEdit.js
index 32c630c..bc0bceb 100755
--- a/webapp/app/js/controllers/cubeEdit.js
+++ b/webapp/app/js/controllers/cubeEdit.js
@@ -22,13 +22,12 @@
 KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, 
$location, $templateCache, $interpolate, MessageService, TableService, 
CubeDescService, CubeService, loadingRequest, SweetAlert, $log, cubeConfig, 
CubeDescModel, MetaModel, TableModel, ModelDescService, modelsManager, 
cubesManager, ProjectModel, StreamingModel, StreamingService,VdmUtil) {
   $scope.cubeConfig = cubeConfig;
   $scope.metaModel = {};
-  $scope.tableAliasMap={};
-  $scope.aliasTableMap={};
-  $scope.aliasName=[];
-  $scope.availableFactTables = [];
-  $scope.availableLookupTables = [];
   $scope.modelsManager = modelsManager;
-
+  $scope.tableAliasMap=$scope.modelsManager.tableAliasMap;
+  $scope.aliasTableMap=$scope.modelsManager.aliasTableMap;
+  $scope.availableFactTables =$scope.modelsManager.availableFactTables;
+  $scope.availableLookupTables =$scope.modelsManager.availableLookupTables;
+  $scope.aliasName=$scope.modelsManager.aliasName;
   //add or edit ?
   var absUrl = $location.absUrl();
   $scope.cubeMode = absUrl.indexOf("/cubes/add") != -1 ? 'addNewCube' : 
absUrl.indexOf("/cubes/edit") != -1 ? 'editExistCube' : 'default';
@@ -39,20 +38,7 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, 
$routeParams, $locatio
     return;
   }
 
-  $scope.getTypeVersion=function(typename){
-    var searchResult=/\[v(\d+)\]/.exec(typename);
-    if(searchResult&&searchResult.length){
-      return searchResult.length&&searchResult[1]||1;
-    }else{
-      return 1;
-    }
-  }
-  $scope.removeVersion=function(typename){
-    if(typename){
-      return typename.replace(/\[v\d+\]/g,"");
-    }
-    return "";
-  }
+
   //init encoding list
   $scope.store = {
     supportedEncoding:[],
@@ -108,7 +94,7 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, 
$routeParams, $locatio
   }
   $scope.getEncodings =function (name){
     var filterName=name;
-    var columnType= $scope.getColumnTypeByAliasName(filterName);
+    var columnType= modelsManager.getColumnTypeByColumnName(filterName);
     var 
matchList=VdmUtil.getObjValFromLikeKey($scope.store.encodingMaps,columnType);
     var encodings =$scope.store.supportedEncoding,filterEncoding;
     if($scope.isEdit){
@@ -324,18 +310,7 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, 
$routeParams, $locatio
         if (!modelsManager.getModels().length) {
           ModelDescService.query({model_name: 
$scope.cubeMetaFrame.model_name}, function (_model) {
             $scope.metaModel.model = _model;
-            var rootFactTable = 
VdmUtil.removeNameSpace($scope.metaModel.model.fact_table);
-            $scope.aliasName.push(rootFactTable);
-            
$scope.aliasTableMap[rootFactTable]=$scope.metaModel.model.fact_table;
-            
$scope.tableAliasMap[$scope.metaModel.model.fact_table]=rootFactTable;
-            angular.forEach($scope.metaModel.model.lookups,function(joinTable){
-              if(!joinTable.alias){
-                joinTable.alias=VdmUtil.removeNameSpace(joinTable.table);
-              }
-              $scope.aliasTableMap[joinTable.alias]=joinTable.table;
-              $scope.tableAliasMap[joinTable.table]=joinTable.alias;
-              $scope.aliasName.push(joinTable.alias);
-            });
+            $scope.modelsManager.initAliasMapByModelSchema($scope.metaModel);
           });
         }
         $scope.state.cubeSchema = angular.toJson($scope.cubeMetaFrame, true);

http://git-wip-us.apache.org/repos/asf/kylin/blob/b8a96dbf/webapp/app/js/controllers/cubeMeasures.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeMeasures.js 
b/webapp/app/js/controllers/cubeMeasures.js
index fc146ba..03e913a 100644
--- a/webapp/app/js/controllers/cubeMeasures.js
+++ b/webapp/app/js/controllers/cubeMeasures.js
@@ -18,7 +18,7 @@
 
 'use strict';
 
-KylinApp.controller('CubeMeasuresCtrl', function ($scope, 
$modal,MetaModel,cubesManager,CubeDescModel,SweetAlert,VdmUtil,TableModel,cubeConfig)
 {
+KylinApp.controller('CubeMeasuresCtrl', function ($scope, 
$modal,MetaModel,cubesManager,CubeDescModel,SweetAlert,VdmUtil,TableModel,cubeConfig,modelsManager)
 {
   $scope.num=0;
   $scope.convertedColumns=[];
   $scope.groupby=[];
@@ -31,7 +31,7 @@ KylinApp.controller('CubeMeasuresCtrl', function ($scope, 
$modal,MetaModel,cubes
   $scope.initUpdateMeasureStatus();
   var needLengthKeyList=cubeConfig.needSetLengthEncodingList;
   $scope.getEncodings =function (name){
-    var columnType = $scope.getColumnTypeByAliasName(name);
+    var columnType = modelsManager.getColumnTypeByColumnName(name);
     var encodings =$scope.store.supportedEncoding,filterEncoding=[];
     var 
matchList=VdmUtil.getObjValFromLikeKey($scope.store.encodingMaps,columnType);
     if($scope.isEdit) {

http://git-wip-us.apache.org/repos/asf/kylin/blob/b8a96dbf/webapp/app/js/controllers/cubeSchema.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeSchema.js 
b/webapp/app/js/controllers/cubeSchema.js
index 4beeebe..6aeea3c 100755
--- a/webapp/app/js/controllers/cubeSchema.js
+++ b/webapp/app/js/controllers/cubeSchema.js
@@ -39,7 +39,20 @@ KylinApp.controller('CubeSchemaCtrl', function ($scope, 
QueryService, UserServic
 
     $scope.allCubes = [];
 
-
+    $scope.getTypeVersion=function(typename){
+      var searchResult=/\[v(\d+)\]/.exec(typename);
+      if(searchResult&&searchResult.length){
+        return searchResult.length&&searchResult[1]||1;
+      }else{
+        return 1;
+      }
+    }
+    $scope.removeVersion=function(typename){
+      if(typename){
+        return typename.replace(/\[v\d+\]/g,"");
+      }
+      return "";
+    }
   // ~ init
     if (!$scope.state) {
         $scope.state = {mode: "view"};

http://git-wip-us.apache.org/repos/asf/kylin/blob/b8a96dbf/webapp/app/js/model/modelsManager.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/model/modelsManager.js 
b/webapp/app/js/model/modelsManager.js
index faa8d39..f00f5cc 100644
--- a/webapp/app/js/model/modelsManager.js
+++ b/webapp/app/js/model/modelsManager.js
@@ -16,7 +16,7 @@
  * limitations under the License.
 */
 
-KylinApp.service('modelsManager',function(ModelService,CubeService,$q,AccessService,ProjectModel,$log){
+KylinApp.service('modelsManager',function(ModelService,CubeService,$q,AccessService,ProjectModel,VdmUtil,TableModel){
     var _this = this;
     this.models=[];
     this.modelNameList = [];
@@ -92,5 +92,39 @@ 
KylinApp.service('modelsManager',function(ModelService,CubeService,$q,AccessServ
 
         return defer.promise;
     };
+    //init alias map
+    this.tableAliasMap={};
+    this.aliasTableMap={};
+    this.availableFactTables=[];
+    this.availableLookupTables=[];
+    this.aliasName=[];
+
+    this.initAliasMapByModelSchema=function(metaModel){
+      var rootFactTable = VdmUtil.removeNameSpace(metaModel.model.fact_table);
+      this.availableFactTables.push(rootFactTable);
+      this.aliasName.push(rootFactTable);
+      this.aliasTableMap[rootFactTable]=metaModel.model.fact_table;
+      this.tableAliasMap[metaModel.model.fact_table]=rootFactTable;
+      var _this=this;
+      angular.forEach(metaModel.model.lookups,function(joinTable){
+        if(!joinTable.alias){
+          joinTable.alias=VdmUtil.removeNameSpace(joinTable.table);
+        }
+        if(joinTable.kind=="FACT"){
+          _this.availableFactTables.push(joinTable.alias);
+        }else{
+          _this.availableLookupTables.push(joinTable.alias);
+        }
+        _this.aliasTableMap[joinTable.alias]=joinTable.table;
+        _this.tableAliasMap[joinTable.table]=joinTable.alias;
+        _this.aliasName.push(joinTable.alias);
+      });
+    }
+    this.getDatabaseByColumnName=function(column){
+      return  
VdmUtil.getNameSpaceTopName(this.aliasTableMap[VdmUtil.getNameSpaceTopName(column)])
+    }
+    this.getColumnTypeByColumnName=function(column){
+      return 
TableModel.columnNameTypeMap[this.aliasTableMap[VdmUtil.getNameSpaceTopName(column)]+'.'+VdmUtil.removeNameSpace(column)];
+    }
 
 });

Reply via email to