You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2016/12/20 11:26:15 UTC
[19/50] [abbrv] kylin git commit: KYLIN 1875 minor,
data model designer
KYLIN 1875 minor,data model designer
Signed-off-by: Li Yang <li...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/1c2c43cb
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/1c2c43cb
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/1c2c43cb
Branch: refs/heads/master-hbase1.x
Commit: 1c2c43cb88d2abc5a1ea1cbf18cbede02fe8c4f5
Parents: f55cc5c
Author: chenzhx <34...@qq.com>
Authored: Thu Dec 15 17:45:13 2016 +0800
Committer: Li Yang <li...@apache.org>
Committed: Thu Dec 15 18:57:36 2016 +0800
----------------------------------------------------------------------
webapp/app/js/controllers/cubeAdvanceSetting.js | 2 -
webapp/app/js/controllers/cubeEdit.js | 12 +++++
webapp/app/js/controllers/modelDataModel.js | 47 ++++++--------------
webapp/app/js/controllers/modelEdit.js | 22 ++++++++-
.../modelDesigner/conditions_settings.html | 4 +-
.../app/partials/modelDesigner/data_model.html | 24 +++++-----
6 files changed, 63 insertions(+), 48 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/1c2c43cb/webapp/app/js/controllers/cubeAdvanceSetting.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeAdvanceSetting.js b/webapp/app/js/controllers/cubeAdvanceSetting.js
index e557afa..20af908 100644
--- a/webapp/app/js/controllers/cubeAdvanceSetting.js
+++ b/webapp/app/js/controllers/cubeAdvanceSetting.js
@@ -160,7 +160,6 @@ KylinApp.controller('CubeAdvanceSettingCtrl', function ($scope, $modal,cubeConfi
if (aggregation_group) {
list[index] = aggregation_group;
}
- console.log($scope.cubeMetaFrame.aggregation_groups);
};
$scope.refreshAggregationJoint = function (list, index, aggregation_group,joinIndex,jointDim){
@@ -170,7 +169,6 @@ KylinApp.controller('CubeAdvanceSettingCtrl', function ($scope, $modal,cubeConfi
if (aggregation_group) {
list[index] = aggregation_group;
}
- console.log($scope.cubeMetaFrame.aggregation_groups);
};
$scope.refreshIncludes = function (list, index, aggregation_groups) {
http://git-wip-us.apache.org/repos/asf/kylin/blob/1c2c43cb/webapp/app/js/controllers/cubeEdit.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeEdit.js b/webapp/app/js/controllers/cubeEdit.js
index d58f08f..a2b38f9 100755
--- a/webapp/app/js/controllers/cubeEdit.js
+++ b/webapp/app/js/controllers/cubeEdit.js
@@ -328,6 +328,18 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
if (!modelsManager.getModels().length) {
ModelDescService.query({model_name: $scope.cubeMetaFrame.model_name}, function (_model) {
$scope.metaModel.model = _model;
+ var rootFactTable = VdmUtil.removeNameSpace($scope.metaModel.model.fact_table);
+ $scope.aliasName.push(rootFactTable);
+ $scope.aliasTableMap[rootFactTable]=$scope.metaModel.model.fact_table;
+ $scope.tableAliasMap[$scope.metaModel.model.fact_table]=rootFactTable;
+ angular.forEach($scope.metaModel.model.lookups,function(joinTable){
+ if(!joinTable.alias){
+ joinTable.alias=VdmUtil.removeNameSpace(joinTable.table);
+ }
+ $scope.aliasTableMap[joinTable.alias]=joinTable.table;
+ $scope.tableAliasMap[joinTable.table]=joinTable.alias;
+ $scope.aliasName.push(joinTable.alias);
+ });
});
}
$scope.state.cubeSchema = angular.toJson($scope.cubeMetaFrame, true);
http://git-wip-us.apache.org/repos/asf/kylin/blob/1c2c43cb/webapp/app/js/controllers/modelDataModel.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/modelDataModel.js b/webapp/app/js/controllers/modelDataModel.js
index b6edd43..3834e06 100644
--- a/webapp/app/js/controllers/modelDataModel.js
+++ b/webapp/app/js/controllers/modelDataModel.js
@@ -20,26 +20,13 @@
KylinApp.controller('ModelDataModelCtrl', function ($location,$scope, $modal,cubeConfig,MetaModel,SweetAlert,ModelGraphService,$log,TableModel,ModelService,loadingRequest,modelsManager,VdmUtil) {
$scope.modelsManager = modelsManager;
+ $scope.VdmUtil = VdmUtil;
angular.forEach($scope.modelsManager.selectedModel.lookups,function(joinTable){
if(!joinTable.alias){
joinTable.alias=VdmUtil.removeNameSpace(joinTable.table);
}
});
- $scope.init = function (){
- $scope.FactTable={root:$scope.modelsManager.selectedModel.fact_table};
- $scope.aliasTableMap[VdmUtil.removeNameSpace($scope.modelsManager.selectedModel.fact_table)]=$scope.modelsManager.selectedModel.fact_table;
- $scope.tableAliasMap[$scope.modelsManager.selectedModel.fact_table]=VdmUtil.removeNameSpace($scope.modelsManager.selectedModel.fact_table);
- $scope.aliasName.push(VdmUtil.removeNameSpace($scope.modelsManager.selectedModel.fact_table));
- angular.forEach($scope.modelsManager.selectedModel.lookups,function(joinTable){
- $scope.aliasTableMap[joinTable.alias]=joinTable.table;
- $scope.tableAliasMap[joinTable.table]=joinTable.alias;
- $scope.aliasName.push(joinTable.alias);
- });
- }
- if($scope.state.mode=='edit'){
- $scope.init();
- }
-
+ $scope.FactTable={root:$scope.modelsManager.selectedModel.fact_table};
$scope.cubeConfig = cubeConfig;
var DataModel = function () {
return {
@@ -134,13 +121,11 @@ KylinApp.controller('ModelDataModelCtrl', function ($location,$scope, $modal,cub
$scope.tableAliasMap[$scope.newLookup.table]=$scope.newLookup.alias;
$scope.aliasName.push($scope.newLookup.alias);
lookupList.push(angular.copy($scope.newLookup));
-
$scope.resetParams();
};
$scope.doneEditLookup = function () {
// Copy edited model to destination model.
- angular.copy($scope.newLookup, lookupList[$scope.lookupState.editingIndex]);
var oldAlias=$scope.aliasName[$scope.lookupState.editingIndex+1];
var newAlias=$scope.newLookup.alias;
if(oldAlias!=newAlias){
@@ -168,7 +153,9 @@ KylinApp.controller('ModelDataModelCtrl', function ($location,$scope, $modal,cub
for(var i=0;i< modelsManager.selectedModel.metrics.length;i++){
modelsManager.selectedModel.metrics[i]= modelsManager.selectedModel.metrics[i].replace(oldAlias+'.',newAlias+'.');
}
- modelsManager.selectedModel.partition_desc.partition_date_column = modelsManager.selectedModel.partition_desc.partition_date_column.replace(oldAlias+'.',newAlias+'.');
+ if(modelsManager.selectedModel.partition_desc.partition_date_column){
+ modelsManager.selectedModel.partition_desc.partition_date_column = modelsManager.selectedModel.partition_desc.partition_date_column.replace(oldAlias+'.',newAlias+'.');
+ }
}
}
angular.copy($scope.newLookup,lookupList[$scope.lookupState.editingIndex]);
@@ -176,19 +163,21 @@ KylinApp.controller('ModelDataModelCtrl', function ($location,$scope, $modal,cub
$scope.resetParams();
};
$scope.changeFactTable = function () {
- $scope.aliasTableMap={};
+ if(!$scope.FactTable){
+ return;
+ }
$scope.aliasTableMap[VdmUtil.removeNameSpace($scope.FactTable.root)]=$scope.FactTable.root;
- $scope.tableAliasMap={};
$scope.tableAliasMap[$scope.FactTable.root]=VdmUtil.removeNameSpace($scope.FactTable.root);
- $scope.aliasName=[VdmUtil.removeNameSpace($scope.FactTable.root)];
- modelsManager.selectedModel.lookups = [];
- modelsManager.selectedModel.dimensions = [];
- modelsManager.selectedModel.metrics= [];
+ $scope.aliasName.splice(0,$scope.aliasName.length);
+ $scope.aliasName.push(VdmUtil.removeNameSpace($scope.FactTable.root));
+ modelsManager.selectedModel.lookups.splice(0,modelsManager.selectedModel.lookups.length);
+ modelsManager.selectedModel.dimensions.splice(0,modelsManager.selectedModel.dimensions.length);
+ modelsManager.selectedModel.metrics.splice(0,modelsManager.selectedModel.metrics.length);
modelsManager.selectedModel.partition_desc.partition_date_column = null;
$scope.modelsManager.selectedModel.fact_table=$scope.FactTable.root;
}
$scope.changeJoinTable = function () {
- $scope.newLookup.alias=$scope.newLookup.table;
+ $scope.newLookup.alias=VdmUtil.removeNameSpace($scope.newLookup.table);
}
$scope.cancelLookup = function () {
$scope.resetParams();
@@ -221,8 +210,6 @@ KylinApp.controller('ModelDataModelCtrl', function ($location,$scope, $modal,cub
lookupList.splice(lookupList.indexOf(lookup), 1);
}
};
- $scope.changeAlias = function (){
- }
$scope.changeKey = function(index){
var join_table = $scope.newLookup.joinTable;
@@ -297,10 +284,4 @@ KylinApp.controller('ModelDataModelCtrl', function ($location,$scope, $modal,cub
$scope.filterNotRoot = function (item) {
return item.name!==modelsManager.selectedModel.fact_table;
};
-/* $scope.$watch('$scope.newLookup.alias', function (newValue, oldValue) {
- if (newValue&&$scope.lookupState.editing ) {
- console.log(newValue);
- console.log(oldValue);
- }
- });*/
});
http://git-wip-us.apache.org/repos/asf/kylin/blob/1c2c43cb/webapp/app/js/controllers/modelEdit.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/modelEdit.js b/webapp/app/js/controllers/modelEdit.js
index fd78d03..c504b52 100644
--- a/webapp/app/js/controllers/modelEdit.js
+++ b/webapp/app/js/controllers/modelEdit.js
@@ -25,6 +25,7 @@ KylinApp.controller('ModelEditCtrl', function ($scope, $q, $routeParams, $locati
$scope.tableAliasMap={};
$scope.aliasTableMap={};
$scope.aliasName=[];
+ $scope.selectedAliasCubeMap={};
$scope.route={params:$routeParams.modelName};
$scope.modelMode = absUrl.indexOf("/models/add")!=-1?'addNewModel':absUrl.indexOf("/models/edit")!=-1?'editExistModel':'default';
@@ -93,8 +94,27 @@ KylinApp.controller('ModelEditCtrl', function ($scope, $q, $routeParams, $locati
ModelDescService.query({model_name: modelName}, function (model) {
if (model) {
modelsManager.selectedModel = model;
+ $scope.FactTable={root:$scope.modelsManager.selectedModel.fact_table};
+ $scope.aliasTableMap[VdmUtil.removeNameSpace($scope.modelsManager.selectedModel.fact_table)]=$scope.modelsManager.selectedModel.fact_table;
+ $scope.tableAliasMap[$scope.modelsManager.selectedModel.fact_table]=VdmUtil.removeNameSpace($scope.modelsManager.selectedModel.fact_table);
+ $scope.aliasName.push(VdmUtil.removeNameSpace($scope.modelsManager.selectedModel.fact_table));
+ angular.forEach($scope.modelsManager.selectedModel.lookups,function(joinTable){
+ $scope.aliasTableMap[joinTable.alias]=joinTable.table;
+ $scope.tableAliasMap[joinTable.table]=joinTable.alias;
+ $scope.aliasName.push(joinTable.alias);
+ });
CubeService.list({modelName:model.name}, function (_cubes) {
- $scope.cubesLength = _cubes.length;
+ $scope.cubesLength = _cubes.length;
+ angular.forEach(_cubes,function(cube){
+ CubeDescService.query({cube_name:cube.name},{},function(each){
+ angular.forEach(each[0].dimensions,function(dimension){
+ $scope.selectedAliasCubeMap[dimension.table]=true;
+ });
+ angular.forEach(each[0].measures,function(measure){
+ $scope.selectedAliasCubeMap[VdmUtil.getNameSpaceAliasName(measure.function.parameter.value)]=true;
+ });
+ })
+ });
});
modelsManager.selectedModel.project = ProjectModel.getProjectByCubeModel(modelName);
if(!ProjectModel.getSelectedProject()){
http://git-wip-us.apache.org/repos/asf/kylin/blob/1c2c43cb/webapp/app/partials/modelDesigner/conditions_settings.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/modelDesigner/conditions_settings.html b/webapp/app/partials/modelDesigner/conditions_settings.html
index 6820b60..30fcb67 100644
--- a/webapp/app/partials/modelDesigner/conditions_settings.html
+++ b/webapp/app/partials/modelDesigner/conditions_settings.html
@@ -27,14 +27,14 @@
<div class="row middle-popover">
<label class="control-label col-xs-12 col-sm-3 no-padding-right font-color-default"><b>Partition Date Column</b> <i kylinpopover placement="right" title="Partition Date Column" template="partitionTip.html" class="fa fa-info-circle"></i></label>
<div class="col-xs-12 col-sm-6" ng-if="state.mode=='edit'">
- <select style="width: 45%" chosen data-placeholder="e.g. DEFAULT.TEST_KYLIN_FACT.CAL_DT"
+ <select style="width: 49%" chosen data-placeholder="e.g. DEFAULT.TEST_KYLIN_FACT.CAL_DT"
ng-model="selectedTables.fact"
data-placement=""
ng-options="alias as alias for alias in availableFactTables" >
<option value="">--Select Partition Table--</option>
</select>
- <select style="width: 45%" chosen data-placeholder="e.g. DEFAULT.TEST_KYLIN_FACT.CAL_DT"
+ <select style="width: 49%" chosen data-placeholder="e.g. DEFAULT.TEST_KYLIN_FACT.CAL_DT"
ng-model="modelsManager.selectedModel.partition_desc.partition_date_column"
ng-change="partitionChange(modelsManager.selectedModel.partition_desc.partition_date_column)"
data-placement=""
http://git-wip-us.apache.org/repos/asf/kylin/blob/1c2c43cb/webapp/app/partials/modelDesigner/data_model.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/modelDesigner/data_model.html b/webapp/app/partials/modelDesigner/data_model.html
index e032cf9..97d3c51 100644
--- a/webapp/app/partials/modelDesigner/data_model.html
+++ b/webapp/app/partials/modelDesigner/data_model.html
@@ -27,7 +27,7 @@
</label>
<div class="col-xs-12 col-sm-6" ng-class="{'has-error':forms.data_model_form.table_name.$invalid && (forms.data_model_form.table_name.$dirty||forms.data_model_form.$submitted)}">
<select chosen ng-model="FactTable.root" ng-if="state.mode=='edit'"
- ng-options="table.name as table.name for table in tableModel.selectProjectTables"
+ ng-options="table.name as VdmUtil.removeNameSpace(table.name) for table in tableModel.selectProjectTables"
style="width:100%;" ng-change="changeFactTable()"
name="table_name" ng-disabled="cubesLength>0"
ng-required="true"
@@ -35,7 +35,7 @@
class="chosen-select">
<option value=""> -- Select Fact Table -- </option>
</select>
- <span ng-if="state.mode=='view'">{{modelsManager.selectedModel.fact_table}}</span>
+ <span ng-if="state.mode=='view'">{{VdmUtil.removeNameSpace(modelsManager.selectedModel.fact_table)}}</span>
</div>
</div>
</div>
@@ -67,7 +67,7 @@
<th>Table Kind</th>
<th>Join Type</th>
<th>Join Condition</th>
- <th ng-if="state.mode=='edit'">Actions</th>
+ <th ng-if="state.mode=='edit'" class="col-xs-1">Actions</th>
</tr>
</thead>
<tbody>
@@ -98,13 +98,14 @@
</td>
<td ng-if="state.mode=='edit'">
<!-- edit button -->
- <button class="btn btn-xs btn-info" ng-disabled="lookupState.editing||cubesLength>0"
+ <button class="btn btn-xs btn-info" ng-disabled="lookupState.editing||selectedAliasCubeMap[lookup.alias]"
ng-click="editLookup(lookup)" ><i class="fa fa-pencil"></i>
</button>
<!-- remove button -->
- <button class="btn btn-xs btn-danger" ng-disabled="lookupState.editing||cubesLength>0"
+ <button class="btn btn-xs btn-danger" ng-disabled="lookupState.editing||selectedAliasCubeMap[lookup.alias]"
ng-click="removeLookup(lookup)" ><i class="fa fa-trash-o"></i>
</button>
+ <i class="fa fa-info-circle" ng-if="selectedAliasCubeMap[lookup.alias]" kylinpopover placement="left" title="Tip" template="tableInUse.html"></i>
</td>
</tr>
</tbody>
@@ -115,7 +116,7 @@
<!-- Add Join Table Form -->
<script type="text/ng-template" id="dataModelLookupTable.html">
<div class="modal-header">
- <h4 class="box-title lighter">{{lookupState.editing ? 'Edit' : 'Add'}} Lookup</h4>
+ <h4 class="box-title lighter">{{lookupState.editing ? 'Edit' : 'Add'}} Join Table</h4>
</div>
<div class="modal-body">
<div class="row">
@@ -136,7 +137,7 @@
<small class="help-block" ng-show="lookup_form.table_name.$invalid && (lookup_form.table_name.$dirty||forms.model_info_form.$submitted)">Table name required</small>
<b> </b>
<select chosen ng-model="newLookup.table" style="width: 45%"
- ng-options="table.name as table.name for table in tableModel.selectProjectTables|filter:filterNotRoot"
+ ng-options="table.name as VdmUtil.removeNameSpace(table.name) for table in tableModel.selectProjectTables|filter:filterNotRoot"
name="table_name" ng-disabled="lookupState.editing"
ng-required="true" ng-change="changeJoinTable()"
data-placeholder="Join Table Name"
@@ -155,7 +156,7 @@
<label class="col-sm-3 control-label font-color-default"><b>Alias</b></label>
<div class="col-sm-6">
<input type="text" class="form-control " name="joinTable_alias" placeholder="Input Table Alias" ng-required="true"
- ng-model="newLookup.alias" ng-change="changeAlias()" ng-pattern="/^\w+$/">
+ ng-model="newLookup.alias" ng-pattern="/^\w+$/">
<small class="help-block red" ng-show="!lookup_form.joinTable_alias.$error.required&&lookup_form.joinTable_alias.$invalid && (lookup_form.joinTable_alias.$dirty||lookup_form.$submitted)"><i class="fa fa-exclamation-triangle"></i> Alias is invalid.</small>
</div>
</div>
@@ -186,13 +187,13 @@
<div class="col-xs-9">
<div ng-repeat="joinIndex in [] | range: newLookup.join.primary_key.length">
<div>
- <select style="width: 45%" chosen data-placeholder="Fact Table Column"
+ <select style="width: 45%" chosen data-placeholder="JoinTable Column"
ng-model="newLookup.join.foreign_key[$index]" ng-change="changeKey($index)"
ng-options="newLookup.joinTable+'.'+columns.name as columns.name for columns in getColumnsByAlias(newLookup.joinTable)" >
<option value=""></option>
</select>
<b>=</b>
- <select style="width: 45%" chosen data-placeholder="Lookup Table Column"
+ <select style="width: 45%" chosen data-placeholder=" JoinTable Column"
ng-model="newLookup.join.primary_key[$index]" ng-change="changeKey($index)"
ng-options="newLookup.alias+'.'+columns.name as columns.name for columns in getColumnsByTable(newLookup.table)" >
<option value=""></option>
@@ -249,3 +250,6 @@
</div>
</script>
</div>
+<script type="text/ng-template" id="tableInUse.html">
+ <p>This table is in use in Cube.</p>
+</script>