You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by zh...@apache.org on 2015/05/26 13:32:44 UTC

[2/2] incubator-kylin git commit: KYLIN-785 improve user experience when loading models

KYLIN-785 improve user experience when loading models


Project: http://git-wip-us.apache.org/repos/asf/incubator-kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-kylin/commit/ded2415b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-kylin/tree/ded2415b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-kylin/diff/ded2415b

Branch: refs/heads/0.8.0
Commit: ded2415b359f9db5d35a8dfce203a0a9fa328681
Parents: ce67cf7
Author: jiazhong <ji...@ebay.com>
Authored: Tue May 26 19:32:09 2015 +0800
Committer: jiazhong <ji...@ebay.com>
Committed: Tue May 26 19:32:09 2015 +0800

----------------------------------------------------------------------
 webapp/app/js/controllers/cubeEdit.js       |  9 +++--
 webapp/app/js/controllers/cubeModel.js      |  2 +-
 webapp/app/js/controllers/modelEdit.js      | 10 ++++--
 webapp/app/js/controllers/models.js         | 46 ++++--------------------
 webapp/app/js/controllers/sourceMeta.js     |  1 +
 webapp/app/js/model/modelsManager.js        |  7 ++++
 webapp/app/js/model/tableModel.js           |  4 +++
 webapp/app/less/component.less              |  5 ++-
 webapp/app/partials/models/models_tree.html |  4 ++-
 9 files changed, 39 insertions(+), 49 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/ded2415b/webapp/app/js/controllers/cubeEdit.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeEdit.js b/webapp/app/js/controllers/cubeEdit.js
index 94ea27b..e7416ce 100755
--- a/webapp/app/js/controllers/cubeEdit.js
+++ b/webapp/app/js/controllers/cubeEdit.js
@@ -208,8 +208,8 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
                     CubeService.update({}, {cubeDescData: $scope.state.cubeSchema, cubeName: $routeParams.cubeName, project: $scope.state.project}, function (request) {
                         if (request.successful) {
                             $scope.state.cubeSchema = request.cubeDescData;
-                            MessageService.sendMsg($scope.cubeResultTmpl({'text':'Updated the cube successfully.',type:'success'}), 'success', {}, true, 'top_center');
-
+                            SweetAlert.swal('', 'Updated the cube successfully.', 'success');
+                            $location.path("/models");
                         } else {
                             $scope.saveCubeRollBack();
                             cubesManager.cubeMetaFrame.project = $scope.state.project;
@@ -236,7 +236,10 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
                         if(request.successful) {
                             $scope.state.cubeSchema = request.cubeDescData;
 
-                            MessageService.sendMsg($scope.cubeResultTmpl({'text':'Created the cube successfully.',type:'success'}), 'success', {}, true, 'top_center');
+                            SweetAlert.swal('', 'Created the cube successfully.', 'success');
+                            $location.path("/models");
+                            //location.reload();
+
                         } else {
                             $scope.saveCubeRollBack();
                             cubesManager.cubeMetaFrame.project = $scope.state.project;

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/ded2415b/webapp/app/js/controllers/cubeModel.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeModel.js b/webapp/app/js/controllers/cubeModel.js
index 9466f18..cc58ad6 100644
--- a/webapp/app/js/controllers/cubeModel.js
+++ b/webapp/app/js/controllers/cubeModel.js
@@ -18,7 +18,7 @@
 
 'use strict';
 
-KylinApp.controller('CubeModelCtrl', function ($scope, $modal,cubeConfig,MetaModel,SweetAlert,ModelGraphService,$log,TableModel,ModelService,loadingRequest,modelsManager) {
+KylinApp.controller('CubeModelCtrl', function ($location,$scope, $modal,cubeConfig,MetaModel,SweetAlert,ModelGraphService,$log,TableModel,ModelService,loadingRequest,modelsManager) {
 
     $scope.modelsManager = modelsManager;
 

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/ded2415b/webapp/app/js/controllers/modelEdit.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/modelEdit.js b/webapp/app/js/controllers/modelEdit.js
index 22a9f23..416c5d2 100644
--- a/webapp/app/js/controllers/modelEdit.js
+++ b/webapp/app/js/controllers/modelEdit.js
@@ -156,7 +156,9 @@ KylinApp.controller('ModelEditCtrl', function ($scope, $q, $routeParams, $locati
                     ModelService.update({}, {modelDescData:$scope.state.modelSchema, modelName: $routeParams.modelName, project: $scope.state.project}, function (request) {
                         if (request.successful) {
                             $scope.state.modelSchema = request.modelSchema;
-                            MessageService.sendMsg($scope.modelResultTmpl({'text':'Updated the model successfully.',type:'success'}), 'success', {}, true, 'top_center');
+                            SweetAlert.swal('', 'Updated the model successfully.', 'success');
+                            $location.path("/models");
+                            //location.reload();
                         } else {
                                $scope.saveModelRollBack();
                                 var message =request.message;
@@ -181,9 +183,11 @@ KylinApp.controller('ModelEditCtrl', function ($scope, $q, $routeParams, $locati
                 } else {
                     ModelService.save({}, {modelDescData:$scope.state.modelSchema, project: $scope.state.project}, function (request) {
                         if(request.successful) {
-                            $scope.state.modelSchema = request.modelSchema;
 
-                            MessageService.sendMsg($scope.modelResultTmpl({'text':'Created the model successfully.',type:'success'}), 'success', {}, true, 'top_center');
+                          $scope.state.modelSchema = request.modelSchema;
+                          SweetAlert.swal('', 'Created the model successfully.', 'success');
+                          $location.path("/models");
+                          location.reload();
                         } else {
                             $scope.saveModelRollBack();
                             var message =request.message;

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/ded2415b/webapp/app/js/controllers/models.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/models.js b/webapp/app/js/controllers/models.js
index be7d827..6b1ae47 100644
--- a/webapp/app/js/controllers/models.js
+++ b/webapp/app/js/controllers/models.js
@@ -18,7 +18,7 @@
 
 'use strict';
 
-KylinApp.controller('ModelsCtrl', function ($scope, $q, $routeParams, $location, $window,$modal, MessageService, CubeDescService, CubeService, JobService, UserService,  ProjectService,SweetAlert,loadingRequest,$log,modelConfig,ProjectModel,ModelService,MetaModel,modelsManager,cubesManager) {
+KylinApp.controller('ModelsCtrl', function ($scope, $q, $routeParams, $location, $window,$modal, MessageService, CubeDescService, CubeService, JobService, UserService,  ProjectService,SweetAlert,loadingRequest,$log,modelConfig,ProjectModel,ModelService,MetaModel,modelsManager,cubesManager,TableModel) {
 
         //tree data
 
@@ -27,6 +27,9 @@ KylinApp.controller('ModelsCtrl', function ($scope, $q, $routeParams, $location,
 
         $scope.showModels=true;
 
+        //tracking data loading status in /models page
+        $scope.tableModel = TableModel;
+
         $scope.toggleTab = function(showModel){
             $scope.showModels = showModel;
         }
@@ -43,42 +46,6 @@ KylinApp.controller('ModelsCtrl', function ($scope, $q, $routeParams, $location,
             projectName: $routeParams.projectName
         };
 
-
-        //  TODO offset&limit
-        $scope.list = function () {
-            var defer = $q.defer();
-            if(!$scope.projectModel.projects.length){
-                defer.resolve([]);
-                return defer.promise;
-            }
-
-            var queryParam = {};
-            if ($scope.listParams.modelName) {
-                queryParam.modelName = $scope.listParams.modelName;
-            }
-            queryParam.projectName = $scope.projectModel.selectedProject;
-
-            $scope.loading = true;
-
-             modelsManager.list(queryParam).then(function(resp){
-                $scope.loading = false;
-                defer.resolve(resp);
-            },function(resp){
-                $scope.loading = false;
-                defer.resolve([]);
-            });
-
-            return  defer.promise;
-        };
-
-        //add ref for selectedModel
-//        $scope.model = modelsManager.selectedModel;
-//        $scope.cubeSelected = modelsManager.cubeSelected;
-//        $scope.cube = modelsManager.selectedCube;
-//        $scope.cubeMetaFrame =modelsManager.cubeDetail;
-//        $scope.cube={detail: modelsManager.cubeDetail};
-//        $scope.metaModel = {model:modelsManager.curModel};
-
         $scope.init = function(){
 
             var queryParam = {};
@@ -88,7 +55,7 @@ KylinApp.controller('ModelsCtrl', function ($scope, $q, $routeParams, $location,
             queryParam.projectName = $scope.projectModel.selectedProject;
 
             modelsManager.generatorTreeData(queryParam).then(function(resp){
-//                $scope.models_treedata = resp;
+              modelsManager.loading = false;
             });
 
         };
@@ -96,8 +63,7 @@ KylinApp.controller('ModelsCtrl', function ($scope, $q, $routeParams, $location,
         $scope.$watch('projectModel.selectedProject', function (newValue, oldValue) {
                 modelsManager.removeAll();
                 //init selected model
-//                $scope.model = {};
-                modelsManager.selectedModel;
+                modelsManager.selectedModel = {};
                 $scope.init();
 
         });

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/ded2415b/webapp/app/js/controllers/sourceMeta.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/sourceMeta.js b/webapp/app/js/controllers/sourceMeta.js
index 1e100a0..5bbeb17 100755
--- a/webapp/app/js/controllers/sourceMeta.js
+++ b/webapp/app/js/controllers/sourceMeta.js
@@ -48,6 +48,7 @@ KylinApp
             $scope.loading = true;
             TableModel.aceSrcTbLoaded(forceLoad).then(function(){
                 $scope.loading = false;
+                TableModel.loading = false;
             });
         };
 

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/ded2415b/webapp/app/js/model/modelsManager.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/model/modelsManager.js b/webapp/app/js/model/modelsManager.js
index 71b77a4..972df46 100644
--- a/webapp/app/js/model/modelsManager.js
+++ b/webapp/app/js/model/modelsManager.js
@@ -19,8 +19,12 @@
 KylinApp.service('modelsManager',function(ModelService,CubeService,$q,AccessService,ProjectModel,$log,CubeDescService,SweetAlert,cubesManager){
     var _this = this;
     this.models=[];
+
+    //tracking models loading status
+    this.loading = false;
     this.modelTreeData = [];
     this.selectedModel={};
+
     this.cubeModel={};
     this.cubeSelected = false;
 
@@ -31,6 +35,8 @@ KylinApp.service('modelsManager',function(ModelService,CubeService,$q,AccessServ
         var cubeDetail = [];
         var modelPermission = [];
         ModelService.list(queryParam, function (_models) {
+            _this.removeAll();
+            _this.loading = true;
 
             angular.forEach(_models, function (model, index) {
                 $log.info("Add model permission info");
@@ -159,6 +165,7 @@ KylinApp.service('modelsManager',function(ModelService,CubeService,$q,AccessServ
 
     this.removeAll = function(){
         _this.models = [];
+        _this.modelTreeData = [];
     };
 
     this.listAccess = function (entity, type) {

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/ded2415b/webapp/app/js/model/tableModel.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/model/tableModel.js b/webapp/app/js/model/tableModel.js
index d3bc026..2c743f8 100755
--- a/webapp/app/js/model/tableModel.js
+++ b/webapp/app/js/model/tableModel.js
@@ -20,6 +20,9 @@ KylinApp.service('TableModel', function(ProjectModel,$q,TableService,$log) {
 
 
     var _this = this;
+
+    //tracking loading status
+    var loading = false;
    //for tables in cubeDesigner
     this.selectProjectTables = [];
 
@@ -47,6 +50,7 @@ KylinApp.service('TableModel', function(ProjectModel,$q,TableService,$log) {
 
     this.aceSrcTbLoaded = function (forceLoad) {
         _this.selectedSrcDb = [];
+        _this.loading = true;
 
         _this.selectedSrcTable = {};
         var defer = $q.defer();

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/ded2415b/webapp/app/less/component.less
----------------------------------------------------------------------
diff --git a/webapp/app/less/component.less b/webapp/app/less/component.less
index ab137d2..bd47e1d 100644
--- a/webapp/app/less/component.less
+++ b/webapp/app/less/component.less
@@ -950,6 +950,9 @@ Angular 1.2.0 Animation
   font-size: 13px;
   color: #3a87ad;
 }
+ul.abn-tree li.abn-tree-row a{
+ word-break: break-all;
+}
 .model-design .btn-box-tool{
   font-size: 13px !important;
 }
@@ -975,4 +978,4 @@ Angular 1.2.0 Animation
 
 .sweet-alert .lead.text-muted{
   word-break:break-all;
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/ded2415b/webapp/app/partials/models/models_tree.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/models/models_tree.html b/webapp/app/partials/models/models_tree.html
index 21128ce..8313b93 100644
--- a/webapp/app/partials/models/models_tree.html
+++ b/webapp/app/partials/models/models_tree.html
@@ -41,6 +41,8 @@
                 expand-level      = "2"
                 initial-selection = "">
             </abn-tree>
-        <div no-result ng-if="modelsManager.modelTreeData.length==0"></div>
+        <div ng-if="modelsManager.loading==true||tableModel.loading==true"><i class="fa fa-2x fa-spinner fa-spin"></i> Loading..</div>
+        <div no-result ng-if="modelsManager.loading==false&&tableModel.loading==false&&modelsManager.modelTreeData.length==0"></div>
+
     </div>
 </div>