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>