You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by sh...@apache.org on 2016/07/26 03:33:46 UTC
[27/55] [abbrv] kylin git commit: KYLIN-1786 extended column UI update
KYLIN-1786 extended column UI update
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/761db1e9
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/761db1e9
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/761db1e9
Branch: refs/heads/1.5.x-CDH5.7
Commit: 761db1e90649b78255931626cecfe0ee9293cac8
Parents: b7fdafd
Author: Jason <ji...@163.com>
Authored: Mon Jul 18 23:19:51 2016 +0800
Committer: Jason <ji...@163.com>
Committed: Mon Jul 18 23:19:51 2016 +0800
----------------------------------------------------------------------
webapp/app/js/controllers/cubeEdit.js | 57 ++---------
webapp/app/js/controllers/cubeMeasures.js | 69 ++++++++-----
webapp/app/partials/cubeDesigner/measures.html | 105 +-------------------
3 files changed, 55 insertions(+), 176 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/761db1e9/webapp/app/js/controllers/cubeEdit.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeEdit.js b/webapp/app/js/controllers/cubeEdit.js
index 8475025..3fba2c9 100755
--- a/webapp/app/js/controllers/cubeEdit.js
+++ b/webapp/app/js/controllers/cubeEdit.js
@@ -86,40 +86,7 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
return avaColObject;
};
- $scope.getCommonMetricColumns = function (measure) {
- var nonCustomMeasures = ['SUM','MIN','MAX','COUNT'];
- var expression = measure.function.expression;
-
- //metric from model
- var me_columns = [];
- if($scope.metaModel.model.metrics){
- angular.forEach($scope.metaModel.model.metrics,function(metric,index){
- me_columns.push(metric);
- })
- }
-
- if(nonCustomMeasures.indexOf(expression)!==-1){
- return me_columns;
- }
-
- //add cube dimension column for specific measure
- angular.forEach($scope.cubeMetaFrame.dimensions,function(dimension,index){
- if(dimension.column && dimension.derived == null){
- me_columns.push(dimension.column);
- }
-
- if(dimension.derived&&dimension.derived.length>=1){
- me_columns = me_columns.concat(dimension.derived);
- }
-
- });
-
- return me_columns;
-
- };
-
-
- $scope.getExtendedColumns = function (measure) {
+ $scope.getCommonMetricColumns = function () {
//metric from model
var me_columns = [];
if($scope.metaModel.model.metrics){
@@ -127,31 +94,23 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
me_columns.push(metric);
})
}
- angular.forEach($scope.metaModel.model.dimensions,function(dimension,index){
- if(dimension.columns){
- me_columns = me_columns.concat(dimension.columns);
- }
- })
return me_columns;
-
};
- $scope.getExtendedFactColumns = function (measure) {
+ $scope.getExtendedHostColumn = function(){
var me_columns = [];
- angular.forEach($scope.metaModel.model.dimensions,function(dimension,index){
+ //add cube dimension column for specific measure
+ angular.forEach($scope.cubeMetaFrame.dimensions,function(dimension,index){
if($scope.metaModel.model.fact_table !== dimension.table){
return;
}
-
- if(dimension.columns){
- me_columns = me_columns.concat(dimension.columns);
+ if(dimension.column && dimension.derived == null){
+ me_columns.push(dimension.column);
}
- })
-
+ });
return me_columns;
-
- };
+ }
$scope.getFactColumns = function () {
http://git-wip-us.apache.org/repos/asf/kylin/blob/761db1e9/webapp/app/js/controllers/cubeMeasures.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeMeasures.js b/webapp/app/js/controllers/cubeMeasures.js
index bb22a42..8db1356 100644
--- a/webapp/app/js/controllers/cubeMeasures.js
+++ b/webapp/app/js/controllers/cubeMeasures.js
@@ -20,37 +20,28 @@
KylinApp.controller('CubeMeasuresCtrl', function ($scope, $modal,MetaModel,cubesManager,CubeDescModel,SweetAlert) {
+ $scope.initUpdateMeasureStatus = function(){
+ $scope.updateMeasureStatus = {
+ isEdit:false,
+ editIndex:-1
+ }
+ };
+ $scope.initUpdateMeasureStatus();
- $scope.addNewMeasure = function (measure) {
+ $scope.addNewMeasure = function (measure, index) {
+ if(measure&&index>=0){
+ $scope.updateMeasureStatus.isEdit = true;
+ $scope.updateMeasureStatus.editIndex = index;
+ }
$scope.nextParameters = [];
- $scope.newMeasure = (!!measure)? measure:CubeDescModel.createMeasure();
- //if(!!measure){
- // $scope.convertNextParameters();
- //}
+ $scope.newMeasure = (!!measure)? jQuery.extend(true, {},measure):CubeDescModel.createMeasure();
if(!!measure && measure.function.parameter.next_parameter){
$scope.nextPara.value = measure.function.parameter.next_parameter.value;
}
};
- //$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];
}
@@ -106,7 +97,8 @@ KylinApp.controller('CubeMeasuresCtrl', function ($scope, $modal,MetaModel,cubes
$scope.clearNewMeasure = function () {
$scope.newMeasure = null;
- $scope.nextPara.value = "";
+ $scope.initUpdateMeasureStatus();
+ $scope.nextParameterInit();
};
$scope.saveNewMeasure = function () {
@@ -116,22 +108,45 @@ KylinApp.controller('CubeMeasuresCtrl', function ($scope, $modal,MetaModel,cubes
return false;
}
if($scope.nextPara.value!=="" && ($scope.newMeasure.function.expression == 'EXTENDED_COLUMN' || $scope.newMeasure.function.expression == 'TOP_N')){
- $scope.newMeasure.function.parameter.next_parameter = $scope.nextPara;
+ $scope.newMeasure.function.parameter.next_parameter = jQuery.extend(true,{},$scope.nextPara);
}
- if ($scope.cubeMetaFrame.measures.indexOf($scope.newMeasure) === -1) {
+ if($scope.updateMeasureStatus.isEdit == true){
+ $scope.cubeMetaFrame.measures[$scope.updateMeasureStatus.editIndex] = $scope.newMeasure;
+ }
+ else {
$scope.cubeMetaFrame.measures.push($scope.newMeasure);
}
$scope.newMeasure = null;
+ $scope.initUpdateMeasureStatus();
+ $scope.nextParameterInit();
return true;
};
+ $scope.nextParameterInit = function(){
+ $scope.nextPara = {
+ "type":"column",
+ "value":"",
+ "next_parameter":null
+ }
+ if($scope.newMeasure){
+ $scope.newMeasure.function.parameter.next_parameter = null;
+ }
+ }
+
//map right return type for param
$scope.measureReturnTypeUpdate = function(){
- if($scope.newMeasure.function.expression == 'TOP_N'||$scope.newMeasure.function.expression == 'EXTENDED_COLUMN'){
+ if($scope.newMeasure.function.expression == 'TOP_N'){
+ $scope.newMeasure.function.parameter.type= 'column';
+ $scope.newMeasure.function.returntype = "topn(100)";
+ return;
+ }else if($scope.newMeasure.function.expression == 'EXTENDED_COLUMN'){
$scope.newMeasure.function.parameter.type= 'column';
+ $scope.newMeasure.function.returntype = "extendedcolumn(100)";
return;
+ }else{
+ $scope.nextParameterInit();
}
if($scope.newMeasure.function.expression == 'COUNT'){
http://git-wip-us.apache.org/repos/asf/kylin/blob/761db1e9/webapp/app/partials/cubeDesigner/measures.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/cubeDesigner/measures.html b/webapp/app/partials/cubeDesigner/measures.html
index 0a39210..a9a3b9c 100755
--- a/webapp/app/partials/cubeDesigner/measures.html
+++ b/webapp/app/partials/cubeDesigner/measures.html
@@ -56,7 +56,7 @@
</td>
<td ng-if="state.mode=='edit'">
<!--Edit Button -->
- <button class="btn btn-xs btn-info" ng-click="addNewMeasure(measure)">
+ <button class="btn btn-xs btn-info" ng-click="addNewMeasure(measure, $index)">
<i class="fa fa-pencil"></i>
</button>
<!--Remove Button -->
@@ -152,14 +152,14 @@
ng-if="newMeasure.function.parameter.type == 'column' && newMeasure.function.expression !== 'EXTENDED_COLUMN'"
ng-model="newMeasure.function.parameter.value"
ng-change="measureReturnTypeUpdate();"
- ng-options="column as column for column in getCommonMetricColumns(newMeasure)" >
+ ng-options="column as column for column in getCommonMetricColumns()" >
<option value="">-- Select a Column --</option>
</select>
<select class="form-control" chosen
ng-if="newMeasure.function.expression == 'EXTENDED_COLUMN'"
ng-model="newMeasure.function.parameter.value"
ng-change="measureReturnTypeUpdate();"
- ng-options="column as column for column in getFactColumns()" >
+ ng-options="column as column for column in getExtendedHostColumn()" >
<option value="">-- Select a Column --</option>
</select>
</div>
@@ -212,7 +212,7 @@
<div class="col-xs-12 col-sm-6">
<select class="form-control" chosen ng-if="nextPara.type !== 'constant'" required
ng-model="nextPara.value"
- ng-options="column as column for column in getExtendedFactColumns()" >
+ ng-options="column as column for column in getCommonMetricColumns()" >
<option value=""></option>
</select>
</div>
@@ -227,7 +227,7 @@
<div class="col-xs-12 col-sm-6">
<select class="form-control" chosen ng-if="nextPara.type !== 'constant'" required
ng-model="nextPara.value"
- ng-options="column as column for column in getExtendedColumns(newMeasure)" >
+ ng-options="column as column for column in getCommonMetricColumns()" >
<option value=""></option>
</select>
</div>
@@ -260,14 +260,6 @@
</tr>
</table>
-
-
- <!--<button class="btn btn-sm btn-info" ng-click="addNextParameter()" ng-show="newMeasure.function.expression == 'TOP_N' && nextParameters.length==0"-->
- <!--ng-show="state.mode=='edit'"><i class="fa fa-plus"> Group by Column</i>-->
- <!--</button>-->
- <!--<button class="btn btn-sm btn-info" ng-click="addNextParameter()" ng-show="newMeasure.function.expression == 'EXTENDED_COLUMN' && nextParameters.length==0"-->
- <!--ng-show="state.mode=='edit'"><i class="fa fa-plus"> Extended Column On Fact Table</i>-->
- <!--</button>-->
</div>
</div>
</div>
@@ -285,93 +277,6 @@
</div>
-
-
-<script type="text/ng-template" id="nextParameter.html">
- <div class="modal-header">
- <h4 tooltip="submit" ng-if="newmea.measure&&newmea.measure.function.expression == 'EXTENDED_COLUMN'">Add Extended Column</h4>
- <h4 tooltip="submit" ng-if="newmea.measure&&newmea.measure.function.expression == 'TOP_N'">Select Group By Column</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" ng-if="newmea.measure&&newmea.measure.function.expression !== 'TOP_N' && newmea.measure.function.expression !== 'EXTENDED_COLUMN'">
- <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 ng-if="newmea.measure&&newmea.measure.function.expression !== 'TOP_N' && newmea.measure.function.expression !== 'EXTENDED_COLUMN" 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-if="nextPara.type !== 'constant'"
- ng-model="nextPara.value"
- ng-options="column as column for column in getCommonMetricColumns(newmea.measure)" >
- <option value=""></option>
- </select>
- <span class="font-color-default"
- ng-if="nextPara.type == 'constant'"
- ng-init="nextPara.value = 1"><b> 1</b></span>
- </div>
- </div>
-
- <div ng-if="newmea.measure&&newmea.measure.function.expression == 'TOP_N'" ng-init="nextPara.type='column'" class="row">
- <label class="col-xs-12 col-sm-3 control-label no-padding-right font-color-default"><b>Group By Column</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 getExtendedColumns(newmea.measure)" >
- <option value=""></option>
- </select>
- </div>
- </div>
-
- <div ng-if="newmea.measure&&newmea.measure.function.expression == 'EXTENDED_COLUMN'" ng-init="nextPara.type='column'" class="row">
- <label class="col-xs-12 col-sm-4 control-label no-padding-right font-color-default"><b>Extended Column On Fact Table</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 getExtendedColumns(newmea.measure)" >
- <option value=""></option>
- </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>
<script type="text/ng-template" id="expressionTip.html">
<p>All cubes have to contain one measure for Count(1), suggest use "_Count_" as name (Has been generated automatically)</p>
</script>