You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by ka...@apache.org on 2017/07/07 08:38:05 UTC
[03/50] [abbrv] kylin git commit: KYLIN-2689 Only dimension columns
can join when create a model
KYLIN-2689 Only dimension columns can join when create a model
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/2bc90f93
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/2bc90f93
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/2bc90f93
Branch: refs/heads/KYLIN-2606
Commit: 2bc90f9331bcdc2e64b43cb5025640f95ec4efe1
Parents: 3f3cb39
Author: luguosheng1314 <55...@qq.com>
Authored: Wed Jun 28 00:56:39 2017 +0800
Committer: chenzhx <34...@qq.com>
Committed: Wed Jun 28 09:10:33 2017 +0800
----------------------------------------------------------------------
webapp/app/js/controllers/modelMeasures.js | 33 +++++++++++---------
webapp/app/js/filters/filter.js | 17 ++++++++++
.../partials/modelDesigner/model_measures.html | 2 +-
3 files changed, 37 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/2bc90f93/webapp/app/js/controllers/modelMeasures.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/modelMeasures.js b/webapp/app/js/controllers/modelMeasures.js
index 342f341..5a3ac61 100644
--- a/webapp/app/js/controllers/modelMeasures.js
+++ b/webapp/app/js/controllers/modelMeasures.js
@@ -22,7 +22,7 @@
'use strict';
-KylinApp.controller('ModelMeasuresCtrl', function ($scope, $modal,MetaModel,modelsManager,VdmUtil) {
+KylinApp.controller('ModelMeasuresCtrl', function ($scope, $modal,MetaModel,modelsManager,VdmUtil,$filter) {
$scope.modelsManager = modelsManager;
$scope.availableFactTables = [];
$scope.selectedFactTables = {};
@@ -33,20 +33,25 @@ KylinApp.controller('ModelMeasuresCtrl', function ($scope, $modal,MetaModel,mode
$scope.availableFactTables.push(joinTable[j].alias);
}
}
+ $scope.changeColumns = function (table){
+ angular.forEach($scope.selectedFactTables[table],function(column){
+ if($scope.modelsManager.selectedModel.metrics.indexOf(column)==-1){
+ $scope.modelsManager.selectedModel.metrics.push(column);
+ }
+ });
+ angular.forEach($scope.modelsManager.selectedModel.metrics,function(metric){
+ if($scope.selectedFactTables[VdmUtil.getNameSpaceAliasName(metric)].indexOf(metric)==-1){
+ $scope.modelsManager.selectedModel.metrics.splice($scope.modelsManager.selectedModel.metrics.indexOf(metric),1);
+ }
+ });
+ }
angular.forEach($scope.modelsManager.selectedModel.metrics,function(metric){
- $scope.selectedFactTables[VdmUtil.getNameSpaceAliasName(metric)]=$scope.selectedFactTables[VdmUtil.getNameSpaceAliasName(metric)]||[];
- $scope.selectedFactTables[VdmUtil.getNameSpaceAliasName(metric)].push(metric);
+ var aliasName = VdmUtil.getNameSpaceAliasName(metric)
+ $scope.selectedFactTables[aliasName]=$scope.selectedFactTables[aliasName]||[];
+ $scope.selectedFactTables[aliasName].push(metric);
});
- $scope.changeColumns = function (table){
- angular.forEach($scope.selectedFactTables[table],function(column){
- if($scope.modelsManager.selectedModel.metrics.indexOf(column)==-1){
- $scope.modelsManager.selectedModel.metrics.push(column);
- }
- });
- angular.forEach($scope.modelsManager.selectedModel.metrics,function(metric){
- if($scope.selectedFactTables[VdmUtil.getNameSpaceAliasName(metric)].indexOf(metric)==-1){
- $scope.modelsManager.selectedModel.metrics.splice($scope.modelsManager.selectedModel.metrics.indexOf(metric),1);
- }
- });
+ for (var i in $scope.selectedFactTables) {
+ $scope.selectedFactTables[i] = $filter('notInJoin')($scope.selectedFactTables[i], i, $scope.modelsManager.selectedModel.lookups)
+ $scope.changeColumns(i)
}
});
http://git-wip-us.apache.org/repos/asf/kylin/blob/2bc90f93/webapp/app/js/filters/filter.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/filters/filter.js b/webapp/app/js/filters/filter.js
index 78f6cf9..8b6cffa 100755
--- a/webapp/app/js/filters/filter.js
+++ b/webapp/app/js/filters/filter.js
@@ -204,6 +204,23 @@ KylinApp
});
return out;
}
+ }).filter('notInJoin', function ($filter) {
+ return function (inputArr, table, arr) {
+ var out=[];
+ angular.forEach(inputArr, function (inputItem) {
+ var isInJoin = false
+ angular.forEach(arr,function(item) {
+ var checkColumn = inputItem.name ? table + '.' + inputItem.name : inputItem;
+ if (item.join.foreign_key.indexOf(checkColumn) !== -1 || item.join.primary_key.indexOf(checkColumn) !== -1) {
+ isInJoin = true;
+ }
+ });
+ if (!isInJoin) {
+ out.push(inputItem);
+ }
+ });
+ return out;
+ }
}).filter('inMeaNotInDim', function ($filter) {
return function (inputArr, table, arr) {
var out=[];
http://git-wip-us.apache.org/repos/asf/kylin/blob/2bc90f93/webapp/app/partials/modelDesigner/model_measures.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/modelDesigner/model_measures.html b/webapp/app/partials/modelDesigner/model_measures.html
index bf27914..d41f690 100644
--- a/webapp/app/partials/modelDesigner/model_measures.html
+++ b/webapp/app/partials/modelDesigner/model_measures.html
@@ -68,7 +68,7 @@
ng-model="selectedFactTables[table]" multiple>
<ui-select-match placeholder="Select Column...">{{$item.name}}</ui-select-match>
<ui-select-choices
- repeat="table+'.'+measure.name as measure in getColumnsByAlias(table) | filter:$select.search|inDimNotInMea:table:modelsManager.selectedModel.dimensions">
+ repeat="table+'.'+measure.name as measure in getColumnsByAlias(table) | filter:$select.search|inDimNotInMea:table:modelsManager.selectedModel.dimensions|notInJoin:table:modelsManager.selectedModel.lookups">
{{measure.name}}
</ui-select-choices>
</ui-select>