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/15 10:58:52 UTC
[5/9] kylin git commit: KYLIN 1875 model visualization
KYLIN 1875 model visualization
Signed-off-by: zhongjian <ji...@163.com>
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/36a42d86
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/36a42d86
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/36a42d86
Branch: refs/heads/master
Commit: 36a42d86f84e0b0ba69b44e809e68fcee5437d65
Parents: d5b8c7f
Author: chenzhx <34...@qq.com>
Authored: Mon Dec 12 10:56:17 2016 +0800
Committer: Li Yang <li...@apache.org>
Committed: Thu Dec 15 18:57:36 2016 +0800
----------------------------------------------------------------------
webapp/app/js/controllers/modelDataModel.js | 10 ++--
webapp/app/js/controllers/models.js | 1 +
webapp/app/js/services/tree.js | 60 ++++++--------------
.../app/partials/modelDesigner/data_model.html | 8 +--
webapp/app/partials/models/model_detail.html | 18 +-----
5 files changed, 26 insertions(+), 71 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/36a42d86/webapp/app/js/controllers/modelDataModel.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/modelDataModel.js b/webapp/app/js/controllers/modelDataModel.js
index d17af91..95a4c70 100644
--- a/webapp/app/js/controllers/modelDataModel.js
+++ b/webapp/app/js/controllers/modelDataModel.js
@@ -21,7 +21,7 @@
KylinApp.controller('ModelDataModelCtrl', function ($location,$scope, $modal,cubeConfig,MetaModel,SweetAlert,ModelGraphService,$log,TableModel,ModelService,loadingRequest,modelsManager,VdmUtil) {
$scope.modelsManager = modelsManager;
$scope.init = function (){
- $scope.rootFactTable=$scope.modelsManager.selectedModel.fact_table;
+ $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));
@@ -137,12 +137,12 @@ KylinApp.controller('ModelDataModelCtrl', function ($location,$scope, $modal,cub
};
$scope.changeFactTable = function () {
delete $scope.aliasTableMap[VdmUtil.removeNameSpace($scope.modelsManager.selectedModel.fact_table)];
- $scope.aliasTableMap[VdmUtil.removeNameSpace($scope.rootFactTable)]=$scope.rootFactTable;
+ $scope.aliasTableMap[VdmUtil.removeNameSpace($scope.FactTable.root)]=$scope.FactTable.root;
delete $scope.tableAliasMap[$scope.modelsManager.selectedModel.fact_table];
- $scope.tableAliasMap[$scope.rootFactTable]=VdmUtil.removeNameSpace($scope.rootFactTable);
+ $scope.tableAliasMap[$scope.FactTable.root]=VdmUtil.removeNameSpace($scope.FactTable.root);
$scope.aliasName.splice($scope.aliasName.indexOf(VdmUtil.removeNameSpace($scope.modelsManager.selectedModel.fact_table)),1);
- $scope.aliasName.push(VdmUtil.removeNameSpace($scope.rootFactTable));
- $scope.modelsManager.selectedModel.fact_table=$scope.rootFactTable;
+ $scope.aliasName.push(VdmUtil.removeNameSpace($scope.FactTable.root));
+ $scope.modelsManager.selectedModel.fact_table=$scope.FactTable.root;
}
$scope.changeJoinTable = function () {
$scope.newLookup.alias=$scope.newLookup.table;
http://git-wip-us.apache.org/repos/asf/kylin/blob/36a42d86/webapp/app/js/controllers/models.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/models.js b/webapp/app/js/controllers/models.js
index 6fe2598..fb2c6d1 100644
--- a/webapp/app/js/controllers/models.js
+++ b/webapp/app/js/controllers/models.js
@@ -177,6 +177,7 @@ KylinApp.controller('ModelsCtrl', function ($scope, $q, $routeParams, $location,
};
var ModelDetailModalCtrl = function ($scope, $location, $modalInstance, scope) {
+ modelsManager.selectedModel.visiblePage='metadata';
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
http://git-wip-us.apache.org/repos/asf/kylin/blob/36a42d86/webapp/app/js/services/tree.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/services/tree.js b/webapp/app/js/services/tree.js
index 3b444c6..08e290b 100755
--- a/webapp/app/js/services/tree.js
+++ b/webapp/app/js/services/tree.js
@@ -17,8 +17,8 @@
*/
KylinApp.service('ModelGraphService', function (VdmUtil) {
- var tablesNodeList=[];
- var aliasList=[];
+ var tablesNodeList={};
+ // var aliasList=[];
var margin = {top: 20, right: 100, bottom: 20, left: 100},
width = 1100 - margin.right - margin.left,
height = 600;
@@ -42,12 +42,12 @@ KylinApp.service('ModelGraphService', function (VdmUtil) {
"name": VdmUtil.removeNameSpace(model.fact_table),
"children": []
};
- tablesNodeList.push(graphData);
- aliasList.push(graphData.name);
+ tablesNodeList[graphData.name]=graphData;
+ // aliasList.push(graphData.name);
model.graph = (!!model.graph) ? model.graph : {};
- angular.forEach(model.lookups, function (lookup, index) {
- if (lookup.join && aliasList.indexOf(lookup.alias)==-1) {
+ angular.forEach(model.lookups,function (lookup, index) {
+ if (lookup.join && lookup.join.primary_key.length > 0) {
var dimensionNode={
"type": lookup.kind,
"name": lookup.alias,
@@ -55,49 +55,21 @@ KylinApp.service('ModelGraphService', function (VdmUtil) {
"children": [],
"_children": []
}
- aliasList.push(dimensionNode.name);
- tablesNodeList.push(dimensionNode);
+ // aliasList.push(dimensionNode.name);
+ tablesNodeList[dimensionNode.name]=dimensionNode;
}
});
- angular.forEach(model.lookups, function (lookup) {
- if (lookup.join && lookup.join.primary_key.length > 0) {
- VdmUtil.getNameSpaceAliasName(lookup.join.primary_key[0]);
- VdmUtil.getNameSpaceAliasName(lookup.join.foreign_key[0]);
- }
- });
-
-
-/* Loop through the graphData.children array to find out: If the LKP table is already existed *//*
-
- for(var j = 0; j < graphData.children.length; j++ ) {
- if(graphData.children[j].name == lookup.alias){
- dimensionNode = graphData.children[j];
- break;
- }
- }
- */
-/* If not existed, create dimensionNode and push it *//*
-
- if(j == graphData.children.length) {
- dimensionNode = {
- "type": "dimension",
- "name": lookup.alias,
- "join": lookup.join,
- "children": [],
- "_children": []
- };
+ angular.forEach(model.lookups,function(joinTable){
+ if (joinTable.join && joinTable.join.primary_key.length > 0) {
+ var fkAliasName=VdmUtil.getNameSpaceAliasName(joinTable.join.foreign_key[0]);
+ var pkAliasName=VdmUtil.getNameSpaceAliasName(joinTable.join.primary_key[0]);
+ tablesNodeList[fkAliasName].children.push(tablesNodeList[pkAliasName]);
}
+ });
- if(j == graphData.children.length) {
- graphData.children.push(dimensionNode);
- }
-
- }
-*/
-
- angular.forEach(model.dimensions, function (dimension, index) {
+/* angular.forEach(model.dimensions, function (dimension, index) {
// for dimension on lookup table
if(model.fact_table!==dimension.table){
var lookup = _.find(graphData.children,function(item){
@@ -117,7 +89,7 @@ KylinApp.service('ModelGraphService', function (VdmUtil) {
}
});
};
- });
+ });*/
model.graph.columnsCount = 0;
model.graph.tree = tree;
model.graph.root = graphData;
http://git-wip-us.apache.org/repos/asf/kylin/blob/36a42d86/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 82be964..f1192f4 100644
--- a/webapp/app/partials/modelDesigner/data_model.html
+++ b/webapp/app/partials/modelDesigner/data_model.html
@@ -23,10 +23,10 @@
<div class="form-group" ng-class="{'required':state.mode=='edit'}">
<div class="row">
<label class="col-xs-12 col-sm-2 control-label concube.detailtrol-label no-padding-right font-color-default">
- <b>Fact Table</b>
+ <b>Root Fact Table</b>
</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="$parent.rootFactTable" ng-if="state.mode=='edit'"
+ <select chosen ng-model="FactTable.root" ng-if="state.mode=='edit'"
ng-options="table.name as table.name for table in tableModel.selectProjectTables"
style="width:100%;" ng-change="changeFactTable()"
name="table_name"
@@ -35,9 +35,7 @@
class="chosen-select">
<option value=""> -- Select Fact Table -- </option>
</select>
-
- <small class="help-block" ng-show="forms.data_model_form.innerform.typeahead.$error.required && (forms.data_model_form.innerform.typeahead.$dirty||forms.data_model_form.$submitted)">The fact table is required</small>
- <span ng-if="state.mode=='view'">{{$parent.rootFactTable}}</span>
+ <span ng-if="state.mode=='view'">{{modelsManager.selectedModel.fact_table}}</span>
</div>
</div>
</div>
http://git-wip-us.apache.org/repos/asf/kylin/blob/36a42d86/webapp/app/partials/models/model_detail.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/models/model_detail.html b/webapp/app/partials/models/model_detail.html
index dcf782a..2549da2 100644
--- a/webapp/app/partials/models/model_detail.html
+++ b/webapp/app/partials/models/model_detail.html
@@ -32,23 +32,7 @@
<li class="{{modelsManager.selectedModel.visiblePage=='json_model'? 'active':''}}">
<a href="" ng-click="modelsManager.selectedModel.visiblePage='json_model';">JSON</a>
</li>
- <li class="dropdown" ng-if="userService.hasRole('ROLE_ADMIN') || hasPermission(modelsManager.selectedModel, permissions.ADMINISTRATION.mask, permissions.MANAGEMENT.mask, permissions.OPERATION.mask)">
- <a class="dropdown-toggle highlight-bule" data-toggle="dropdown" href="#" aria-expanded="true">
- <i class="fa fa-star"> Action </i> <span class="caret"></span>
- </a>
- <ul class="dropdown-menu">
- <li ng-if="userService.hasRole('ROLE_ADMIN') || hasPermission(modelsManager.selectedModel, permissions.ADMINISTRATION.mask, permissions.MANAGEMENT.mask, permissions.OPERATION.mask)">
- <a href="models/edit/{{modelsManager.selectedModel.name}}" data-widget="collapse">Edit</a>
- </li>
- <li ng-if="userService.hasRole('ROLE_ADMIN')">
- <a ng-click="dropModel(modelsManager.selectedModel)">Drop</a>
- </li>
- <li role="presentation" class="divider"></li>
- <li ng-if="userService.hasRole('ROLE_ADMIN') || hasPermission(modelsManager.selectedModel, permissions.ADMINISTRATION.mask, permissions.MANAGEMENT.mask, permissions.OPERATION.mask)">
- <a href="cubes/add/{{modelsManager.selectedModel.name}}" data-widget="collapse">Create Cube</a>
- </li>
- </ul>
- </li>
+
</ul>
<div class="model-detail" ng-if="!modelsManager.selectedModel.visiblePage || modelsManager.selectedModel.visiblePage=='metadata'">