encoding add filter by column type

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/258353f5
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/258353f5
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/258353f5

Branch: refs/heads/yang21-cdh5.7
Commit: 258353f5718ce007313fd723b3ba62cb82c1d9f4
Parents: 577e6be
Author: luguosheng <550175...@qq.com>
Authored: Sat Nov 19 16:49:41 2016 +0800
Committer: Hongbin Ma <mahong...@apache.org>
Committed: Tue Nov 22 09:39:26 2016 +0800

----------------------------------------------------------------------
 webapp/app/js/controllers/cubeEdit.js     | 51 +++++++++++++++-----------
 webapp/app/js/controllers/cubeMeasures.js | 33 +++++++++++++----
 webapp/app/js/utils/utils.js              | 21 ++++++++---
 3 files changed, 70 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/258353f5/webapp/app/js/controllers/cubeEdit.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeEdit.js 
b/webapp/app/js/controllers/cubeEdit.js
index 5c5d9c7..3282974 100755
--- a/webapp/app/js/controllers/cubeEdit.js
+++ b/webapp/app/js/controllers/cubeEdit.js
@@ -77,33 +77,40 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, 
$routeParams, $locatio
   },function(e){
     $scope.store.supportedEncoding = $scope.cubeConfig.encodings;
   })
-
+  $scope.createFilter=function(type){
+     if(type.indexOf("varchar")<=0){
+       return ['fixed_length_hex'];
+     }else if(type!="date"){
+       return ['date'];
+     }else if(type!="time"&&type!="datetime"&&type!="timestamp"){
+       return ['time'];
+     }else{
+       return [];
+     }
+  }
   $scope.getEncodings =function (name){
-    var type = TableModel.columnNameTypeMap[name]||'';
-    var encodings =[];
-    for(var k=0;k<$scope.store.supportedEncoding.length;k++){
-      encodings.push($scope.store.supportedEncoding[k]);
-    }
+    var filterName=name;
+    var type = TableModel.columnNameTypeMap[filterName]||'';
+    var encodings =$scope.store.supportedEncoding,filterEncoding;
+    var filerList=$scope.createFilter(type);
     if($scope.isEdit){
-      for(var s=0;s<$scope.cubeMetaFrame.rowkey.rowkey_columns.length;s++){
-        if(name==$scope.cubeMetaFrame.rowkey.rowkey_columns[s].column){
-          var 
version=$scope.cubeMetaFrame.rowkey.rowkey_columns[s].encoding_version;
-          
encodings=VdmUtil.changeObjectListValueByFilter(encodings,'value',$scope.cubeMetaFrame.rowkey.rowkey_columns[s].encoding.replace(/:\d+/,"")+(version?"[v"+version+"]":"[v1]"),'suggest',true)
+      if($scope.cubeMetaFrame.rowkey.rowkey_columns&&name){
+        for(var s=0;s<$scope.cubeMetaFrame.rowkey.rowkey_columns.length;s++){
+          if(filterName==$scope.cubeMetaFrame.rowkey.rowkey_columns[s].column){
+            var 
version=$scope.cubeMetaFrame.rowkey.rowkey_columns[s].encoding_version;
+            
filterEncoding=VdmUtil.getFilterObjectListByOrFilterVal(encodings,'value',$scope.cubeMetaFrame.rowkey.rowkey_columns[s].encoding.replace(/:\d+/,"")+(version?"[v"+version+"]":"[v1]"),'suggest',true)
+          }
         }
+      }else{
+        
filterEncoding=VdmUtil.getFilterObjectListByOrFilterVal(encodings,'suggest',true);
       }
+    }else{
+      
filterEncoding=VdmUtil.getFilterObjectListByOrFilterVal(encodings,'suggest',true);
+    }
+    for(var f=0;f<filerList.length;f++){
+      
filterEncoding=VdmUtil.removeFilterObjectList(filterEncoding,'baseValue',filerList[f]);
     }
-    //if(type.indexOf("varchar")!==-1){
-    //    
filterEncodings=VdmUtil.getObjectListByFilterVal(encodings,'baseValue',['fixed_length_hex','fixed_length'],'suggest',true);
-    //}
-    //else if(type=="date"){
-    //    filterEncodings = VdmUtil.getObjectListByFilterVal(encodings, 
'baseValue', 'date','suggest',true);
-    //}else if(type=="time"||type=="datetime"||type=="timestamp"){
-    //    filterEncodings = VdmUtil.getObjectListByFilterVal(encodings, 
'baseValue', 'time','suggest',true);
-    //}else{
-    encodings=VdmUtil.getObjectListByFilterVal(encodings, '', 
'','suggest',true);
-    //}
-
-    return encodings;
+    return filterEncoding;
   }
 
   $scope.getColumnsByTable = function (tableName) {

http://git-wip-us.apache.org/repos/asf/kylin/blob/258353f5/webapp/app/js/controllers/cubeMeasures.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeMeasures.js 
b/webapp/app/js/controllers/cubeMeasures.js
index 2358167..2629179 100644
--- a/webapp/app/js/controllers/cubeMeasures.js
+++ b/webapp/app/js/controllers/cubeMeasures.js
@@ -44,16 +44,35 @@ KylinApp.controller('CubeMeasuresCtrl', function ($scope, 
$modal,MetaModel,cubes
       return 1;
     }
   }
-
+  $scope.createFilter=function(type){
+    if(type.indexOf("varchar")<=0){
+      return ['fixed_length_hex'];
+    }else if(type!="date"){
+      return ['date'];
+    }else if(type!="time"&&type!="datetime"&&type!="timestamp"){
+      return ['time'];
+    }else{
+      return [];
+    }
+  }
   $scope.getEncodings =function (name){
-    console.log(name);
     var type = TableModel.columnNameTypeMap[name]||'';
-    var encodings =$scope.store.supportedEncoding.slice(0),filterEncodings=[];
-    if($scope.isEdit){
-      var version = 
$scope.newMeasure.function.configuration['topn.encoding_version.' +name] || 1;
-      filterEncodings = VdmUtil.changeObjectListValueByFilter(encodings, 
'value', $scope.newMeasure.function.configuration['topn.encoding.' 
+name].replace(/:\d+/, "") + (version ? "[v" + version + "]" : "[v1]"), 
'suggest', true);
+    var encodings =$scope.store.supportedEncoding,filterEncoding=[];
+    var filerList=$scope.createFilter(type);
+    if($scope.isEdit) {
+      if (name && $scope.newMeasure.function.configuration) {
+        var version = 
$scope.newMeasure.function.configuration['topn.encoding_version.' + name] || 1;
+        filterEncoding = VdmUtil.getFilterObjectListByOrFilterVal(encodings, 
'value', $scope.newMeasure.function.configuration['topn.encoding.' + 
name].replace(/:\d+/, "") + (version ? "[v" + version + "]" : "[v1]"), 
'suggest', true);
+      }else{
+        
filterEncoding=VdmUtil.getFilterObjectListByOrFilterVal(encodings,'suggest', 
true);
+      }
+    }else{
+      
filterEncoding=VdmUtil.getFilterObjectListByOrFilterVal(encodings,'suggest', 
true);
+    }
+    for(var f=0;f<filerList.length;f++){
+      
filterEncoding=VdmUtil.removeFilterObjectList(filterEncoding,'baseValue',filerList[f]);
     }
-    return VdmUtil.getObjectListByFilterVal(filterEncodings, '', 
'','suggest',true);
+    return filterEncoding;
   }
   $scope.addNewMeasure = function (measure, index) {
     if(measure&&index>=0){

http://git-wip-us.apache.org/repos/asf/kylin/blob/258353f5/webapp/app/js/utils/utils.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/utils/utils.js b/webapp/app/js/utils/utils.js
index d2f9625..aabcad5 100644
--- a/webapp/app/js/utils/utils.js
+++ b/webapp/app/js/utils/utils.js
@@ -84,7 +84,7 @@ KylinApp.factory('VdmUtil', function ($modal, $timeout, 
$location, $anchorScroll
       }
       return resultValue;
     },
-    getObjectListByFilterVal:function(objList,key,value,matchkey,matchval){
+    
getFilterObjectListByAndFilterVal:function(objList,key,value,matchkey,matchval){
        var len=objList&&objList.length|| 0,newArr=[];
        for(var i=0;i<len;i++){
           
if(!key||value===objList[i][key]||(angular.isArray(value)&&value.indexOf(objList[i][key])>-1)){
@@ -99,15 +99,24 @@ KylinApp.factory('VdmUtil', function ($modal, $timeout, 
$location, $anchorScroll
        }
       return newArr;
     },
-    changeObjectListValueByFilter:function(objList,key,val,newKey,newVal){
+    getFilterObjectListByOrFilterVal:function(objList,key,val,orKey,orVal){
       var len=objList&&objList.length|| 0,newArr=[];
       for(var i=0;i<len;i++){
-        if(val===objList[i][key]){
-          objList[i][newKey]=newVal;
-          continue;
+        if((key&&val===objList[i][key])||(orKey&&objList[i][orKey]===orVal)){
+          newArr.push(objList[i]);
         }
       }
-      return objList;
+      return newArr;
+    },
+    removeFilterObjectList:function(objList,key,val,orKey,orVal){
+      var len=objList&&objList.length|| 0,newArr=[];
+      for(var i=0;i<len;i++){
+        if(key&&val!=objList[i][key]){
+          newArr.push(objList[i]);
+        }
+      }
+      return newArr;
     }
+
   }
 });

Reply via email to