IGNITE-843: WIP cache type metadata: added support for $confirm, $saveAs.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/b34fb931 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/b34fb931 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/b34fb931 Branch: refs/heads/ignite-1121 Commit: b34fb931bfea89c46625a945d723ab7fd8826f11 Parents: 18f554d Author: AKuznetsov <akuznet...@gridgain.com> Authored: Tue Jul 21 01:03:55 2015 +0700 Committer: AKuznetsov <akuznet...@gridgain.com> Committed: Tue Jul 21 01:03:55 2015 +0700 ---------------------------------------------------------------------- .../nodejs/controllers/metadata-controller.js | 74 +++++++++++++++----- .../nodejs/views/configuration/metadata.jade | 1 + 2 files changed, 56 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b34fb931/modules/web-control-center/nodejs/controllers/metadata-controller.js ---------------------------------------------------------------------- diff --git a/modules/web-control-center/nodejs/controllers/metadata-controller.js b/modules/web-control-center/nodejs/controllers/metadata-controller.js index 9b100af..25e8156 100644 --- a/modules/web-control-center/nodejs/controllers/metadata-controller.js +++ b/modules/web-control-center/nodejs/controllers/metadata-controller.js @@ -15,7 +15,7 @@ * limitations under the License. */ -controlCenterModule.controller('metadataController', ['$scope', '$http', '$common', '$table', function ($scope, $http, $common, $table) { +controlCenterModule.controller('metadataController', ['$scope', '$http', '$common', '$confirm', '$saveAs', '$table', function ($scope, $http, $common, $confirm, $saveAs, $table) { $scope.joinTip = $common.joinTip; $scope.getModel = $common.getModel; @@ -321,10 +321,13 @@ controlCenterModule.controller('metadataController', ['$scope', '$http', '$commo $scope.backupItem.space = $scope.spaces[0]._id; }; - // Save metadata in db. - $scope.saveItem = function () { - var item = $scope.backupItem; + // Check cache type metadata logical consistency. + function validate(item) { + return true; + } + // Save cache type metadata into database. + function save(item) { $http.post('metadata/save', item) .success(function (_id) { $common.showInfo('Metadata "' + item.name + '" saved.'); @@ -343,30 +346,63 @@ controlCenterModule.controller('metadataController', ['$scope', '$http', '$commo $scope.selectItem(item); + $common.showInfo('Cache type metadata"' + item.name + '" saved.'); }) .error(function (errMsg) { $common.showError(errMsg); }); + } + + // Save cache type metadata. + $scope.saveItem = function () { + var item = $scope.backupItem; + + if (validate(item)) + save(item); }; - $scope.removeItem = function () { - var _id = $scope.selectedItem._id; + // Save cache type metadata with new name. + $scope.saveItemAs = function () { + if (validate($scope.backupItem)) + $saveAs.show($scope.backupItem.name).then(function (newName) { + var item = angular.copy($scope.backupItem); - $http.post('metadata/remove', {_id: _id}) - .success(function () { - var i = _.findIndex($scope.metadatas, function (metadata) { - return metadata._id == _id; - }); + item._id = undefined; + item.name = newName; - if (i >= 0) { - $scope.metadatas.splice(i, 1); + save(item); + }); + }; - $scope.selectedItem = undefined; - $scope.backupItem = undefined; - } - }) - .error(function (errMsg) { - $common.showError(errMsg); + $scope.removeItem = function () { + var selectedItem = $scope.selectedItem; + + $confirm.show('Are you sure you want to remove cache type metadata: "' + selectedItem.name + '"?').then( + function () { + var _id = selectedItem._id; + + $http.post('metadata/remove', {_id: _id}) + .success(function () { + $common.showInfo('Cache type metadata has been removed: ' + selectedItem.name); + + var metadatas = $scope.metadatas; + + var idx = _.findIndex(metadatas, function (metadata) { return metadata._id == _id; }); + + if (idx >= 0) { + metadatas.splice(i, idx); + + if (metadatas.length > 0) + $scope.selectItem(metadatas[0]); + else { + $scope.selectedItem = undefined; + $scope.backupItem = undefined; + } + } + }) + .error(function (errMsg) { + $common.showError(errMsg); + }); }); }; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b34fb931/modules/web-control-center/nodejs/views/configuration/metadata.jade ---------------------------------------------------------------------- diff --git a/modules/web-control-center/nodejs/views/configuration/metadata.jade b/modules/web-control-center/nodejs/views/configuration/metadata.jade index 7eec682..bd3eb05 100644 --- a/modules/web-control-center/nodejs/views/configuration/metadata.jade +++ b/modules/web-control-center/nodejs/views/configuration/metadata.jade @@ -50,6 +50,7 @@ block content .settings-row(ng-repeat='field in metadataManual') +form-row button.btn.btn-primary(ng-disabled='manualForm.$invalid' ng-click='saveItem()') Save + button.btn.btn-primary(ng-show='backupItem._id' ng-disabled='inputForm.$invalid' ng-click='saveItemAs()') Save As button.btn.btn-primary.btn-second(ng-show='backupItem._id' ng-click='removeItem()') Remove .panel.panel-default .panel-heading