You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by ma...@apache.org on 2016/11/22 06:00:36 UTC
[2/2] kylin git commit: encoding add filter by column type
encoding add filter by column type
Signed-off-by: Hongbin Ma <ma...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/8132cab3
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/8132cab3
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/8132cab3
Branch: refs/heads/master
Commit: 8132cab31fc084cf6b83ab29884e6821d86bf249
Parents: 12221a3
Author: luguosheng <55...@qq.com>
Authored: Sat Nov 19 16:49:41 2016 +0800
Committer: Hongbin Ma <ma...@apache.org>
Committed: Tue Nov 22 14:00:12 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/8132cab3/webapp/app/js/controllers/cubeEdit.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeEdit.js b/webapp/app/js/controllers/cubeEdit.js
index a663d6f..9e2a3c9 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);
}
- //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;
+ for(var f=0;f<filerList.length;f++){
+ filterEncoding=VdmUtil.removeFilterObjectList(filterEncoding,'baseValue',filerList[f]);
+ }
+ return filterEncoding;
}
$scope.getColumnsByTable = function (tableName) {
http://git-wip-us.apache.org/repos/asf/kylin/blob/8132cab3/webapp/app/js/controllers/cubeMeasures.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeMeasures.js b/webapp/app/js/controllers/cubeMeasures.js
index c3d2754..085338f 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/8132cab3/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;
}
+
}
});