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 2017/02/16 00:53:02 UTC
[14/17] kylin git commit: KYLIN-2222 web ui uses rest api to decide
which dim encoding is valid for different typed columns
KYLIN-2222 web ui uses rest api to decide which dim encoding is valid for different typed columns
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/c880db0d
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/c880db0d
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/c880db0d
Branch: refs/heads/master-hbase0.98
Commit: c880db0d7af2271c49f1465c1de229d7d52444ea
Parents: 0937722
Author: luguosheng <55...@qq.com>
Authored: Tue Feb 14 18:25:58 2017 +0800
Committer: Hongbin Ma <ma...@apache.org>
Committed: Wed Feb 15 23:02:34 2017 +0800
----------------------------------------------------------------------
webapp/app/index.html | 7 +-
webapp/app/js/controllers/cubeAdvanceSetting.js | 39 +++----
webapp/app/js/controllers/cubeEdit.js | 117 +++++++++++--------
webapp/app/js/controllers/cubeMeasures.js | 44 ++-----
webapp/app/js/model/cubeConfig.js | 3 +-
webapp/app/js/model/tableConfig.js | 100 +++++++++++++++-
webapp/app/js/model/tableModel.js | 51 +++++++-
webapp/app/js/services/encodings.js | 8 ++
webapp/app/js/utils/utils.js | 40 ++++---
webapp/app/partials/cubeDesigner/measures.html | 2 +-
10 files changed, 280 insertions(+), 131 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/c880db0d/webapp/app/index.html
----------------------------------------------------------------------
diff --git a/webapp/app/index.html b/webapp/app/index.html
index 13b54c8..407f179 100644
--- a/webapp/app/index.html
+++ b/webapp/app/index.html
@@ -22,6 +22,11 @@
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <!-- HTTP 1.1 -->
+ <meta http-equiv="pragma" content="no-cache">
+ <!-- HTTP 1.0 -->
+ <meta http-equiv="cache-control" content="no-cache">
+ <meta name="format-detection" content="telephone=no">
<base href="/kylin/">
<link rel="icon" href="image/favicon.ico" type="image/x-icon">
<link rel="shortcut icon" href="image/favicon.ico" type="image/x-icon">
@@ -128,7 +133,7 @@
<script src="js/services/auth.js"></script>
<script src="js/services/cubeDesc.js"></script>
<script src="js/services/model.js"></script>
-
+<script src="js/services/encodings.js"></script>
<script src="js/services/cubes.js"></script>
<script src="js/services/streaming.js"></script>
<script src="js/services/graph.js"></script>
http://git-wip-us.apache.org/repos/asf/kylin/blob/c880db0d/webapp/app/js/controllers/cubeAdvanceSetting.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeAdvanceSetting.js b/webapp/app/js/controllers/cubeAdvanceSetting.js
index 7cdb1cd..7aaa604 100644
--- a/webapp/app/js/controllers/cubeAdvanceSetting.js
+++ b/webapp/app/js/controllers/cubeAdvanceSetting.js
@@ -18,41 +18,34 @@
'use strict';
-KylinApp.controller('CubeAdvanceSettingCtrl', function ($scope, $modal,cubeConfig,MetaModel,cubesManager,CubeDescModel,SweetAlert) {
+KylinApp.controller('CubeAdvanceSettingCtrl', function ($scope, $modal,cubeConfig,MetaModel,cubesManager,CubeDescModel,SweetAlert,VdmUtil) {
$scope.cubesManager = cubesManager;
- $scope.getTypeVersion=function(typename){
- var searchResult=/\s*\(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(/\s*\(v\d+\)/g,"");
- }
- return "";
- }
- var needLengthKeyList=['fixed_length','fixed_length_hex','int','integer'];
- //rowkey
+
+ var needLengthKeyList=cubeConfig.needSetLengthEncodingList;
$scope.convertedRowkeys = [];
angular.forEach($scope.cubeMetaFrame.rowkey.rowkey_columns,function(item){
item.encoding=$scope.removeVersion(item.encoding);
- var _encoding = item.encoding;
- var _valueLength ;
+ var _valueLength;
+ var tableName=VdmUtil.getNameSpaceTopName(item.column);
+ var databaseName=$scope.getDatabaseByColumnName(item.column);
var baseKey=item.encoding.replace(/:\d+/,'');
- if(needLengthKeyList.indexOf(baseKey)!=-1){
+ if(needLengthKeyList.indexOf(baseKey)>-1){
var result=/:(\d+)/.exec(item.encoding);
_valueLength=result?result[1]:0;
}
- _encoding=baseKey;
+ var _encoding=baseKey;
var rowkeyObj = {
column:item.column,
- encoding:_encoding+(item.encoding_version?" (v"+item.encoding_version+")":" (v1)"),
+ encoding:_encoding+(item.encoding_version?"[v"+item.encoding_version+"]":"[v1]"),
+ encodingName:_encoding,
valueLength:_valueLength,
isShardBy:item.isShardBy,
- encoding_version:item.encoding_version||1
+ encoding_version:item.encoding_version||1,
+ table:tableName,
+ database:databaseName
+ }
+ if(item.index){
+ rowkeyObj.index=item.index;
}
$scope.convertedRowkeys.push(rowkeyObj);
http://git-wip-us.apache.org/repos/asf/kylin/blob/c880db0d/webapp/app/js/controllers/cubeEdit.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeEdit.js b/webapp/app/js/controllers/cubeEdit.js
index da19b22..32c630c 100755
--- a/webapp/app/js/controllers/cubeEdit.js
+++ b/webapp/app/js/controllers/cubeEdit.js
@@ -39,81 +39,99 @@ 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:[]
+ supportedEncoding:[],
+ encodingMaps:{}
}
+ TableModel.getColumnTypeEncodingMap().then(function(data){
+ $scope.store.encodingMaps=data;
+ });
CubeService.getValidEncodings({}, function (encodings) {
if(encodings){
- delete encodings.$promise;
- delete encodings.$resolved;
for(var i in encodings)
- if(encodings.hasOwnProperty(i)){
+ if(VdmUtil.isNotExtraKey(encodings,i)){
var value = i
var name = value;
- var typeVersion=+encodings[i];
- if(value=="int"){
- name = "int (deprecated)";
- }
- if(/\d+/.test(""+typeVersion)&&typeVersion>1){
- for(var s=1;s<=typeVersion;s++){
- $scope.store.supportedEncoding.push({
- "name":name+" (v"+s+","+(s==typeVersion&&typeVersion>1?"suggest)":")"),
- "value":value+" (v"+s+")",
- "version":typeVersion,
- "baseValue":value,
- "suggest":s==typeVersion
-
- });
+ var typeVersion=+encodings[i]||1;
+ var suggest=false,selecttips='';
+ if(/\d+/.test(""+typeVersion)&&typeVersion>=1){
+ for(var s=1;s<=typeVersion;s++){
+ if(s==typeVersion){
+ suggest=true;
}
- }else {
- $scope.store.supportedEncoding.push({
- "name": name,
- "value": value+" (v1)",
- "encoding_version":1,
- "version":typeVersion,
- "baseValue":value,
- "suggest":true
- });
+ if(value=="int"){
+ name = "int (deprecated)";
+ suggest=false;
+ }
+ if(typeVersion>1){
+ selecttips="(v"+s;
+ if(s==typeVersion){
+ selecttips=",suggest)"
+ }
+ selecttips=')';
+ }
+ $scope.store.supportedEncoding.push({
+ "name":name+selecttips,
+ "value":value+"[v"+s+"]",
+ "version":typeVersion,
+ "baseValue":value,
+ "suggest":suggest
+ });
+ }
}
}
- }
+ }
},function(e){
$scope.store.supportedEncoding = $scope.cubeConfig.encodings;
})
- $scope.createFilter=function(type){
- if(type.indexOf("varchar")==-1){
- return ['fixed_length_hex'];
- }else if(type!="date"){
- return ['date'];
- }else if(type!="time"&&type!="datetime"&&type!="timestamp"){
- return ['time'];
- }else{
- return [];
- }
+
+ $scope.getDatabaseByColumnName=function(column){
+ return VdmUtil.getNameSpaceTopName($scope.aliasTableMap[VdmUtil.getNameSpaceTopName(column)])
+ }
+ $scope.getColumnTypeByAliasName=function(column){
+ return TableModel.columnNameTypeMap[$scope.aliasTableMap[VdmUtil.getNameSpaceTopName(column)]+'.'+VdmUtil.removeNameSpace(column)];
}
$scope.getEncodings =function (name){
var filterName=name;
- var type = TableModel.columnNameTypeMap[filterName]||'';
+ var columnType= $scope.getColumnTypeByAliasName(filterName);
+ var matchList=VdmUtil.getObjValFromLikeKey($scope.store.encodingMaps,columnType);
var encodings =$scope.store.supportedEncoding,filterEncoding;
- var filerList=$scope.createFilter(type);
if($scope.isEdit){
- 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)
+ var rowkey_columns=$scope.cubeMetaFrame.rowkey.rowkey_columns;
+ if(rowkey_columns&&filterName){
+ for(var s=0;s<rowkey_columns.length;s++){
+ var database=$scope.getDatabaseByColumnName(rowkey_columns[s].column);
+ if(filterName==rowkey_columns[s].column){
+ var version=rowkey_columns[s].encoding_version;
+ var noLenEncoding=rowkey_columns[s].encoding.replace(/:\d+/,"");
+ filterEncoding=VdmUtil.getFilterObjectListByOrFilterVal(encodings,'value',noLenEncoding+(version?"[v"+version+"]":"[v1]"),'suggest',true)
+ matchList.push(noLenEncoding);
+ filterEncoding=VdmUtil.getObjectList(filterEncoding,'baseValue',matchList);
+ break;
}
}
}else{
filterEncoding=VdmUtil.getFilterObjectListByOrFilterVal(encodings,'suggest',true);
+ filterEncoding=VdmUtil.getObjectList(filterEncoding,'baseValue',matchList)
}
}else{
filterEncoding=VdmUtil.getFilterObjectListByOrFilterVal(encodings,'suggest',true);
- }
- for(var f=0;f<filerList.length;f++){
- filterEncoding=VdmUtil.removeFilterObjectList(filterEncoding,'baseValue',filerList[f]);
+ filterEncoding=VdmUtil.getObjectList(filterEncoding,'baseValue',matchList)
}
return filterEncoding;
}
@@ -782,6 +800,7 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
};
if (newValue) {
TableModel.initTables();
+ TableModel.getcolumnNameTypeMap();
TableService.list(param, function (tables) {
angular.forEach(tables, function (table) {
table.name = table.database + "." + table.name;
http://git-wip-us.apache.org/repos/asf/kylin/blob/c880db0d/webapp/app/js/controllers/cubeMeasures.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeMeasures.js b/webapp/app/js/controllers/cubeMeasures.js
index 91c38f2..fc146ba 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) {
+KylinApp.controller('CubeMeasuresCtrl', function ($scope, $modal,MetaModel,cubesManager,CubeDescModel,SweetAlert,VdmUtil,TableModel,cubeConfig) {
$scope.num=0;
$scope.convertedColumns=[];
$scope.groupby=[];
@@ -29,48 +29,24 @@ KylinApp.controller('CubeMeasuresCtrl', function ($scope, $modal,MetaModel,cubes
}
};
$scope.initUpdateMeasureStatus();
- var needLengthKeyList=['fixed_length','fixed_length_hex','int','integer'];
- $scope.removeVersion=function(typename){
- if(typename){
- return typename.replace(/\s*\(v\d+\)/g,"");
- }
- return "";
- }
- $scope.getTypeVersion=function(typename){
- var searchResult=/\s*\(v(\d+)\)/.exec(typename);
- if(searchResult&&searchResult.length){
- return searchResult.length&&searchResult[1]||1;
- }else{
- return 1;
- }
- }
- $scope.createFilter=function(type){
- if(type.indexOf("varchar")==-1){
- return ['fixed_length_hex'];
- }else if(type!="date"){
- return ['date'];
- }else if(type!="time"&&type!="datetime"&&type!="timestamp"){
- return ['time'];
- }else{
- return [];
- }
- }
+ var needLengthKeyList=cubeConfig.needSetLengthEncodingList;
$scope.getEncodings =function (name){
- var type = TableModel.columnNameTypeMap[name]||'';
+ var columnType = $scope.getColumnTypeByAliasName(name);
var encodings =$scope.store.supportedEncoding,filterEncoding=[];
- var filerList=$scope.createFilter(type);
+ var matchList=VdmUtil.getObjValFromLikeKey($scope.store.encodingMaps,columnType);
if($scope.isEdit) {
if (name && $scope.newMeasure.function.configuration&&$scope.newMeasure.function.configuration['topn.encoding.' + name]) {
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);
+ filterEncoding = VdmUtil.getFilterObjectListByOrFilterVal(encodings, 'value', $scope.newMeasure.function.configuration['topn.encoding.' + name].replace(/:\d+/, "") + (version ? "[v" + version + "]" : "[v1]"), 'suggest', true);
+ matchList.push($scope.newMeasure.function.configuration['topn.encoding.' + name].replace(/:\d+/, ""));
+ filterEncoding=VdmUtil.getObjectList(filterEncoding,'baseValue',matchList);
}else{
filterEncoding=VdmUtil.getFilterObjectListByOrFilterVal(encodings,'suggest', true);
+ filterEncoding=VdmUtil.getObjectList(filterEncoding,'baseValue',matchList);
}
}else{
filterEncoding=VdmUtil.getFilterObjectListByOrFilterVal(encodings,'suggest', true);
- }
- for(var f=0;f<filerList.length;f++){
- filterEncoding=VdmUtil.removeFilterObjectList(filterEncoding,'baseValue',filerList[f]);
+ filterEncoding=VdmUtil.getObjectList(filterEncoding,'baseValue',matchList);
}
return filterEncoding;
}
@@ -121,7 +97,7 @@ KylinApp.controller('CubeMeasuresCtrl', function ($scope, $modal,MetaModel,cubes
_encoding=baseKey;
$scope.GroupBy = {
name:_name,
- encoding:_encoding+(version?" (v"+version+")":" (v1)"),
+ encoding: _encoding + (version ? "[v" + version + "]" : "[v1]"),
valueLength:_valueLength,
encoding_version:version||1
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/c880db0d/webapp/app/js/model/cubeConfig.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/model/cubeConfig.js b/webapp/app/js/model/cubeConfig.js
index dc5ff7a..47d0f46 100644
--- a/webapp/app/js/model/cubeConfig.js
+++ b/webapp/app/js/model/cubeConfig.js
@@ -111,5 +111,6 @@ KylinApp.constant('cubeConfig', {
statusNeedNofity:['ERROR', 'DISCARDED', 'SUCCEED'],
buildDictionaries:[
{name:"Global Dictionary", value:"org.apache.kylin.dict.GlobalDictionaryBuilder"}
- ]
+ ],
+ needSetLengthEncodingList:['fixed_length','fixed_length_hex','int','integer']
});
http://git-wip-us.apache.org/repos/asf/kylin/blob/c880db0d/webapp/app/js/model/tableConfig.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/model/tableConfig.js b/webapp/app/js/model/tableConfig.js
index 2198018..3989531 100644
--- a/webapp/app/js/model/tableConfig.js
+++ b/webapp/app/js/model/tableConfig.js
@@ -24,8 +24,104 @@ KylinApp.constant('tableConfig', {
{attr: 'cardinality', name: 'Cardinality'},
{attr: 'comment', name: 'Comment'}
],
- dataTypes:["tinyint","smallint","int","bigint","float","double","decimal","timestamp","date","string","varchar(256)","char","boolean","binary"]
-
+ dataTypes:["tinyint","smallint","int","bigint","float","double","decimal","timestamp","date","string","varchar(256)","char","boolean","binary"],
+ columnTypeEncodingMap:{
+ "numeric": [
+ "dict"
+ ],
+ "bigint": [
+ "boolean",
+ "date",
+ "time",
+ "dict",
+ "integer"
+ ],
+ "char": [
+ "boolean",
+ "date",
+ "time",
+ "dict",
+ "fixed_length",
+ "fixed_length_hex",
+ "integer"
+ ],
+ "integer": [
+ "boolean",
+ "date",
+ "time",
+ "dict",
+ "integer"
+ ],
+ "int4": [
+ "boolean",
+ "date",
+ "time",
+ "dict",
+ "integer"
+ ],
+ "tinyint": [
+ "boolean",
+ "date",
+ "time",
+ "dict",
+ "integer"
+ ],
+ "double": [
+ "dict"
+ ],
+ "date": [
+ "date",
+ "time",
+ "dict"
+ ],
+ "float": [
+ "dict"
+ ],
+ "decimal": [
+ "dict"
+ ],
+ "timestamp": [
+ "date",
+ "time",
+ "dict"
+ ],
+ "real": [
+ "dict"
+ ],
+ "time": [
+ "date",
+ "time",
+ "dict"
+ ],
+ "long8": [
+ "boolean",
+ "date",
+ "time",
+ "dict",
+ "integer"
+ ],
+ "datetime": [
+ "date",
+ "time",
+ "dict"
+ ],
+ "smallint": [
+ "boolean",
+ "date",
+ "time",
+ "dict",
+ "integer"
+ ],
+ "varchar": [
+ "boolean",
+ "date",
+ "time",
+ "dict",
+ "fixed_length",
+ "fixed_length_hex",
+ "integer"
+ ]
+ }
});
http://git-wip-us.apache.org/repos/asf/kylin/blob/c880db0d/webapp/app/js/model/tableModel.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/model/tableModel.js b/webapp/app/js/model/tableModel.js
index 87c9b9d..11aecaf 100755
--- a/webapp/app/js/model/tableModel.js
+++ b/webapp/app/js/model/tableModel.js
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-KylinApp.service('TableModel', function(ProjectModel,$q,TableService,$log) {
+KylinApp.service('TableModel', function(ProjectModel,$q,TableService,$log,EncodingService,tableConfig) {
var _this = this;
@@ -26,6 +26,7 @@ KylinApp.service('TableModel', function(ProjectModel,$q,TableService,$log) {
//for tables in cubeDesigner
this.selectProjectTables = [];
this.columnNameTypeMap = {};
+ this.columnTypeEncodingMap={};
this.initTables = function(){
this.selectProjectTables = [];
@@ -48,7 +49,30 @@ KylinApp.service('TableModel', function(ProjectModel,$q,TableService,$log) {
this.selectedSrcDb = [];
this.selectedSrcTable = {};
};
-
+ this.getcolumnNameTypeMap=function(callback){
+ var param = {
+ ext: true,
+ project:ProjectModel.selectedProject
+ };
+ if(angular.equals({}, _this.columnNameTypeMap)) {
+ TableService.list(param, function (tables) {
+
+ angular.forEach(tables, function (table) {
+ angular.forEach(table.columns, function (column) {
+ var tableName=table.database+"."+table.name;
+ _this.columnNameTypeMap[tableName+'.'+column.name] = column.datatype;
+ });
+ });
+ if(typeof callback=='function'){
+ callback(_this.columnNameTypeMap);
+ }
+ });
+ }else{
+ if(typeof callback=='function'){
+ callback(_this.columnNameTypeMap);
+ }
+ }
+ }
this.aceSrcTbLoaded = function (forceLoad) {
_this.selectedSrcDb = [];
_this.loading = true;
@@ -69,7 +93,7 @@ KylinApp.service('TableModel', function(ProjectModel,$q,TableService,$log) {
TableService.list(param, function (tables) {
var tableMap = [];
angular.forEach(tables, function (table) {
-
+ var tableName=table.database+"."+table.name;
var tableData = [];
if (!tableMap[table.database]) {
@@ -82,7 +106,7 @@ KylinApp.service('TableModel', function(ProjectModel,$q,TableService,$log) {
column.cardinality = null;
}
column.id = parseInt(column.id);
- _this.columnNameTypeMap[column.name] = column.datatype;
+ _this.columnNameTypeMap[tableName+'.'+column.name] = column.datatype;
});
tableMap[table.database].push(table);
});
@@ -153,7 +177,26 @@ KylinApp.service('TableModel', function(ProjectModel,$q,TableService,$log) {
return defer.promise;
};
+ this.getColumnTypeEncodingMap=function(){
+ var _this=this;
+ var defer = $q.defer();
+ if(!angular.equals({},_this.columnTypeEncodingMap)){
+ defer.resolve(_this.columnTypeEncodingMap);
+ }
+ EncodingService.getEncodingMap({},{},function(result){
+ if(result&&result.data){
+ _this.columnTypeEncodingMap=result.data;
+ }else{
+ _this.columnTypeEncodingMap=tableConfig.columnTypeEncodingMap;
+ }
+ defer.resolve(_this.columnTypeEncodingMap);
+ },function(){
+ _this.columnTypeEncodingMap=tableConfig.columnTypeEncodingMap;
+ defer.resolve(_this.columnTypeEncodingMap);
+ })
+ return defer.promise;
+ }
this.getColumnType = function(_column,_table){
var columns = _this.getColumnsByTable(_table);
var type;
http://git-wip-us.apache.org/repos/asf/kylin/blob/c880db0d/webapp/app/js/services/encodings.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/services/encodings.js b/webapp/app/js/services/encodings.js
new file mode 100644
index 0000000..99bb091
--- /dev/null
+++ b/webapp/app/js/services/encodings.js
@@ -0,0 +1,8 @@
+/**
+ * Created by luguosheng on 17/2/9.
+ */
+KylinApp.factory('EncodingService', ['$resource', function ($resource, config) {
+ return $resource(Config.service.url + 'encodings/valid_encodings', {}, {
+ getEncodingMap: {method: 'GET', params: {}, isArray: false}
+ });
+}]);
http://git-wip-us.apache.org/repos/asf/kylin/blob/c880db0d/webapp/app/js/utils/utils.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/utils/utils.js b/webapp/app/js/utils/utils.js
index 1da840e..30ad261 100644
--- a/webapp/app/js/utils/utils.js
+++ b/webapp/app/js/utils/utils.js
@@ -84,21 +84,6 @@ KylinApp.factory('VdmUtil', function ($modal, $timeout, $location, $anchorScroll
}
return resultValue;
},
- 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)){
- if(matchkey){
- if(matchval==objList[i][matchkey]||(angular.isArray(matchval)&&value.indexOf(objList[i][matchkey])>-1)){
- newArr.push(objList[i])
- }
- }else{
- newArr.push(objList[i])
- }
- }
- }
- return newArr;
- },
getFilterObjectListByOrFilterVal:function(objList,key,val,orKey,orVal){
var len=objList&&objList.length|| 0,newArr=[];
for(var i=0;i<len;i++){
@@ -108,7 +93,7 @@ KylinApp.factory('VdmUtil', function ($modal, $timeout, $location, $anchorScroll
}
return newArr;
},
- removeFilterObjectList:function(objList,key,val,orKey,orVal){
+ removeFilterObjectList:function(objList,key,val){
var len=objList&&objList.length|| 0,newArr=[];
for(var i=0;i<len;i++){
if(key&&val!=objList[i][key]){
@@ -141,6 +126,26 @@ KylinApp.factory('VdmUtil', function ($modal, $timeout, $location, $anchorScroll
}
return angular.toJson(filterData(newObj),true);
},
+ getObjectList:function(objList,key,valueList){
+ var len=objList&&objList.length|| 0,newArr=[];
+ for(var i=0;i<len;i++){
+ if(angular.isArray(valueList)&&valueList.indexOf(objList[i][key])>-1){
+ newArr.push(objList[i]);
+ }
+ }
+ return newArr;
+ },
+ getObjValFromLikeKey:function(obj,key){
+ if(!key){
+ return [];
+ }
+ for(var i in obj){
+ if(key.startsWith(i)){
+ return angular.copy(obj[i]);
+ }
+ }
+ return [];
+ },
removeNameSpace:function(str){
if(str){
return str.replace(/([^.\s]+\.)+/,'');
@@ -162,5 +167,8 @@ KylinApp.factory('VdmUtil', function ($modal, $timeout, $location, $anchorScroll
return '';
}
},
+ isNotExtraKey:function(obj,key){
+ return obj&&key&&key!="$promise"&&key!='$resolved'&&obj.hasOwnProperty(key);
+ }
}
});
http://git-wip-us.apache.org/repos/asf/kylin/blob/c880db0d/webapp/app/partials/cubeDesigner/measures.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/cubeDesigner/measures.html b/webapp/app/partials/cubeDesigner/measures.html
index b7475b6..5ca43fe 100755
--- a/webapp/app/partials/cubeDesigner/measures.html
+++ b/webapp/app/partials/cubeDesigner/measures.html
@@ -256,7 +256,7 @@
</td>
<!--Column Encoding -->
<td>
- <select ng-if="state.mode=='edit'"
+ <select ng-if="state.mode=='edit'" style="width: 100%"
chosen ng-model="groupby_column.encoding"
ng-change="refreshGroupBy(convertedColumns,$index,groupby_column)"
ng-options="dt.value as dt.name for dt in getEncodings(groupby_column.name)">