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>

Reply via email to