You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ak...@apache.org on 2015/09/18 06:15:29 UTC

ignite git commit: IGNITE-843 Implemented batch load for metadata.

Repository: ignite
Updated Branches:
  refs/heads/ignite-843 e754fa8a9 -> d3d35bddf


IGNITE-843 Implemented batch load for metadata.


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

Branch: refs/heads/ignite-843
Commit: d3d35bddf6aa15db64d9f7c3eb8d170134d13d62
Parents: e754fa8
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Fri Sep 18 11:15:21 2015 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Fri Sep 18 11:15:21 2015 +0700

----------------------------------------------------------------------
 modules/control-center-web/src/main/js/app.js   |  3 +
 .../src/main/js/controllers/common-module.js    | 77 ++++++++++---------
 .../main/js/controllers/metadata-controller.js  | 81 ++++++++++----------
 .../main/js/views/templates/batch-confirm.jade  | 12 +--
 4 files changed, 91 insertions(+), 82 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/d3d35bdd/modules/control-center-web/src/main/js/app.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app.js b/modules/control-center-web/src/main/js/app.js
index 2fc69b3..4eb5edb 100644
--- a/modules/control-center-web/src/main/js/app.js
+++ b/modules/control-center-web/src/main/js/app.js
@@ -46,6 +46,9 @@ var app = express();
 
 app.use(compress());
 
+app.use(bodyParser.json({limit: '50mb'}));
+app.use(bodyParser.urlencoded({limit: '50mb', extended: true}));
+
 // Views engine setup.
 app.set('views', path.join(__dirname, 'views'));
 app.set('view engine', 'jade');

http://git-wip-us.apache.org/repos/asf/ignite/blob/d3d35bdd/modules/control-center-web/src/main/js/controllers/common-module.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/controllers/common-module.js b/modules/control-center-web/src/main/js/controllers/common-module.js
index 53e7cce..4b776a6 100644
--- a/modules/control-center-web/src/main/js/controllers/common-module.js
+++ b/modules/control-center-web/src/main/js/controllers/common-module.js
@@ -857,7 +857,7 @@ controlCenterModule.service('$common', [
 controlCenterModule.service('$confirm', function ($modal, $rootScope, $q) {
     var scope = $rootScope.$new();
 
-    var deferred = $q.defer();
+    var deferred;
 
     // Configure title of cancel button.
     scope.cancelTitle = 'Cancel';
@@ -873,6 +873,8 @@ controlCenterModule.service('$confirm', function ($modal, $rootScope, $q) {
     confirmModal.confirm = function (content) {
         scope.content = content || 'Confirm deletion?';
 
+        deferred = $q.defer();
+
         confirmModal.show();
 
         return deferred.promise;
@@ -882,20 +884,16 @@ controlCenterModule.service('$confirm', function ($modal, $rootScope, $q) {
 });
 
 // Service for confirm or skip several steps.
-controlCenterModule.service('$stepConfirm', function ($rootScope, $modal,  $q) {
+controlCenterModule.service('$confirmBatch', function ($rootScope, $modal,  $q) {
     var scope = $rootScope.$new();
 
-    scope.ui = {batchConfirmApplyToAll: false};
-
     var contentGenerator = function () {
         return 'No content';
     };
 
-    var items = [];
+    var deferred;
 
-    var curIx = 0;
-
-    var deferred = $q.defer();
+    var stepConfirmModal = $modal({templateUrl: '/confirm/batch', scope: scope, placement: 'center', show: false});
 
     function _done(cancel) {
         if (cancel)
@@ -906,44 +904,49 @@ controlCenterModule.service('$stepConfirm', function ($rootScope, $modal,  $q) {
         stepConfirmModal.hide();
     }
 
+    var items = [];
+    var curIx = 0;
+
     function _nextElement(skip) {
         items[curIx].skip = skip;
 
         curIx++;
 
         if (curIx < items.length)
-            scope.content = contentGenerator(itemsToConfirm = [curIx]);
+            scope.batchConfirm.content = contentGenerator(items[curIx]);
         else
             _done();
     }
 
-    /**
-     * Generate reject event on cancel for special event processing.
-     */
-    scope.batchConfirmCancel = function () {
-        _done(true);
-    };
-
-    scope.batchConfirmSkip = function () {
-        if (scope.ui.batchConfirmApplyToAll) {
-            for (var i = curIx; i < itemsToConfirm.length; i++)
-                itemsToConfirm[i].skip = true;
+    scope.batchConfirm = {
+        applyToAll: false,
+        cancel: function () {
+            _done(true);
+        },
+        skip: function () {
+            if (this.applyToAll) {
+                for (var i = curIx; i < items.length; i++)
+                    items[i].skip = true;
 
-            _done();
+                _done();
+            }
+            else
+                _nextElement(true);
+        },
+        overwrite: function () {
+            if (this.applyToAll)
+                _done();
+            else
+                _nextElement(false);
+        },
+        reset: function (itemsToConfirm) {
+            items = itemsToConfirm;
+            curIx = 0;
+            this.applyToAll = false;
+            this.content = (items && items.length > 0) ? contentGenerator(items[0]) : undefined;
         }
-        else
-            _nextElement(true);
     };
 
-    scope.batchConfirmOverwrite = function () {
-        if (scope.ui.batchConfirmApplyToAll)
-            _done();
-        else
-            _nextElement(false);
-    };
-
-    var stepConfirmModal = $modal({templateUrl: '/confirm/batch', scope: scope, placement: 'center', show: false});
-
     /**
      * Show confirm all dialog.
      *
@@ -953,11 +956,9 @@ controlCenterModule.service('$stepConfirm', function ($rootScope, $modal,  $q) {
     stepConfirmModal.confirm = function (confirmMessageFx, itemsToConfirm) {
         contentGenerator = confirmMessageFx;
 
-        items = itemsToConfirm;
-
-        scope.content = contentGenerator(items[0]);
+        scope.batchConfirm.reset(itemsToConfirm);
 
-        scope.ui.batchConfirmAll = false;
+        deferred = $q.defer();
 
         stepConfirmModal.show();
 
@@ -971,7 +972,7 @@ controlCenterModule.service('$stepConfirm', function ($rootScope, $modal,  $q) {
 controlCenterModule.service('$copy', function ($modal, $rootScope, $q) {
     var scope = $rootScope.$new();
 
-    var deferred = $q.defer();
+    var deferred;
 
     scope.ok = function (newName) {
         deferred.resolve(newName);
@@ -984,6 +985,8 @@ controlCenterModule.service('$copy', function ($modal, $rootScope, $q) {
     copyModal.confirm = function (oldName) {
         scope.newName = oldName + '(1)';
 
+        deferred = $q.defer();
+
         copyModal.show();
 
         return deferred.promise;

http://git-wip-us.apache.org/repos/asf/ignite/blob/d3d35bdd/modules/control-center-web/src/main/js/controllers/metadata-controller.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/controllers/metadata-controller.js b/modules/control-center-web/src/main/js/controllers/metadata-controller.js
index 4ad7ec2..cb70fcf 100644
--- a/modules/control-center-web/src/main/js/controllers/metadata-controller.js
+++ b/modules/control-center-web/src/main/js/controllers/metadata-controller.js
@@ -17,8 +17,8 @@
 
 // Controller for Metadata screen.
 controlCenterModule.controller('metadataController', [
-        '$scope', '$controller', '$http', '$modal', '$common', '$timeout', '$focus', '$confirm', '$copy', '$table', '$preview', '$stepConfirm', '$loading',
-        function ($scope, $controller, $http, $modal, $common, $timeout, $focus, $confirm, $copy, $table, $preview, $stepConfirm, $loading) {
+        '$scope', '$controller', '$http', '$modal', '$common', '$timeout', '$focus', '$confirm', '$confirmBatch', '$copy', '$table', '$preview', '$loading',
+        function ($scope, $controller, $http, $modal, $common, $timeout, $focus, $confirm, $confirmBatch, $copy, $table, $preview, $loading) {
             // Initialize the super class and extend it.
             angular.extend(this, $controller('save-remove', {$scope: $scope}));
 
@@ -342,46 +342,50 @@ controlCenterModule.controller('metadataController', [
             $scope.ui.packageName = $scope.user.email.replace('@', '.').split('.').reverse().join('.');
 
             function _saveBatch(batch) {
-                $loading.start('loadingMetadataFromDb');
+                if (batch && batch.length > 0) {
+                    $loading.start('loadingMetadataFromDb');
 
-                $http.post('metadata/save/batch', batch)
-                    .success(function (savedBatch) {
-                        var lastItem = undefined;
-                        var newItems = [];
+                    $http.post('metadata/save/batch', batch)
+                        .success(function (savedBatch) {
+                            var lastItem = undefined;
+                            var newItems = [];
 
-                        _.forEach(savedBatch, function (savedItem) {
-                            var idx = _.findIndex($scope.metadatas, function (meta) {
-                                return meta._id == savedItem._id;
-                            });
+                            _.forEach(savedBatch, function (savedItem) {
+                                var idx = _.findIndex($scope.metadatas, function (meta) {
+                                    return meta._id == savedItem._id;
+                                });
 
-                            if (idx >= 0)
-                                $scope.metadatas[idx] = savedItem;
-                            else
-                                newItems.push(savedItem);
+                                if (idx >= 0)
+                                    $scope.metadatas[idx] = savedItem;
+                                else
+                                    newItems.push(savedItem);
 
-                            lastItem = savedItem;
-                        });
+                                lastItem = savedItem;
+                            });
 
-                        _.forEach(newItems, function (item) {
-                            $scope.metadatas.push(item);
-                        });
+                            _.forEach(newItems, function (item) {
+                                $scope.metadatas.push(item);
+                            });
 
-                        if (!lastItem && $scope.metadatas.length > 0)
-                            lastItem = $scope.metadatas[0];
+                            if (!lastItem && $scope.metadatas.length > 0)
+                                lastItem = $scope.metadatas[0];
 
-                        $scope.selectItem(lastItem);
-                        $scope.ui.markPristine(1);
+                            $scope.selectItem(lastItem);
+                            $scope.ui.markPristine(1);
 
-                        $common.showInfo('Cache type metadata loaded from database.');
-                    })
-                    .error(function (errMsg) {
-                        $common.showError(errMsg);
-                    })
-                    .finally(function() {
-                        $loading.finish('loadingMetadataFromDb');
+                            $common.showInfo('Cache type metadata loaded from database.');
+                        })
+                        .error(function (errMsg) {
+                            $common.showError(errMsg);
+                        })
+                        .finally(function() {
+                            $loading.finish('loadingMetadataFromDb');
 
-                        loadMetaModal.hide();
-                    });
+                            loadMetaModal.hide();
+                        });
+                }
+                else
+                    loadMetaModal.hide();
             }
 
             function _saveMetadata() {
@@ -484,7 +488,8 @@ controlCenterModule.controller('metadataController', [
                         };
 
                         if ($common.isDefined(metaFound)) {
-                            meta = metaFound;
+                            meta._id = metaFound._id;
+                            meta.caches = metaFound.caches;
                             meta.confirm = true;
                         }
 
@@ -517,13 +522,11 @@ controlCenterModule.controller('metadataController', [
                         '</span>';
                 }
 
-                var itemsToConfirm = _.filter(batch, function (item) {
-                    return item.confirm;
-                });
+                var itemsToConfirm = _.filter(batch, function (item) { return item.confirm; });
 
                 if (itemsToConfirm.length > 0)
-                    $stepConfirm.confirm(overwriteMessage, itemsToConfirm).then(function () {
-                        _saveBatch(batch);
+                    $confirmBatch.confirm(overwriteMessage, itemsToConfirm).then(function () {
+                        _saveBatch(_.filter(batch, function (item) {return !item.skip}));
                     }, function () {
                         $common.showError('Cache type metadata loading interrupted by user.');
                     });

http://git-wip-us.apache.org/repos/asf/ignite/blob/d3d35bdd/modules/control-center-web/src/main/js/views/templates/batch-confirm.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/templates/batch-confirm.jade b/modules/control-center-web/src/main/js/views/templates/batch-confirm.jade
index 6e26b61..a73d374 100644
--- a/modules/control-center-web/src/main/js/views/templates/batch-confirm.jade
+++ b/modules/control-center-web/src/main/js/views/templates/batch-confirm.jade
@@ -20,13 +20,13 @@
             .modal-header
                 button.close(type='button' ng-click='cancel()' aria-hidden='true') &times;
                 h4.modal-title Confirmation
-            .modal-body(ng-show='content')
-                p(ng-bind-html='content' style='text-align: center;')
+            .modal-body(ng-show='batchConfirm.content')
+                p(ng-bind-html='batchConfirm.content' style='text-align: center')
             .modal-footer
                 .checkbox.labelField
                     label
-                        input(type='checkbox' ng-model='ui.forAll')
+                        input(type='checkbox' ng-model='batchConfirm.applyToAll')
                         | Apply to all
-                button.btn.btn-default(id='batch-confirm-btn-cancel' type='button' ng-click='batchConfirmCancel()') Cancel
-                button.btn.btn-default(id='batch-confirm-btn-cancel' type='button' ng-click='batchConfirmSkip()') Skip
-                button.btn.btn-primary(id='batch-confirm-btn-overwrite' type='button' ng-click='batchConfirmOverwrite()') Overwrite
+                button.btn.btn-default(id='batch-confirm-btn-cancel' type='button' ng-click='batchConfirm.cCancel()') Cancel
+                button.btn.btn-default(id='batch-confirm-btn-cancel' type='button' ng-click='batchConfirm.skip()') Skip
+                button.btn.btn-primary(id='batch-confirm-btn-overwrite' type='button' ng-click='batchConfirm.overwrite()') Overwrite