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-hbase1.x 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; } + } });