From 6aab04e45dc3e4a8a3d33a958047eb8e5b2acc08 Mon Sep 17 00:00:00 2001 From: jiazhong Date: Thu, 20 Nov 2014 23:21:03 +0800 Subject: [PATCH] add refresh rowkey&aggregation group --- webapp/app/js/controllers/cubeEdit.js | 183 ++++++++++++++++++++++- webapp/app/js/controllers/cubeSchema.js | 8 +- webapp/app/js/controllers/cubes.js | 2 +- webapp/app/partials/cubeDesigner/dimensions.html | 2 +- webapp/app/partials/projects/project_detail.html | 2 +- webapp/app/routes.json | 2 +- 6 files changed, 190 insertions(+), 9 deletions(-) diff --git a/webapp/app/js/controllers/cubeEdit.js b/webapp/app/js/controllers/cubeEdit.js index 13af908..9a9905b 100644 --- a/webapp/app/js/controllers/cubeEdit.js +++ b/webapp/app/js/controllers/cubeEdit.js @@ -152,6 +152,8 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio // generate default rowkey and aggregation groups. if ($scope.cubeMetaFrame.rowkey.rowkey_columns.length == 0 && $scope.cubeMetaFrame.rowkey.aggregation_groups.length == 0) { generateDefaultRowkey(); + }else{ + reGenerateRowKey(); } // Clean up objects used in cube creation @@ -165,6 +167,7 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio } }); + if ($scope.cubeMetaFrame.cube_partition_desc.partition_date_start) { var dateStart = new Date($scope.cubeMetaFrame.cube_partition_desc.partition_date_start); dateStart = (dateStart.getFullYear() + "-" + (dateStart.getMonth() + 1) + "-" + dateStart.getDate()); @@ -238,6 +241,178 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio } } + + function reGenerateRowKey(){ + var tmpRowKeyColumns = []; + var tmpAggretationItems = []; + + angular.forEach($scope.cubeMetaFrame.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++) { + if(tmpRowKeyColumns[i].column == fk) + break; + } + if(i == tmpRowKeyColumns.length) { + tmpRowKeyColumns.push({ + "column": fk, + "length": 30, + "dictionary": true, + "mandatory": false + }); + } + tmpAggretationItems.push(fk); + }); + } + else if (dimension.column) { + for (var i = 0; i < tmpRowKeyColumns.length; i++) { + if(tmpRowKeyColumns.column == dimension.column) + break; + } + if(i == tmpRowKeyColumns.length) { + tmpRowKeyColumns.push({ + "column": dimension.column, + "length": 30, + "dictionary": true, + "mandatory": false + }); + } + tmpAggretationItems.push(dimension.column); + } + if (dimension.hierarchy && dimension.hierarchy.length > 0) { + angular.forEach(dimension.hierarchy, function (hierarchy, index) { + for (var i = 0; i < tmpRowKeyColumns.length; i++) { + if(tmpRowKeyColumns.column == hierarchy.column) + break; + } + if(i == tmpRowKeyColumns.length) { + tmpRowKeyColumns.push({ + "column": hierarchy.column, + "length": 30, + "dictionary": true, + "mandatory": false + }); + } + + tmpAggretationItems.push(hierarchy.column); + }); + } + + }); + + var rowkeyColumns = $scope.cubeMetaFrame.rowkey.rowkey_columns; + var newRowKeyColumns = sortSharedData(rowkeyColumns,tmpRowKeyColumns); + var increasedColumns = increasedColumn(rowkeyColumns,tmpRowKeyColumns); + newRowKeyColumns = newRowKeyColumns.concat(increasedColumns); + + //! here get the latest rowkey_columns + $scope.cubeMetaFrame.rowkey.rowkey_columns = newRowKeyColumns; + + + var aggregationGroups = $scope.cubeMetaFrame.rowkey.aggregation_groups; + // rm unused item from group + angular.forEach(aggregationGroups, function (group, index) { + for(var j = 0;jTips diff --git a/webapp/app/partials/projects/project_detail.html b/webapp/app/partials/projects/project_detail.html index 8c8a948..c3f8fa7 100644 --- a/webapp/app/partials/projects/project_detail.html +++ b/webapp/app/partials/projects/project_detail.html @@ -24,7 +24,7 @@ {{cube}} - Detail + Detail diff --git a/webapp/app/routes.json b/webapp/app/routes.json index d887834..8a72f09 100644 --- a/webapp/app/routes.json +++ b/webapp/app/routes.json @@ -63,7 +63,7 @@ } }, { - "url": "/cubes/:cubeName", + "url": "/cubes/:projectName/:cubeName", "params": { "templateUrl": "partials/cubes/cubes.html", "tab": "cubes",