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/11 10:39:26 UTC
ignite git commit: IGNITE-843: Undo for groups.
Repository: ignite
Updated Branches:
refs/heads/ignite-843 3a7c11eff -> 7591c2143
IGNITE-843: Undo for groups.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/7591c214
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/7591c214
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/7591c214
Branch: refs/heads/ignite-843
Commit: 7591c2143a5a1036c4880306663f6d1d6233e1ea
Parents: 3a7c11e
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Fri Sep 11 15:40:04 2015 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Fri Sep 11 15:40:04 2015 +0700
----------------------------------------------------------------------
.../main/js/controllers/caches-controller.js | 32 ++++---
.../main/js/controllers/clusters-controller.js | 32 +++++--
.../src/main/js/controllers/common-module.js | 87 ++++++++++++++++----
.../main/js/controllers/metadata-controller.js | 15 +++-
.../src/main/js/public/stylesheets/style.scss | 5 ++
.../src/main/js/views/includes/controls.jade | 1 +
6 files changed, 135 insertions(+), 37 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/7591c214/modules/control-center-web/src/main/js/controllers/caches-controller.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/controllers/caches-controller.js b/modules/control-center-web/src/main/js/controllers/caches-controller.js
index 0c8fe39..cf012ea 100644
--- a/modules/control-center-web/src/main/js/controllers/caches-controller.js
+++ b/modules/control-center-web/src/main/js/controllers/caches-controller.js
@@ -415,15 +415,8 @@ controlCenterModule.controller('cachesController', [
'Selected cache: ' + $scope.backupItem.name : 'New cache';
};
- // Add new cache.
- $scope.createItem = function () {
- $table.tableReset();
-
- $timeout(function () {
- $common.ensureActivePanel($scope.panels, 'general', 'cacheName');
- });
-
- var newItem = {
+ function prepareNewItem() {
+ return {
space: $scope.spaces[0]._id,
cacheMode: 'PARTITIONED',
atomicityMode: 'ATOMIC',
@@ -432,8 +425,17 @@ controlCenterModule.controller('cachesController', [
clusters: [],
metadatas: []
};
+ }
- $scope.selectItem(undefined, newItem);
+ // Add new cache.
+ $scope.createItem = function () {
+ $table.tableReset();
+
+ $timeout(function () {
+ $common.ensureActivePanel($scope.panels, 'general', 'cacheName');
+ });
+
+ $scope.selectItem(undefined, prepareNewItem());
};
// Check cache logical consistency.
@@ -596,5 +598,15 @@ controlCenterModule.controller('cachesController', [
}
);
};
+
+ $scope.resetItem = function (group) {
+ var resetTo = $scope.selectedItem;
+
+ if (!$common.isDefined(resetTo))
+ resetTo = prepareNewItem();
+
+ $common.resetItem($scope.backupItem, resetTo, $scope.general, group);
+ $common.resetItem($scope.backupItem, resetTo, $scope.advanced, group);
+ }
}]
);
http://git-wip-us.apache.org/repos/asf/ignite/blob/7591c214/modules/control-center-web/src/main/js/controllers/clusters-controller.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/controllers/clusters-controller.js b/modules/control-center-web/src/main/js/controllers/clusters-controller.js
index 16919fa..55cef9b 100644
--- a/modules/control-center-web/src/main/js/controllers/clusters-controller.js
+++ b/modules/control-center-web/src/main/js/controllers/clusters-controller.js
@@ -313,14 +313,7 @@ controlCenterModule.controller('clustersController', ['$scope', '$controller', '
'Selected cluster: ' + $scope.backupItem.name : 'New cluster';
};
- // Add new cluster.
- $scope.createItem = function () {
- $table.tableReset();
-
- $timeout(function () {
- $common.ensureActivePanel($scope.panels, "general", 'clusterName');
- });
-
+ function prepareNewItem() {
var newItem = {
discovery: {kind: 'Multicast', Vm: {addresses: ['127.0.0.1:47500..47510']}, Multicast: {}},
deploymentMode: 'SHARED'
@@ -329,7 +322,18 @@ controlCenterModule.controller('clustersController', ['$scope', '$controller', '
newItem.caches = [];
newItem.space = $scope.spaces[0]._id;
- $scope.selectItem(undefined, newItem);
+ return newItem;
+ }
+
+ // Add new cluster.
+ $scope.createItem = function () {
+ $table.tableReset();
+
+ $timeout(function () {
+ $common.ensureActivePanel($scope.panels, "general", 'clusterName');
+ });
+
+ $scope.selectItem(undefined, prepareNewItem());
};
$scope.indexOfCache = function (cacheId) {
@@ -503,5 +507,15 @@ controlCenterModule.controller('clustersController', ['$scope', '$controller', '
}
);
};
+
+ $scope.resetItem = function (group) {
+ var resetTo = $scope.selectedItem;
+
+ if (!$common.isDefined(resetTo))
+ resetTo = prepareNewItem();
+
+ $common.resetItem($scope.backupItem, resetTo, $scope.general, group);
+ $common.resetItem($scope.backupItem, resetTo, $scope.advanced, group);
+ }
}]
);
http://git-wip-us.apache.org/repos/asf/ignite/blob/7591c214/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 2e88d84..9c3bf82 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
@@ -500,30 +500,32 @@ controlCenterModule.service('$common', [
return isDefined(form) && form.$dirty;
}
- return {
- getModel: function (obj, field) {
- var path = field.path;
+ function getModel(obj, field) {
+ var path = field.path;
- if (!isDefined(path))
- return obj;
+ if (!isDefined(path))
+ return obj;
- path = path.replace(/\[(\w+)\]/g, '.$1'); // convert indexes to properties
- path = path.replace(/^\./, ''); // strip a leading dot
+ path = path.replace(/\[(\w+)\]/g, '.$1'); // convert indexes to properties
+ path = path.replace(/^\./, ''); // strip a leading dot
- var segs = path.split('.');
- var root = obj;
+ var segs = path.split('.');
+ var root = obj;
- while (segs.length > 0) {
- var pathStep = segs.shift();
+ while (segs.length > 0) {
+ var pathStep = segs.shift();
- if (typeof root[pathStep] === 'undefined')
- root[pathStep] = {};
+ if (typeof root[pathStep] === 'undefined')
+ root[pathStep] = {};
- root = root[pathStep];
- }
+ root = root[pathStep];
+ }
- return root;
- },
+ return root;
+ }
+
+ return {
+ getModel: getModel,
joinTip: function (arr) {
if (!arr) {
return arr;
@@ -707,6 +709,57 @@ controlCenterModule.service('$common', [
file.click();
document.body.removeChild(file);
+ },
+ resetItem: function (backupItem, selectedItem, groups, group) {
+ function restoreFields(fields) {
+ // Reset fields by one.
+ for (var fldIx = 0; fldIx < fields.length; fldIx ++) {
+ var field = fields[fldIx];
+
+ var destMdl = getModel(backupItem, field);
+
+ if (isDefined(destMdl)) {
+ if (isDefined(selectedItem)) {
+ var srcMdl = getModel(selectedItem, field);
+
+ if (isDefined(srcMdl)) {
+ // For array create copy.
+ if ($.isArray(srcMdl[field.model]))
+ destMdl[field.model] = srcMdl[field.model].slice();
+ else
+ destMdl[field.model] = srcMdl[field.model];
+ }
+ else
+ destMdl[field.model] = undefined;
+ }
+ else
+ destMdl[field.model] = undefined;
+
+ // For kind field restore kind value and all configured kinds.
+ if (field.model == 'kind') {
+ var kind = getModel(backupItem, field)[field.model];
+
+ var details = field.details;
+
+ var keys = Object.keys(details);
+
+ for (var detIx = 0; detIx < keys.length; detIx++)
+ restoreFields(details[keys[detIx]].fields);
+ }
+ }
+ }
+ }
+
+ // Find group metadata to reset group values.
+ for (var grpIx = 0; grpIx < groups.length; grpIx ++) {
+ if (groups[grpIx].group == group) {
+ var fields = groups[grpIx].fields;
+
+ restoreFields(fields);
+
+ break;
+ }
+ }
}
}
}]);
http://git-wip-us.apache.org/repos/asf/ignite/blob/7591c214/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 e8ac53d..df24a31 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
@@ -702,6 +702,10 @@ controlCenterModule.controller('metadataController', [
: 'New metadata';
};
+ function prepareNewItem() {
+ return {space: $scope.spaces[0]._id, caches: []};
+ }
+
// Add new metadata.
$scope.createItem = function () {
$table.tableReset();
@@ -710,7 +714,7 @@ controlCenterModule.controller('metadataController', [
$common.ensureActivePanel($scope.panels, 'metadata', 'keyType');
});
- $scope.selectItem(undefined, {space: $scope.spaces[0]._id, caches: []});
+ $scope.selectItem(undefined, prepareNewItem());
};
// Check metadata logical consistency.
@@ -1179,5 +1183,14 @@ controlCenterModule.controller('metadataController', [
// Dirty state do not change automatically.
$scope.ui.inputForm.$dirty = true;
};
+
+ $scope.resetItem = function (group) {
+ var resetTo = $scope.selectedItem;
+
+ if (!$common.isDefined(resetTo))
+ resetTo = prepareNewItem();
+
+ $common.resetItem($scope.backupItem, resetTo, $scope.metadata, group);
+ }
}]
);
http://git-wip-us.apache.org/repos/asf/ignite/blob/7591c214/modules/control-center-web/src/main/js/public/stylesheets/style.scss
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/public/stylesheets/style.scss b/modules/control-center-web/src/main/js/public/stylesheets/style.scss
index aaeaa1c..4931a51 100644
--- a/modules/control-center-web/src/main/js/public/stylesheets/style.scss
+++ b/modules/control-center-web/src/main/js/public/stylesheets/style.scss
@@ -522,6 +522,11 @@ h3 {
a { color: black; }
.btn-group { margin-left: 10px; }
+
+ .fa-undo {
+ margin-top: 5px;
+ font-size: 16px;
+ }
}
.theme-line .panel-heading:hover {
http://git-wip-us.apache.org/repos/asf/ignite/blob/7591c214/modules/control-center-web/src/main/js/views/includes/controls.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/includes/controls.jade b/modules/control-center-web/src/main/js/views/includes/controls.jade
index 3966cfc..410ba11 100644
--- a/modules/control-center-web/src/main/js/views/includes/controls.jade
+++ b/modules/control-center-web/src/main/js/views/includes/controls.jade
@@ -440,6 +440,7 @@ mixin groups(groups, dataSource)
label(id='{{::group.group + "-title"}}')
i.tipLabel.fa.fa-question-circle(ng-if='group.tip' bs-tooltip='joinTip(group.tip)' type='button')
i.tipLabel.fa.fa-question-circle.blank(ng-if='!group.tip')
+ i.pull-right.fa.fa-undo(ng-click='resetItem(group.group);$event.stopPropagation()' bs-tooltip data-title='Undo unsaved changes')
.panel-collapse(role='tabpanel' bs-collapse-target id='{{::group.group}}' number='{{::group.number}}')
.panel-body
.col-sm-6(id='{{::group.group + "-left"}}')