From 5861cae60e7e0e930abe48cc0c6ec0644a0d6848 Mon Sep 17 00:00:00 2001 From: jiazhong Date: Tue, 25 Nov 2014 16:42:43 +0800 Subject: [PATCH] enhance gen®en rowkey&rowgroup when create cube --- webapp/app/js/controllers/cubeEdit.js | 74 +++++++++++++++++++++++------------ 1 file changed, 50 insertions(+), 24 deletions(-) diff --git a/webapp/app/js/controllers/cubeEdit.js b/webapp/app/js/controllers/cubeEdit.js index 5592321..1b0a99e 100644 --- a/webapp/app/js/controllers/cubeEdit.js +++ b/webapp/app/js/controllers/cubeEdit.js @@ -148,13 +148,12 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio $scope.prepareCube = function () { // generate column family generateColumnFamily(); + generateDefaultRowkey(); + // generate default rowkey and aggregation groups. - if ($scope.cubeMetaFrame.rowkey.rowkey_columns.length == 0 && $scope.cubeMetaFrame.rowkey.aggregation_groups.length == 0) { - generateDefaultRowkey(); - }else{ - reGenerateRowKey(); - } +// if ($scope.cubeMetaFrame.rowkey.aggregation_groups.length == 0) { +// } // Clean up objects used in cube creation angular.forEach($scope.cubeMetaFrame.dimensions, function (dimension, index) { @@ -242,11 +241,12 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio } - function reGenerateRowKey(){ + function reGenerateRowKey(dimensions){ + console.log("reGen rowkey & agg group"); var tmpRowKeyColumns = []; var tmpAggretationItems = []; - angular.forEach($scope.cubeMetaFrame.dimensions, function (dimension, index) { + angular.forEach(dimensions, function (dimension, index) { if (dimension.column == '{FK}' && dimension.join && dimension.join.foreign_key.length > 0) { angular.forEach(dimension.join.foreign_key, function (fk, index) { for (var i = 0; i < tmpRowKeyColumns.length; i++) { @@ -322,24 +322,31 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio } if(!elemStillExist){ group.splice(j,1); + j--; } } - }); - - var uniqGroupItem = []; - angular.forEach(aggregationGroups, function (group, index) { - for(var j = 0;j 0) { @@ -460,7 +477,7 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio }); } - $scope.cubeMetaFrame.rowkey.aggregation_groups[0].push(fk); + tmpAggregationGroups.push(fk); }); } else if (dimension.column) { @@ -477,7 +494,7 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio }); } - $scope.cubeMetaFrame.rowkey.aggregation_groups[0].push(dimension.column); + tmpAggregationGroups.push(dimension.column); } if (dimension.hierarchy && dimension.hierarchy.length > 0) { @@ -495,10 +512,12 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio }); } - $scope.cubeMetaFrame.rowkey.aggregation_groups[0].push(hierarchy.column); + tmpAggregationGroups.push(hierarchy.column); }); } }); + var increasedDataGroups = sliceGroupItemToGroups(tmpAggregationGroups); + $scope.cubeMetaFrame.rowkey.aggregation_groups = increasedDataGroups; } function recoveryCubeStatus() { @@ -534,4 +553,11 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio } }); + $scope.$watchCollection('cubeMetaFrame.dimensions', function (newValue, oldValue) { + if(newValue){ + reGenerateRowKey(newValue); + } + }); + + });