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>