UI support add next_parameter for count_distinct
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/03cecbb5 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/03cecbb5 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/03cecbb5 Branch: refs/heads/2.x-staging Commit: 03cecbb5fd34b14f0c0d6c648f4cca605bf7e81b Parents: 2bc88c9 Author: janzhongi <jiazh...@ebay.com> Authored: Thu Jan 28 23:55:49 2016 +0800 Committer: janzhongi <jiazh...@ebay.com> Committed: Fri Jan 29 16:18:08 2016 +0800 ---------------------------------------------------------------------- webapp/app/js/controllers/cubeMeasures.js | 99 ++++++++++++++++++++- webapp/app/partials/cubeDesigner/measures.html | 86 +++++++++++++++++- 2 files changed, 180 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/03cecbb5/webapp/app/js/controllers/cubeMeasures.js ---------------------------------------------------------------------- diff --git a/webapp/app/js/controllers/cubeMeasures.js b/webapp/app/js/controllers/cubeMeasures.js index 1560d23..336eb43 100644 --- a/webapp/app/js/controllers/cubeMeasures.js +++ b/webapp/app/js/controllers/cubeMeasures.js @@ -20,9 +20,71 @@ KylinApp.controller('CubeMeasuresCtrl', function ($scope, $modal,MetaModel,cubesManager,CubeDescModel) { + $scope.addNewMeasure = function (measure) { + $scope.nextParameters = []; $scope.newMeasure = (!!measure)? measure:CubeDescModel.createMeasure(); + if(!!measure){ + $scope.convertNextParameters(); + } + }; + $scope.convertNextParameters = function(){ + $scope.nextParameters = []; + var paramater = jQuery.extend(true, {}, $scope.newMeasure.function.parameter); + while(paramater.next_parameter){ + var paraMeter = + { + "type": paramater.next_parameter.type, + "value":paramater.next_parameter.value, + "next_parameter":null + } + $scope.nextParameters.push(paraMeter); + + paramater = paramater.next_parameter; + + } + + } + + $scope.updateNextParameter = function(){ + //jQuery.extend(true, {},$scope.newMeasure.function.parameter.next_parameter) + for(var i= 0;i<$scope.nextParameters.length-1;i++){ + $scope.nextParameters[i].next_parameter=$scope.nextParameters[i+1]; + } + $scope.newMeasure.function.parameter.next_parameter = $scope.nextParameters[0]; + console.log($scope.newMeasure.function.parameter); + } + + $scope.editNextParameter = function(parameter){ + $scope.openParameterModal(parameter); + + } + + $scope.addNextParameter = function(){ + $scope.openParameterModal(); + } + + $scope.removeParameter = function(parameters,index){ + if(index>-1){ + parameters.splice(index,1); + } + + } + $scope.openParameterModal = function (parameter) { + $modal.open({ + templateUrl: 'nextParameter.html', + controller: NextParameterModalCtrl, + resolve: { + scope: function () { + return $scope; + }, + para:function(){ + return parameter; + } + } + }); }; + $scope.nextParameters =[]; $scope.removeElement = function (arr, element) { var index = arr.indexOf(element); @@ -97,5 +159,40 @@ KylinApp.controller('CubeMeasuresCtrl', function ($scope, $modal,MetaModel,cubes } } - }); + +var NextParameterModalCtrl = function ($scope, scope,para,$modalInstance,cubeConfig, CubeService, MessageService, $location, SweetAlert,ProjectModel, loadingRequest,ModelService) { + + $scope.cubeConfig = cubeConfig; + $scope.cancel = function () { + $modalInstance.dismiss('cancel'); + }; + + $scope. getMetricColumns = function(){ + return scope.getMetricColumns(); + } + + $scope.nextPara = { + "type":"", + "value":"", + "next_parameter":null + } + + var _index = scope.nextParameters.indexOf(para); + if(para){ + $scope.nextPara = para; + } + + $scope.ok = function(){ + if(_index!=-1){ + scope.nextParameters[_index] = $scope.nextPara; + } + else{ + scope.nextParameters.push($scope.nextPara); + } + + scope.updateNextParameter(); + $modalInstance.dismiss('cancel'); + } + +} http://git-wip-us.apache.org/repos/asf/kylin/blob/03cecbb5/webapp/app/partials/cubeDesigner/measures.html ---------------------------------------------------------------------- diff --git a/webapp/app/partials/cubeDesigner/measures.html b/webapp/app/partials/cubeDesigner/measures.html index 7ee502c..ca88957 100755 --- a/webapp/app/partials/cubeDesigner/measures.html +++ b/webapp/app/partials/cubeDesigner/measures.html @@ -180,13 +180,33 @@ </div> </div> <!--Name--> - <div class="form-group"> + <div class="form-group" ng-if="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>Next Parameter</b></label> <div class="col-xs-12 col-sm-6"> - <input type="text" placeholder="Next parameter.." class="form-control" - tooltip="next parameter.." tooltip-trigger="focus" - ng-model="newMeasure.function.parameter.next_parameter" required /> + <table class="table table-hover table-bordered list" ng-if="nextParameters.length"> + <tr> + <th>Type</th> + <th>Value</th> + <th></td> + </tr> + <tr ng-repeat="n_parameter in nextParameters track by $index"> + <td>{{n_parameter.type}}</td> + <td>{{n_parameter.value}}</td> + <td> + <button class="btn btn-xs btn-info" ng-click="editNextParameter(n_parameter)"> + <i class="fa fa-pencil"></i> + </button> + <button class="btn btn-xs btn-info" ng-click="removeParameter(nextParameters, $index)"><i class="fa fa-minus"></i> + </button> + + </td> + + </tr> + </table> + <button class="btn btn-sm btn-info" ng-click="addNextParameter()" + ng-show="state.mode=='edit'"><i class="fa fa-plus">Next Parameter</i> + </button> </div> </div> </div> @@ -221,3 +241,61 @@ </div> </ng-form> </div> + + + + +<script type="text/ng-template" id="nextParameter.html"> + <div class="modal-header"> + <h4 tooltip="submit">Next Parameter</h4> + </div> + <div class="modal-body" style="background-color: white"> + + <div class="row"> + <div class="col-md-2"></div> + <div class="col-md-8"> + <div class="row"> + <div class="form-group"> + <div class="row"> + <label class="col-xs-12 col-sm-3 control-label no-padding-right font-color-default"><b>Param Type</b></label> + <div class="col-xs-12 col-sm-6"> + <select class="form-control" + chosen ng-model="nextPara.type" required + ng-options="mpt as mpt for mpt in cubeConfig.measureParamType"> + <option value=""></option> + </select> + </div> + </div> + + </div> + </div> + </div> + <div class="col-md-2"></div> + </div> + <div class="row"> + <div class="col-md-2"></div> + <div class="col-md-8"> + <div class="row"> + <div class="form-group"> + <div class="row"> + <label class="col-xs-12 col-sm-3 control-label no-padding-right font-color-default"><b>Param Value</b></label> + <!--COUNT_DISTINCT--> + <div class="col-xs-12 col-sm-6"> + <select class="form-control" chosen + ng-model="nextPara.value" + ng-options="column as column for column in getMetricColumns()" > + </select> + </div> + </div> + </div> + </div> + </div> + </div> + <div class="col-md-2"></div> + </div> + </div> + <div class="modal-footer"> + <button class="btn btn-success" ng-click="ok()">OK</button> + <button class="btn btn-primary" ng-click="cancel()">Close</button> + </div> +</script>