Repository: kylin Updated Branches: refs/heads/KYLIN-1875 2d2745067 -> 7f79ed116
KYLIN 1875 model visualization Signed-off-by: zhongjian <jiat...@163.com> Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/7f79ed11 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/7f79ed11 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/7f79ed11 Branch: refs/heads/KYLIN-1875 Commit: 7f79ed116e1ee05c28c5a614e8b10e127f91fbc2 Parents: 2d27450 Author: chenzhx <346839...@qq.com> Authored: Mon Dec 12 10:56:17 2016 +0800 Committer: zhongjian <jiat...@163.com> Committed: Mon Dec 12 14:42:24 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/7f79ed11/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/7f79ed11/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/7f79ed11/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/7f79ed11/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/7f79ed11/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'">