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/20 10:29:43 UTC
kylin git commit: KYLIN-1875,refine the alisMap
Repository: kylin
Updated Branches:
refs/heads/master d7ecd6e2f -> ed413ee34
KYLIN-1875,refine the alisMap
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/ed413ee3
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/ed413ee3
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/ed413ee3
Branch: refs/heads/master
Commit: ed413ee34a6f0301b57133ef7b4d45d58fc9f534
Parents: d7ecd6e
Author: luguosheng <55...@qq.com>
Authored: Mon Feb 20 16:36:53 2017 +0800
Committer: Hongbin Ma <ma...@apache.org>
Committed: Mon Feb 20 18:29:35 2017 +0800
----------------------------------------------------------------------
webapp/app/js/controllers/cubeDimensions.js | 26 +-----
webapp/app/js/controllers/cubeEdit.js | 58 ++----------
webapp/app/js/controllers/cubeSchema.js | 94 +++++++++++++++++++-
webapp/app/js/model/modelsManager.js | 8 ++
.../app/partials/cubeDesigner/dimensions.html | 6 +-
5 files changed, 112 insertions(+), 80 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/ed413ee3/webapp/app/js/controllers/cubeDimensions.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeDimensions.js b/webapp/app/js/controllers/cubeDimensions.js
index 80d54bb..44739ac 100644
--- a/webapp/app/js/controllers/cubeDimensions.js
+++ b/webapp/app/js/controllers/cubeDimensions.js
@@ -52,19 +52,6 @@ KylinApp.controller('CubeDimensionsCtrl', function ($scope, $modal,MetaModel,cub
var rootFactTable = VdmUtil.removeNameSpace($scope.metaModel.model.fact_table);
- if($scope.aliasName.length==0){
- $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);
- });
- }
// At first dump the columns of fact table.
var cols = $scope.getDimColumnsByAlias(rootFactTable);
@@ -83,17 +70,10 @@ KylinApp.controller('CubeDimensionsCtrl', function ($scope, $modal,MetaModel,cub
$scope.availableColumns[rootFactTable] = cols;
factSelectAvailable.all=false;
$scope.selectedColumns[rootFactTable] = factSelectAvailable;
-// $scope.availableTables.push(rootFactTable);
- $scope.availableFactTables.push(rootFactTable);
// Then dump each lookup tables.
var lookups = $scope.metaModel.model.lookups;
for (var j = 0; j < lookups.length; j++) {
- if(lookups[j].kind=="FACT"){
- $scope.availableFactTables.push(lookups[j].alias);
- }else{
- $scope.availableLookupTables.push(lookups[j].alias);
- }
var cols2 = $scope.getDimColumnsByAlias(lookups[j].alias);
// Initialize selected available.
@@ -380,7 +360,7 @@ KylinApp.controller('CubeDimensionsCtrl', function ($scope, $modal,MetaModel,cub
var selectedCols = $scope.getSelectedCols();
dimList=[];
angular.forEach(selectedCols, function (cols, table) {
- if ($scope.availableFactTables.indexOf(table)!=-1) {
+ if ($scope.modelsManager.availableFactTables.indexOf(table)!=-1) {
// Fact table: for each selected column, create one normal dimension.
for (var i = 0; i < cols.length; i++) {
dimList.push(Dimension(cols[i].name, table, [cols[i].col], 'normal'));
@@ -401,7 +381,7 @@ KylinApp.controller('CubeDimensionsCtrl', function ($scope, $modal,MetaModel,cub
};
$scope.autoChange = function(table,name){
- if($scope.availableFactTables.indexOf(table)!=-1){
+ if($scope.modelsManager.availableFactTables.indexOf(table)!=-1){
if($scope.selectedColumns[table][name].selected==false){
$scope.selectedColumns[table].all=false;
}else{
@@ -435,7 +415,7 @@ KylinApp.controller('CubeDimensionsCtrl', function ($scope, $modal,MetaModel,cub
}
$scope.autoChangeAll= function(table){
- if($scope.availableFactTables.indexOf(table)!=-1){
+ if($scope.modelsManager.availableFactTables.indexOf(table)!=-1){
if($scope.selectedColumns[table].all==true){
angular.forEach($scope.selectedColumns[table],function(col){
if(typeof col==="object"){
http://git-wip-us.apache.org/repos/asf/kylin/blob/ed413ee3/webapp/app/js/controllers/cubeEdit.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeEdit.js b/webapp/app/js/controllers/cubeEdit.js
index bc0bceb..92d8305 100755
--- a/webapp/app/js/controllers/cubeEdit.js
+++ b/webapp/app/js/controllers/cubeEdit.js
@@ -23,11 +23,7 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
$scope.cubeConfig = cubeConfig;
$scope.metaModel = {};
$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';
@@ -86,41 +82,6 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
$scope.store.supportedEncoding = $scope.cubeConfig.encodings;
})
- $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 columnType= modelsManager.getColumnTypeByColumnName(filterName);
- var matchList=VdmUtil.getObjValFromLikeKey($scope.store.encodingMaps,columnType);
- var encodings =$scope.store.supportedEncoding,filterEncoding;
- if($scope.isEdit){
- 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);
- filterEncoding=VdmUtil.getObjectList(filterEncoding,'baseValue',matchList)
- }
- return filterEncoding;
- }
$scope.getColumnsByAlias = function (alias) {
var temp = [];
angular.forEach(TableModel.selectProjectTables, function (table) {
@@ -145,7 +106,7 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
if (!alias) {
return [];
}
- var tableColumns = $scope.getColumnsByAlias(alias);
+ var tableColumns = $scope.modelsManager.getColumnsByAlias(alias);
var tableDim = _.find($scope.metaModel.model.dimensions, function (dimension) {
return dimension.table == alias
});
@@ -229,7 +190,7 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
var me_columns = [];
//add cube dimension column for specific measure
angular.forEach($scope.cubeMetaFrame.dimensions,function(dimension,index){
- if($scope.availableFactTables.indexOf(dimension.table)==-1){
+ if($scope.modelsManager.availableFactTables.indexOf(dimension.table)==-1){
return;
}
if(dimension.column && dimension.derived == null){
@@ -261,23 +222,14 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
me_columns.push(measure.function.parameter.value);
}
});
-
- var unique = []
-
- angular.forEach(me_columns, function (column) {
- if (unique.indexOf(column) === -1) {
- unique.push(column);
- }
- });
-
- return unique;
+ return distinct_array(me_columns);
};
$scope.getColumnType = function (_column, alias) {
- var columns = $scope.getColumnsByAlias(alias);
+ var columns = $scope.modelsManager.getColumnsByAlias(alias);
var type;
angular.forEach(columns, function (column) {
if (_column === column.name) {
http://git-wip-us.apache.org/repos/asf/kylin/blob/ed413ee3/webapp/app/js/controllers/cubeSchema.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeSchema.js b/webapp/app/js/controllers/cubeSchema.js
index 6aeea3c..91a1567 100755
--- a/webapp/app/js/controllers/cubeSchema.js
+++ b/webapp/app/js/controllers/cubeSchema.js
@@ -18,7 +18,7 @@
'use strict';
-KylinApp.controller('CubeSchemaCtrl', function ($scope, QueryService, UserService,modelsManager, ProjectService, AuthenticationService,$filter,ModelService,MetaModel,CubeDescModel,CubeList,TableModel,ProjectModel,ModelDescService,SweetAlert,cubesManager,StreamingService,CubeService) {
+KylinApp.controller('CubeSchemaCtrl', function ($scope, QueryService, UserService,modelsManager, ProjectService, AuthenticationService,$filter,ModelService,MetaModel,CubeDescModel,CubeList,TableModel,ProjectModel,ModelDescService,SweetAlert,cubesManager,StreamingService,CubeService,VdmUtil) {
$scope.modelsManager = modelsManager;
$scope.cubesManager = cubesManager;
$scope.projects = [];
@@ -37,6 +37,98 @@ KylinApp.controller('CubeSchemaCtrl', function ($scope, QueryService, UserServic
$scope.curStep = $scope.wizardSteps[0];
+ $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,"").replace(/\s+/g,'');
+ }
+ return "";
+ }
+
+ //init encoding list
+ $scope.store = {
+ supportedEncoding:[],
+ encodingMaps:{}
+ }
+ TableModel.getColumnTypeEncodingMap().then(function(data){
+ $scope.store.encodingMaps=data;
+ });
+ CubeService.getValidEncodings({}, function (encodings) {
+ if(encodings){
+ for(var i in encodings)
+ if(VdmUtil.isNotExtraKey(encodings,i)){
+ var value = i
+ var name = value;
+ 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;
+ }
+ 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.getEncodings =function (name){
+ var filterName=name;
+ var columnType= $scope.modelsManager.getColumnTypeByColumnName(filterName);
+ var matchList=VdmUtil.getObjValFromLikeKey($scope.store.encodingMaps,columnType);
+ var encodings =$scope.store.supportedEncoding,filterEncoding;
+ if($scope.isEdit){
+ var rowkey_columns=$scope.cubeMetaFrame.rowkey.rowkey_columns;
+ if(rowkey_columns&&filterName){
+ for(var s=0;s<rowkey_columns.length;s++){
+ 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);
+ filterEncoding=VdmUtil.getObjectList(filterEncoding,'baseValue',matchList)
+ }
+ return filterEncoding;
+ }
+
+
+
$scope.allCubes = [];
$scope.getTypeVersion=function(typename){
http://git-wip-us.apache.org/repos/asf/kylin/blob/ed413ee3/webapp/app/js/model/modelsManager.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/model/modelsManager.js b/webapp/app/js/model/modelsManager.js
index f00f5cc..99a4646 100644
--- a/webapp/app/js/model/modelsManager.js
+++ b/webapp/app/js/model/modelsManager.js
@@ -101,6 +101,11 @@ KylinApp.service('modelsManager',function(ModelService,CubeService,$q,AccessServ
this.initAliasMapByModelSchema=function(metaModel){
var rootFactTable = VdmUtil.removeNameSpace(metaModel.model.fact_table);
+ this.tableAliasMap={};
+ this.aliasTableMap={};
+ this.availableFactTables=[];
+ this.availableLookupTables=[];
+ this.aliasName=[];
this.availableFactTables.push(rootFactTable);
this.aliasName.push(rootFactTable);
this.aliasTableMap[rootFactTable]=metaModel.model.fact_table;
@@ -126,5 +131,8 @@ KylinApp.service('modelsManager',function(ModelService,CubeService,$q,AccessServ
this.getColumnTypeByColumnName=function(column){
return TableModel.columnNameTypeMap[this.aliasTableMap[VdmUtil.getNameSpaceTopName(column)]+'.'+VdmUtil.removeNameSpace(column)];
}
+ this.getColumnsByAlias=function(alias){
+ return TableModel.getColumnsByTable(this.aliasTableMap[alias]);
+ }
});
http://git-wip-us.apache.org/repos/asf/kylin/blob/ed413ee3/webapp/app/partials/cubeDesigner/dimensions.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/cubeDesigner/dimensions.html b/webapp/app/partials/cubeDesigner/dimensions.html
index b8bd05f..e1833d3 100644
--- a/webapp/app/partials/cubeDesigner/dimensions.html
+++ b/webapp/app/partials/cubeDesigner/dimensions.html
@@ -177,7 +177,7 @@
</div>
</div>
</div>
- <div ng-if="availableLookupTables.indexOf(newDimension.table)!=-1">
+ <div ng-if="modelsManager.availableLookupTables.indexOf(newDimension.table)!=-1">
<div class="row">
<label class="control-label col-xs-12 col-sm-3 no-padding-right font-color-default">
<b>Type</b>
@@ -217,7 +217,7 @@
<div class="box-body">
<ul class="list-unstyled columns-region">
<!--FactTable-->
- <div ng-repeat="table in availableFactTables track by $index" class="panel-default " >
+ <div ng-repeat="table in modelsManager.availableFactTables track by $index" class="panel-default " >
<h4>{{table}} [FactTable]</h4>
<table class="table table-striped table-hover ng-scope">
<tr >
@@ -243,7 +243,7 @@
</table>
</div>
<!--LookUp Table-->
- <div ng-repeat="table in availableLookupTables track by $index" class="panel-default" >
+ <div ng-repeat="table in modelsManager.availableLookupTables track by $index" class="panel-default" >
<h4>{{table}} [LookupTable]</h4>
<table class="table table-striped table-hover ng-scope">
<tr class="row" >