Repository: kylin
Updated Branches:
  refs/heads/1.3.x 5f991e94a -> 146ea82bf


KYLIN-1647 refersh cube after action


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

Branch: refs/heads/1.3.x
Commit: 146ea82bf489d0222f5f77c6ff16457e131af5f0
Parents: 5f991e9
Author: Jason <jiat...@163.com>
Authored: Fri May 6 14:43:25 2016 +0800
Committer: Jason <jiat...@163.com>
Committed: Fri May 6 14:43:25 2016 +0800

----------------------------------------------------------------------
 webapp/app/js/controllers/cubes.js   | 81 +++++++++++++++++++++++++------
 webapp/app/partials/cubes/cubes.html | 16 +++---
 2 files changed, 73 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/146ea82b/webapp/app/js/controllers/cubes.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubes.js 
b/webapp/app/js/controllers/cubes.js
index 6801561..859d2d8 100755
--- a/webapp/app/js/controllers/cubes.js
+++ b/webapp/app/js/controllers/cubes.js
@@ -41,6 +41,27 @@ KylinApp
       dimensionFilter: '', measureFilter: ''
     };
 
+
+    $scope.refreshCube = function(cube){
+      var queryParam = {
+        cubeName: cube.name,
+        projectName: $scope.projectModel.selectedProject
+      };
+      var defer = $q.defer();
+      CubeService.list(queryParam, function(cubes){
+        for(var index in cubes){
+          if(cube.name === cubes[index].name){
+            defer.resolve(cubes[index]);
+            break;
+          }
+        }
+        defer.resolve([]);
+      },function(e){
+        defer.resolve([]);
+      })
+      return defer.promise;
+    }
+
     $scope.list = function (offset, limit) {
       var defer = $q.defer();
       if (!$scope.projectModel.projects.length) {
@@ -125,7 +146,7 @@ KylinApp
       }
     };
 
-    $scope.enable = function (cube) {
+    $scope.enable = function (cube, cubeIndex) {
       SweetAlert.swal({
         title: '',
         text: 'Are you sure to enable the cube? Please note: if cube schema is 
changed in the disabled period, all segments of the cube will be discarded due 
to data and schema mismatch.',
@@ -139,9 +160,12 @@ KylinApp
 
           loadingRequest.show();
           CubeService.enable({cubeId: cube.name}, {}, function (result) {
-
             loadingRequest.hide();
-            cube.status = 'READY';
+            $scope.refreshCube(cube).then(function(_cube){
+              if(_cube && _cube.name){
+                $scope.cubeList.cubes[cubeIndex] = _cube;
+              }
+            });
             SweetAlert.swal('Success!', 'Enable job was submitted 
successfully', 'success');
           }, function (e) {
 
@@ -158,7 +182,7 @@ KylinApp
       });
     };
 
-    $scope.purge = function (cube) {
+    $scope.purge = function (cube, cubeIndex) {
       SweetAlert.swal({
         title: '',
         text: 'Are you sure to purge the cube? ',
@@ -174,9 +198,12 @@ KylinApp
           CubeService.purge({cubeId: cube.name}, {}, function (result) {
 
             loadingRequest.hide();
-            CubeList.removeAll();
-            $scope.reload();
             SweetAlert.swal('Success!', 'Purge job was submitted 
successfully', 'success');
+            $scope.refreshCube(cube).then(function(_cube){
+              if(_cube && _cube.name){
+                $scope.cubeList.cubes[cubeIndex] = _cube;
+              }
+            });
           }, function (e) {
             loadingRequest.hide();
             if (e.data && e.data.exception) {
@@ -191,7 +218,7 @@ KylinApp
       });
     }
 
-    $scope.disable = function (cube) {
+    $scope.disable = function (cube, cubeIndex) {
 
       SweetAlert.swal({
         title: '',
@@ -208,7 +235,11 @@ KylinApp
           CubeService.disable({cubeId: cube.name}, {}, function (result) {
 
             loadingRequest.hide();
-            cube.status = 'DISABLED';
+            $scope.refreshCube(cube).then(function(_cube){
+              if(_cube && _cube.name){
+                $scope.cubeList.cubes[cubeIndex] = _cube;
+              }
+            });
             SweetAlert.swal('Success!', 'Disable job was submitted 
successfully', 'success');
           }, function (e) {
 
@@ -243,10 +274,6 @@ KylinApp
           CubeService.drop({cubeId: cube.name}, {}, function (result) {
 
             loadingRequest.hide();
-//                    var cubeIndex = CubeList.cubes.indexOf(cube);
-//                    if (cubeIndex > -1) {
-//                        $scope.cubes.splice(cubeIndex, 1);
-//                    }
             CubeList.removeCube(cube);
             SweetAlert.swal('Success!', 'Cube drop is done successfully', 
'success');
 
@@ -266,7 +293,7 @@ KylinApp
       });
     };
 
-    $scope.startJobSubmit = function (cube) {
+    $scope.startJobSubmit = function (cube, cubeIndex) {
       $scope.loadDetail(cube).then(function (cubeDetail) {
         ModelService.get({model_name: cubeDetail.model_name}, function (model) 
{
           if (model.name) {
@@ -285,6 +312,12 @@ KylinApp
                   },
                   buildType: function () {
                     return 'BUILD';
+                  },
+                  scope:function(){
+                    return $scope;
+                  },
+                  cubeIndex:function(){
+                    return cubeIndex;
                   }
                 }
               });
@@ -336,7 +369,7 @@ KylinApp
 
     };
 
-    $scope.startRefresh = function (cube) {
+    $scope.startRefresh = function (cube, cubeIndex) {
       $scope.loadDetail(cube).then(function () {
         $modal.open({
           templateUrl: 'jobRefresh.html',
@@ -347,6 +380,12 @@ KylinApp
             },
             buildType: function () {
               return 'REFRESH';
+            },
+            scope:function(){
+              return $scope;
+            },
+            cubeIndex:function(){
+              return cubeIndex;
             }
           }
         });
@@ -373,7 +412,7 @@ KylinApp
       $location.path("cubes/edit/" + cube.name);
     }
 
-    $scope.startMerge = function (cube) {
+    $scope.startMerge = function (cube, cubeIndex) {
       $scope.loadDetail(cube).then(function () {
         $modal.open({
           templateUrl: 'jobMerge.html',
@@ -384,6 +423,12 @@ KylinApp
             },
             buildType: function () {
               return 'MERGE';
+            },
+            scope:function(){
+              return $scope;
+            },
+            cubeIndex:function(){
+              return cubeIndex;
             }
           }
         });
@@ -442,7 +487,8 @@ var cubeCloneCtrl = function ($scope, $modalInstance, 
CubeService, MessageServic
 
 }
 
-var jobSubmitCtrl = function ($scope, $modalInstance, CubeService, 
MessageService, $location, cube, MetaModel, buildType, SweetAlert, 
loadingRequest) {
+var jobSubmitCtrl = function ($scope, $modalInstance, CubeService, 
MessageService, $location, cube, MetaModel, buildType, SweetAlert, 
loadingRequest, scope, cubeIndex, CubeList) {
+  $scope.cubeList = CubeList;
   $scope.cube = cube;
   $scope.metaModel = {
     model: cube.model
@@ -470,6 +516,9 @@ var jobSubmitCtrl = function ($scope, $modalInstance, 
CubeService, MessageServic
       loadingRequest.hide();
       $modalInstance.dismiss('cancel');
       SweetAlert.swal('Success!', 'Rebuild job was submitted successfully', 
'success');
+      scope.refreshCube(cube).then(function(_cube){
+        $scope.cubeList.cubes[cubeIndex] = _cube;
+      });
     }, function (e) {
 
       loadingRequest.hide();

http://git-wip-us.apache.org/repos/asf/kylin/blob/146ea82b/webapp/app/partials/cubes/cubes.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/cubes/cubes.html 
b/webapp/app/partials/cubes/cubes.html
index dc86585..a6704f1 100644
--- a/webapp/app/partials/cubes/cubes.html
+++ b/webapp/app/partials/cubes/cubes.html
@@ -80,7 +80,7 @@
         </tr>
         </thead>
         <!--Body-->
-        <tbody ng-repeat="cube in cubeList.cubes | 
orderObjectBy:state.filterAttr:state.filterReverse">
+        <tbody ng-repeat="cube in cubeList.cubes track by $index | 
orderObjectBy:state.filterAttr:state.filterReverse">
         <tr ng-class="{accordion:true}" style="cursor: pointer"  
ng-click="cube.showDetail=!cube.showDetail;loadDetail(cube)">
             <td>
                 <i ng-show="!cube.showDetail" class="fa 
fa-chevron-circle-right blue"></i>
@@ -112,15 +112,15 @@
                     </button>
                     <ul class="dropdown-menu" role="menu">
                         <li ng-if="cube.status=='DISABLED' && 
userService.hasRole('ROLE_ADMIN') ">
-                            <a ng-click="dropCube(cube)" tooltip="Drop the 
cube, related jobs and data permanently.">Drop</a></li>
+                            <a ng-click="dropCube(cube, $index)" tooltip="Drop 
the cube, related jobs and data permanently.">Drop</a></li>
                         <li ng-if="cube.status=='DISABLED' && 
(userService.hasRole('ROLE_ADMIN') || hasPermission(cube, 
permissions.ADMINISTRATION.mask, permissions.MANAGEMENT.mask))">
                             <a ng-click="cubeEdit(cube);">Edit</a></li>
-                        <li><a ng-click="startJobSubmit(cube);">Build</a></li>
-                        <li><a ng-click="startRefresh(cube)">Refresh</a></li>
-                        <li><a ng-click="startMerge(cube)">Merge</a></li>
-                        <li ng-if="cube.status!='DISABLED'"><a 
ng-click="disable(cube)">Disable</a></li>
-                        <li ng-if="cube.status=='DISABLED'"><a 
ng-click="enable(cube)">Enable</a></li>
-                        <li ng-if="cube.status=='DISABLED'"><a 
ng-click="purge(cube)">Purge</a></li>
+                        <li><a ng-click="startJobSubmit(cube, 
$index);">Build</a></li>
+                        <li><a ng-click="startRefresh(cube, 
$index)">Refresh</a></li>
+                        <li><a ng-click="startMerge(cube, 
$index)">Merge</a></li>
+                        <li ng-if="cube.status!='DISABLED'"><a 
ng-click="disable(cube, $index)">Disable</a></li>
+                        <li ng-if="cube.status=='DISABLED'"><a 
ng-click="enable(cube, $index)">Enable</a></li>
+                        <li ng-if="cube.status=='DISABLED'"><a 
ng-click="purge(cube, $index)">Purge</a></li>
                         <li><a ng-click="cloneCube(cube)">Clone</a></li>
 
                     </ul>

Reply via email to