Repository: kylin Updated Branches: refs/heads/master 933a5f614 -> 961546334
KYLIN 2616 COUNT DISTINCT SUPPORT MULTIPLE COLUMN Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/96154633 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/96154633 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/96154633 Branch: refs/heads/master Commit: 96154633475ede1ee83cc0a5c9a5b5a62f329fa5 Parents: 933a5f6 Author: chenzhx <346839...@qq.com> Authored: Thu Jul 13 16:10:14 2017 +0800 Committer: chenzhx <346839...@qq.com> Committed: Thu Jul 13 16:10:14 2017 +0800 ---------------------------------------------------------------------- webapp/app/js/controllers/cubeMeasures.js | 44 ++++++++++++++++----- webapp/app/partials/cubeDesigner/measures.html | 18 ++++----- 2 files changed, 44 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/96154633/webapp/app/js/controllers/cubeMeasures.js ---------------------------------------------------------------------- diff --git a/webapp/app/js/controllers/cubeMeasures.js b/webapp/app/js/controllers/cubeMeasures.js index c598fde..2b86683 100644 --- a/webapp/app/js/controllers/cubeMeasures.js +++ b/webapp/app/js/controllers/cubeMeasures.js @@ -106,6 +106,12 @@ KylinApp.controller('CubeMeasuresCtrl', function ($scope, $modal,MetaModel,cubes } }; } + if ($scope.newMeasure.function.expression === 'COUNT_DISTINCT') { + $scope.convertedColumns=[]; + if ($scope.newMeasure.function.parameter.next_parameter) { + $scope.recursion($scope.newMeasure.function.parameter.next_parameter, $scope.convertedColumns) + } + } }; @@ -212,13 +218,34 @@ KylinApp.controller('CubeMeasuresCtrl', function ($scope, $modal,MetaModel,cubes $scope.newMeasure.function.configuration[versionKey]=version; }); } + if ($scope.newMeasure.function.expression === 'COUNT_DISTINCT' ) { + + var hasExisted = []; + + for (var column in $scope.convertedColumns){ + if(hasExisted.indexOf($scope.convertedColumns[column].name)==-1){ + hasExisted.push($scope.convertedColumns[column].name); + } + else{ + SweetAlert.swal('', 'The column named ['+$scope.convertedColumns[column].name+'] already exits.', 'warning'); + return false; + } + } + $scope.nextPara.next_parameter={}; + if ($scope.convertedColumns.length > 0) { + $scope.groupby($scope.nextPara); + } else { + $scope.nextPara=null; + $scope.newMeasure.function.parameter.next_parameter=null; + } + } if ($scope.isNameDuplicated($scope.cubeMetaFrame.measures, $scope.newMeasure) == true) { SweetAlert.swal('', 'The measure name: ' + $scope.newMeasure.name + ' is duplicated', 'warning'); return false; } - if($scope.nextPara.value!=="" && ($scope.newMeasure.function.expression == 'EXTENDED_COLUMN' || $scope.newMeasure.function.expression == 'TOP_N')){ + if($scope.nextPara && $scope.nextPara.value!=="" && ($scope.newMeasure.function.expression == 'EXTENDED_COLUMN' || $scope.newMeasure.function.expression == 'TOP_N'||$scope.newMeasure.function.expression == 'COUNT_DISTINCT')){ $scope.newMeasure.function.parameter.next_parameter = jQuery.extend(true,{},$scope.nextPara); } @@ -294,14 +321,13 @@ KylinApp.controller('CubeMeasuresCtrl', function ($scope, $modal,MetaModel,cubes return false; } } - $scope.converted = function (next_parameter) { - if (next_parameter != null) { - $scope.groupby.push(next_parameter.value); - converted(next_parameter.next_parameter) - } - else { - $scope.groupby.push(next_parameter.value); - return false; + + $scope.recursion = function (parameter, list) { + list.push({name: parameter.value}) + if (parameter.next_parameter) { + $scope.recursion(parameter.next_parameter, list) + } else { + return } } http://git-wip-us.apache.org/repos/asf/kylin/blob/96154633/webapp/app/partials/cubeDesigner/measures.html ---------------------------------------------------------------------- diff --git a/webapp/app/partials/cubeDesigner/measures.html b/webapp/app/partials/cubeDesigner/measures.html index df69b78..89c7142 100755 --- a/webapp/app/partials/cubeDesigner/measures.html +++ b/webapp/app/partials/cubeDesigner/measures.html @@ -218,22 +218,22 @@ </div> <!--Group by Column--> - <div class="form-group" ng-if="newMeasure.function.expression == 'TOP_N'" > + <div class="form-group" ng-if="newMeasure.function.expression === 'TOP_N'||newMeasure.function.expression === 'COUNT_DISTINCT'" > <div class="row"> <label class="col-xs-12 col-sm-3 control-label no-padding-right font-color-default"> <b>Group by Column</b> </label> <div class="form-group large-popover" > <div class="box-body"> - <table style="margin-left:width:92%" + <table style="width:92%" class="table table-hover table-bordered list"> <thead> <tr> <th style="width:40px;">ID</th> <th style="width:300px;">Column</th> - <th style="width:140px;">Encoding</th> - <th >Length</th> - <th ng-if="state.mode=='edit'"></th> + <th style="width:140px;" ng-if="newMeasure.function.expression === 'TOP_N'">Encoding</th> + <th ng-if="newMeasure.function.expression === 'TOP_N'">Length</th> + <th style="width:50px;" ng-if="state.mode=='edit'"></th> </tr> </thead> @@ -248,22 +248,22 @@ </td> <!--Column Name --> <td> - <select class="form-control" chosen ng-if="nextPara.type !== 'constant'" required + <select style="width:270px" chosen ng-if="nextPara.type !== 'constant'" required ng-model="groupby_column.name" ng-options="column as column for column in getAllModelDimColumns()" > <option value="">--Select A Column--</option> </select> </td> <!--Column Encoding --> - <td> - <select ng-if="state.mode=='edit'" style="width: 100%" + <td ng-if="newMeasure.function.expression === 'TOP_N'"> + <select ng-if="state.mode=='edit'" style="width:100%" chosen ng-model="groupby_column.encoding" ng-change="refreshGroupBy(convertedColumns,$index,groupby_column)" ng-options="dt.value as dt.name for dt in getEncodings(groupby_column.name)"> <option value=""></option> </select> </td> - <td> + <td ng-if="newMeasure.function.expression === 'TOP_N'"> <!--Column Length --> <input type="text" class="form-control" placeholder="Column Length.." ng-if="state.mode=='edit'" tooltip="group by column length.." tooltip-trigger="focus"