You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by ch...@apache.org on 2017/07/22 15:05:23 UTC
kylin git commit: KYLIN-2604 Use global dict as the default encoding
for precise distinct count in web
Repository: kylin
Updated Branches:
refs/heads/master c0c96bba0 -> fd4a009d4
KYLIN-2604 Use global dict as the default encoding for precise distinct count in web
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/fd4a009d
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/fd4a009d
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/fd4a009d
Branch: refs/heads/master
Commit: fd4a009d4d0239ed7d20ae872c8725bb5422992c
Parents: c0c96bb
Author: kangkaisen <ka...@live.com>
Authored: Thu Jul 6 15:21:55 2017 +0800
Committer: chenzhx <34...@qq.com>
Committed: Sat Jul 22 22:24:23 2017 +0800
----------------------------------------------------------------------
webapp/app/js/controllers/cubeAdvanceSetting.js | 5 --
webapp/app/js/controllers/cubeEdit.js | 52 ++++++++++++++++++++
webapp/app/js/controllers/cubeMeasures.js | 7 +++
3 files changed, 59 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/fd4a009d/webapp/app/js/controllers/cubeAdvanceSetting.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeAdvanceSetting.js b/webapp/app/js/controllers/cubeAdvanceSetting.js
index 7d375da..8041a12 100644
--- a/webapp/app/js/controllers/cubeAdvanceSetting.js
+++ b/webapp/app/js/controllers/cubeAdvanceSetting.js
@@ -187,7 +187,6 @@ KylinApp.controller('CubeAdvanceSettingCtrl', function ($scope, $modal,cubeConfi
};
$scope.initUpdateDictionariesStatus();
-
$scope.addNewDictionaries = function (dictionaries, index) {
if(dictionaries&&index>=0){
$scope.updateDictionariesStatus.isEdit = true;
@@ -207,10 +206,6 @@ KylinApp.controller('CubeAdvanceSettingCtrl', function ($scope, $modal,cubeConfi
};
$scope.saveNewDictionaries = function (){
- if(!$scope.cubeMetaFrame.dictionaries){
- $scope.cubeMetaFrame.dictionaries=[];
- }
-
if($scope.updateDictionariesStatus.isEdit == true) {
if ($scope.cubeMetaFrame.dictionaries[$scope.updateDictionariesStatus.editIndex].column != $scope.newDictionaries.column) {
if(!$scope.checkColumn()){
http://git-wip-us.apache.org/repos/asf/kylin/blob/fd4a009d/webapp/app/js/controllers/cubeEdit.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeEdit.js b/webapp/app/js/controllers/cubeEdit.js
index 0e5038e..5f78b61 100755
--- a/webapp/app/js/controllers/cubeEdit.js
+++ b/webapp/app/js/controllers/cubeEdit.js
@@ -721,7 +721,59 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
}
}
+ function reGenerateAdvancedDict () {
+ if (!$scope.cubeMetaFrame.dictionaries) {
+ $scope.cubeMetaFrame.dictionaries = [];
+ }
+
+ var distinctMeasures = [];
+
+ angular.forEach($scope.cubeMetaFrame.measures, function (measure, index) {
+ if (measure.function.expression === 'COUNT_DISTINCT' && measure.function.returntype === 'bitmap') {
+ var measureColumn = measure.function.parameter.value;
+ distinctMeasures.push(measureColumn);
+ //keep backward compatibility
+ distinctMeasures.push(VdmUtil.removeNameSpace(measureColumn))
+
+ var isColumnExit = false;
+ angular.forEach($scope.cubeMetaFrame.dictionaries, function (dictionaries) {
+ if (!isColumnExit) {
+ //keep backward compatibility
+ if (dictionaries.column == measureColumn || dictionaries.column == VdmUtil.removeNameSpace(measureColumn))
+ isColumnExit = true;
+ }
+ });
+
+ if (!isColumnExit) {
+ var dict = CubeDescModel.createDictionaries();
+ dict.column = measureColumn;
+ dict.builder = cubeConfig.buildDictionaries[0].value;
+ $scope.cubeMetaFrame.dictionaries.push(dict)
+ }
+ }
+ });
+
+ //get all reuse columns
+ var reuseColumns = [];
+ angular.forEach($scope.cubeMetaFrame.dictionaries, function (dict, index) {
+ if (dict.reuse != null && reuseColumns.indexOf(dict.reuse) === -1) {
+ reuseColumns.push(dict.reuse);
+ }
+ });
+ //remove deprecated distinct measures
+ angular.forEach($scope.cubeMetaFrame.dictionaries, function (dict, index) {
+ if (distinctMeasures.indexOf(dict.column) === -1 && reuseColumns.indexOf(dict.column) === -1) {
+ $scope.cubeMetaFrame.dictionaries.splice(index, 1);
+ }
+ });
+ }
+
+ $scope.$on('MeasuresEdited', function (event) {
+ if ($scope.cubeMetaFrame) {
+ reGenerateAdvancedDict();
+ }
+ });
$scope.$on('DimensionsEdited', function (event) {
if ($scope.cubeMetaFrame) {
http://git-wip-us.apache.org/repos/asf/kylin/blob/fd4a009d/webapp/app/js/controllers/cubeMeasures.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeMeasures.js b/webapp/app/js/controllers/cubeMeasures.js
index 2b86683..8b0271c 100644
--- a/webapp/app/js/controllers/cubeMeasures.js
+++ b/webapp/app/js/controllers/cubeMeasures.js
@@ -422,6 +422,13 @@ KylinApp.controller('CubeMeasuresCtrl', function ($scope, $modal,MetaModel,cubes
}
}
+ if ($scope.state.mode == 'edit') {
+ $scope.$on('$destroy', function () {
+ // emit measures edit event in order to re-generate advanced dict.
+ $scope.$emit('MeasuresEdited');
+ });
+ }
+
});
var NextParameterModalCtrl = function ($scope, scope,para,$modalInstance,cubeConfig, CubeService, MessageService, $location, SweetAlert,ProjectModel, loadingRequest,ModelService) {