KYLIN-1438 rm unused dimension from aggregation group when auto gen aggregation 
group


Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/1c4d3a15
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/1c4d3a15
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/1c4d3a15

Branch: refs/heads/2.x-staging
Commit: 1c4d3a158934ab86b13bce84e2ecbbd68540ef19
Parents: 2c602a0
Author: janzhongi <[email protected]>
Authored: Tue Feb 23 20:02:36 2016 +0800
Committer: janzhongi <[email protected]>
Committed: Tue Feb 23 20:02:36 2016 +0800

----------------------------------------------------------------------
 webapp/app/js/controllers/cubeEdit.js | 81 +++++++++++++++++++++---------
 1 file changed, 58 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/1c4d3a15/webapp/app/js/controllers/cubeEdit.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeEdit.js 
b/webapp/app/js/controllers/cubeEdit.js
index 7d8c299..6f0df38 100755
--- a/webapp/app/js/controllers/cubeEdit.js
+++ b/webapp/app/js/controllers/cubeEdit.js
@@ -518,34 +518,17 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, 
$routeParams, $locatio
     $scope.cubeMetaFrame.rowkey.rowkey_columns = newRowKeyColumns;
 
     if ($scope.cubeMode === "editExistCube") {
+      //clear dims will not be used
       var aggregationGroups = $scope.cubeMetaFrame.aggregation_groups;
-      // rm unused item from group,will only rm when [edit] dimension
-      angular.forEach(aggregationGroups, function (group, index) {
-        if (group) {
-          for (var j = 0; j < group.includes.length; j++) {
-            var elemStillExist = false;
-            for (var k = 0; k < tmpAggregationItems.length; k++) {
-              if (group.includes[j] == tmpAggregationItems[k]) {
-                elemStillExist = true;
-                break;
-              }
-            }
-            if (!elemStillExist) {
-              group.includes.splice(j, 1);
-              j--;
-            }
-          }
-        }
-        else {
-          aggregationGroups.splice(index, 1);
-          index--;
-        }
-      });
+      rmDeprecatedDims(aggregationGroups,tmpAggregationItems);
     }
 
     if ($scope.cubeMode === "addNewCube") {
-      //only first time will will generate agg group auto
+
+      //clear dims will not be used
       if($scope.cubeMetaFrame.aggregation_groups.length){
+        var aggregationGroups = $scope.cubeMetaFrame.aggregation_groups;
+        rmDeprecatedDims(aggregationGroups,tmpAggregationItems);
         return;
       }
 
@@ -574,6 +557,58 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, 
$routeParams, $locatio
     }
   }
 
+  function rmDeprecatedDims(aggregationGroups,tmpAggregationItems){
+    angular.forEach(aggregationGroups, function (group, index) {
+      if (group) {
+        for (var j = 0; j < group.includes.length; j++) {
+          var elemStillExist = false;
+          for (var k = 0; k < tmpAggregationItems.length; k++) {
+            if (group.includes[j] == tmpAggregationItems[k]) {
+              elemStillExist = true;
+              break;
+            }
+          }
+          if (!elemStillExist) {
+            var deprecatedItem = group.includes[j];
+            //rm deprecated dimension from include
+            group.includes.splice(j, 1);
+            j--;
+
+            //rm deprecated dimension in mandatory dimensions
+            var mandatory = group.select_rule.mandatory_dims;
+            if(mandatory && mandatory.length){
+              var columnIndex = mandatory.indexOf(deprecatedItem);
+              group.select_rule.mandatory_dims.splice(columnIndex,1);
+            }
+
+            var hierarchys =  group.select_rule.hierarchy_dims;
+            if(hierarchys && hierarchys.length){
+              for(var i=0;i<hierarchys.length;i++){
+                var hierarchysIndex = hierarchys[i].indexOf(deprecatedItem);
+                group.select_rule.hierarchy_dims[i].splice(hierarchysIndex,1);
+              }
+
+            }
+
+            var joints =  group.select_rule.joint_dims;
+            if(joints && joints.length){
+              for(var i=0;i<joints.length;i++){
+                var jointIndex = joints[i].indexOf(deprecatedItem);
+                group.select_rule.joint_dims[i].splice(jointIndex,1);
+              }
+
+            }
+
+          }
+        }
+      }
+      else {
+        aggregationGroups.splice(index, 1);
+        index--;
+      }
+    });
+  }
+
   function sortSharedData(oldArray, tmpArr) {
     var newArr = [];
     for (var j = 0; j < oldArray.length; j++) {

Reply via email to