Rename $cleanup service to IgniteModelNormalizer.

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

Branch: refs/heads/ignite-3262
Commit: 7659db0098d100de4f2b00d80ae0bf9d1e2c487f
Parents: 1769c82
Author: Alexey Kuznetsov <[email protected]>
Authored: Thu Jun 30 17:14:57 2016 +0700
Committer: Alexey Kuznetsov <[email protected]>
Committed: Thu Jun 30 17:14:57 2016 +0700

----------------------------------------------------------------------
 modules/web-console/src/main/js/app/app.js      |  4 +-
 .../js/app/services/ModelNormalizer.service.js  | 59 ++++++++++++++++++++
 .../src/main/js/app/services/cleanup.service.js | 46 ---------------
 .../main/js/controllers/caches-controller.js    | 10 ++--
 .../main/js/controllers/clusters-controller.js  | 10 ++--
 .../main/js/controllers/domains-controller.js   | 10 ++--
 .../src/main/js/controllers/igfs-controller.js  | 10 ++--
 7 files changed, 81 insertions(+), 68 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/7659db00/modules/web-console/src/main/js/app/app.js
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/app/app.js 
b/modules/web-console/src/main/js/app/app.js
index ca6b605..b62faeb 100644
--- a/modules/web-console/src/main/js/app/app.js
+++ b/modules/web-console/src/main/js/app/app.js
@@ -70,7 +70,6 @@ import igniteUiAceXml from 
'./directives/ui-ace-xml/ui-ace-xml.directive';
 
 // Services.
 import ChartColors from './services/ChartColors.service';
-import Cleanup from './services/cleanup.service';
 import Clone from './services/Clone.service.js';
 import Confirm from './services/confirm.service';
 import ConfirmBatch from './services/ConfirmBatch.service.js';
@@ -80,6 +79,7 @@ import Focus from './services/Focus.service';
 import InetAddress from './services/InetAddress.service';
 import JavaTypes from './services/JavaTypes.service';
 import Messages from './services/Messages.service';
+import ModelNormalizer from './services/ModelNormalizer.service.js';
 import LegacyTable from './services/LegacyTable.service';
 import LegacyUtils from './services/LegacyUtils.service';
 import UnsavedChangesGuard from './services/UnsavedChangesGuard.service';
@@ -194,7 +194,6 @@ angular
 .directive(...igniteUiAceXml)
 // Services.
 .service(...ChartColors)
-.service(...Cleanup)
 .service(...Clone)
 .service(...Confirm)
 .service(...ConfirmBatch)
@@ -204,6 +203,7 @@ angular
 .service(...InetAddress)
 .service(...JavaTypes)
 .service(...Messages)
+.service(...ModelNormalizer)
 .service(...LegacyTable)
 .service(...LegacyUtils)
 .service(...UnsavedChangesGuard)

http://git-wip-us.apache.org/repos/asf/ignite/blob/7659db00/modules/web-console/src/main/js/app/services/ModelNormalizer.service.js
----------------------------------------------------------------------
diff --git 
a/modules/web-console/src/main/js/app/services/ModelNormalizer.service.js 
b/modules/web-console/src/main/js/app/services/ModelNormalizer.service.js
new file mode 100644
index 0000000..4c7052b
--- /dev/null
+++ b/modules/web-console/src/main/js/app/services/ModelNormalizer.service.js
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Service to normalize objects for dirty checks.
+export default ['IgniteModelNormalizer', () => {
+    /**
+     * Normalize object for dirty checks.
+     *
+     * @param original
+     * @param dest
+     * @returns {*}
+     */
+    const normalize = (original, dest) => {
+        if (_.isUndefined(original))
+            return dest;
+
+        if (_.isObject(original)) {
+            _.forOwn(original, (value, key) => {
+                if (/\$\$hashKey/.test(key))
+                    return;
+
+                const attr = normalize(value);
+
+                if (!_.isNil(attr)) {
+                    dest = dest || {};
+                    dest[key] = attr;
+                }
+            });
+        } else if (_.isBoolean(original) && original === true)
+            dest = original;
+        else if ((_.isString(original) && original.length) || 
_.isNumber(original))
+            dest = original;
+        else if (_.isArray(original) && original.length)
+            dest = _.map(original, (value) => normalize(value, {}));
+
+        return dest;
+    };
+
+    return {
+        normalize,
+        isEqual(prev, cur) {
+            return _.isEqual(prev, normalize(cur));
+        }
+    };
+}];

http://git-wip-us.apache.org/repos/asf/ignite/blob/7659db00/modules/web-console/src/main/js/app/services/cleanup.service.js
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/app/services/cleanup.service.js 
b/modules/web-console/src/main/js/app/services/cleanup.service.js
deleted file mode 100644
index bec9ea3..0000000
--- a/modules/web-console/src/main/js/app/services/cleanup.service.js
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-export default ['$cleanup', () => {
-    const cleanup = (original, dist) => {
-        if (_.isUndefined(original))
-            return dist;
-
-        if (_.isObject(original)) {
-            _.forOwn(original, (value, key) => {
-                if (/\$\$hashKey/.test(key))
-                    return;
-
-                const attr = cleanup(value);
-
-                if (!_.isNil(attr)) {
-                    dist = dist || {};
-                    dist[key] = attr;
-                }
-            });
-        } else if (_.isBoolean(original) && original === true)
-            dist = original;
-        else if ((_.isString(original) && original.length) || 
_.isNumber(original))
-            dist = original;
-        else if (_.isArray(original) && original.length)
-            dist = _.map(original, (value) => cleanup(value, {}));
-
-        return dist;
-    };
-
-    return cleanup;
-}];

http://git-wip-us.apache.org/repos/asf/ignite/blob/7659db00/modules/web-console/src/main/js/controllers/caches-controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/controllers/caches-controller.js 
b/modules/web-console/src/main/js/controllers/caches-controller.js
index 6677c38..62b6bd3 100644
--- a/modules/web-console/src/main/js/controllers/caches-controller.js
+++ b/modules/web-console/src/main/js/controllers/caches-controller.js
@@ -17,8 +17,8 @@
 
 // Controller for Caches screen.
 export default ['cachesController', [
-    '$scope', '$http', '$state', '$filter', '$timeout', 'IgniteLegacyUtils', 
'IgniteMessages', 'IgniteConfirm', 'IgniteClone', '$loading', '$cleanup', 
'IgniteUnsavedChangesGuard',
-    function($scope, $http, $state, $filter, $timeout, LegacyUtils, Messages, 
Confirm, Clone, $loading, $cleanup, UnsavedChangesGuard) {
+    '$scope', '$http', '$state', '$filter', '$timeout', 'IgniteLegacyUtils', 
'IgniteMessages', 'IgniteConfirm', 'IgniteClone', '$loading', 
'IgniteModelNormalizer', 'IgniteUnsavedChangesGuard',
+    function($scope, $http, $state, $filter, $timeout, LegacyUtils, Messages, 
Confirm, Clone, $loading, ModelNormalizer, UnsavedChangesGuard) {
         UnsavedChangesGuard.install($scope);
 
         const emptyCache = {empty: true};
@@ -129,14 +129,14 @@ export default ['cachesController', [
                 }
 
                 $scope.$watch('ui.inputForm.$valid', function(valid) {
-                    if (valid && _.isEqual(__original_value, 
$cleanup($scope.backupItem)))
+                    if (valid && ModelNormalizer.isEqual(__original_value, 
$scope.backupItem))
                         $scope.ui.inputForm.$dirty = false;
                 });
 
                 $scope.$watch('backupItem', function(val) {
                     const form = $scope.ui.inputForm;
 
-                    if (form.$pristine || (form.$valid && 
_.isEqual(__original_value, $cleanup(val))))
+                    if (form.$pristine || (form.$valid && 
ModelNormalizer.isEqual(__original_value, val)))
                         form.$setPristine();
                     else
                         form.$setDirty();
@@ -172,7 +172,7 @@ export default ['cachesController', [
 
                 $scope.backupItem = angular.merge({}, blank, 
$scope.backupItem);
 
-                __original_value = $cleanup($scope.backupItem);
+                __original_value = 
ModelNormalizer.normalize($scope.backupItem);
 
                 if (LegacyUtils.getQueryVariable('new'))
                     $state.go('base.configuration.caches');

http://git-wip-us.apache.org/repos/asf/ignite/blob/7659db00/modules/web-console/src/main/js/controllers/clusters-controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/controllers/clusters-controller.js 
b/modules/web-console/src/main/js/controllers/clusters-controller.js
index a50af96..a80a782 100644
--- a/modules/web-console/src/main/js/controllers/clusters-controller.js
+++ b/modules/web-console/src/main/js/controllers/clusters-controller.js
@@ -17,8 +17,8 @@
 
 // Controller for Clusters screen.
 export default ['clustersController', [
-    '$rootScope', '$scope', '$http', '$state', '$timeout', 
'IgniteLegacyUtils', 'IgniteMessages', 'IgniteConfirm', 'IgniteClone', 
'$loading', '$cleanup', 'IgniteUnsavedChangesGuard', 'igniteEventGroups', 
'DemoInfo', 'IgniteLegacyTable',
-    function($root, $scope, $http, $state, $timeout, LegacyUtils, Messages, 
Confirm, Clone, $loading, $cleanup, UnsavedChangesGuard, igniteEventGroups, 
DemoInfo, LegacyTable) {
+    '$rootScope', '$scope', '$http', '$state', '$timeout', 
'IgniteLegacyUtils', 'IgniteMessages', 'IgniteConfirm', 'IgniteClone', 
'$loading', 'IgniteModelNormalizer', 'IgniteUnsavedChangesGuard', 
'igniteEventGroups', 'DemoInfo', 'IgniteLegacyTable',
+    function($root, $scope, $http, $state, $timeout, LegacyUtils, Messages, 
Confirm, Clone, $loading, ModelNormalizer, UnsavedChangesGuard, 
igniteEventGroups, DemoInfo, LegacyTable) {
         UnsavedChangesGuard.install($scope);
 
         const emptyCluster = {empty: true};
@@ -235,14 +235,14 @@ export default ['clustersController', [
                 }
 
                 $scope.$watch('ui.inputForm.$valid', function(valid) {
-                    if (valid && _.isEqual(__original_value, 
$cleanup($scope.backupItem)))
+                    if (valid && ModelNormalizer.isEqual(__original_value, 
$scope.backupItem))
                         $scope.ui.inputForm.$dirty = false;
                 });
 
                 $scope.$watch('backupItem', function(val) {
                     const form = $scope.ui.inputForm;
 
-                    if (form.$pristine || (form.$valid && 
_.isEqual(__original_value, $cleanup(val))))
+                    if (form.$pristine || (form.$valid && 
ModelNormalizer.isEqual(__original_value, val)))
                         form.$setPristine();
                     else
                         form.$setDirty();
@@ -284,7 +284,7 @@ export default ['clustersController', [
 
                 $scope.backupItem = angular.merge({}, blank, 
$scope.backupItem);
 
-                __original_value = $cleanup($scope.backupItem);
+                __original_value = 
ModelNormalizer.normalize($scope.backupItem);
 
                 if (LegacyUtils.getQueryVariable('new'))
                     $state.go('base.configuration.clusters');

http://git-wip-us.apache.org/repos/asf/ignite/blob/7659db00/modules/web-console/src/main/js/controllers/domains-controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/controllers/domains-controller.js 
b/modules/web-console/src/main/js/controllers/domains-controller.js
index c709ebb..a4bcf68 100644
--- a/modules/web-console/src/main/js/controllers/domains-controller.js
+++ b/modules/web-console/src/main/js/controllers/domains-controller.js
@@ -17,8 +17,8 @@
 
 // Controller for Domain model screen.
 export default ['domainsController', [
-    '$rootScope', '$scope', '$http', '$state', '$filter', '$timeout', 
'$modal', 'IgniteLegacyUtils', 'IgniteMessages', 'IgniteFocus', 
'IgniteConfirm', 'IgniteConfirmBatch', 'IgniteClone', '$loading', '$cleanup', 
'IgniteUnsavedChangesGuard', 'IgniteAgentMonitor', 'IgniteLegacyTable',
-    function($root, $scope, $http, $state, $filter, $timeout, $modal, 
LegacyUtils, Messages, Focus, Confirm, ConfirmBatch, Clone, $loading, $cleanup, 
UnsavedChangesGuard, IgniteAgentMonitor, LegacyTable) {
+    '$rootScope', '$scope', '$http', '$state', '$filter', '$timeout', 
'$modal', 'IgniteLegacyUtils', 'IgniteMessages', 'IgniteFocus', 
'IgniteConfirm', 'IgniteConfirmBatch', 'IgniteClone', '$loading', 
'IgniteModelNormalizer', 'IgniteUnsavedChangesGuard', 'IgniteAgentMonitor', 
'IgniteLegacyTable',
+    function($root, $scope, $http, $state, $filter, $timeout, $modal, 
LegacyUtils, Messages, Focus, Confirm, ConfirmBatch, Clone, $loading, 
ModelNormalizer, UnsavedChangesGuard, IgniteAgentMonitor, LegacyTable) {
         UnsavedChangesGuard.install($scope);
 
         const emptyDomain = {empty: true};
@@ -1108,14 +1108,14 @@ export default ['domainsController', [
                 }
 
                 $scope.$watch('ui.inputForm.$valid', function(valid) {
-                    if (valid && _.isEqual(__original_value, 
$cleanup($scope.backupItem)))
+                    if (valid && ModelNormalizer.isEqual(__original_value, 
$scope.backupItem))
                         $scope.ui.inputForm.$dirty = false;
                 });
 
                 $scope.$watch('backupItem', function(val) {
                     const form = $scope.ui.inputForm;
 
-                    if (form.$pristine || (form.$valid && 
_.isEqual(__original_value, $cleanup(val))))
+                    if (form.$pristine || (form.$valid && 
ModelNormalizer.isEqual(__original_value, val)))
                         form.$setPristine();
                     else
                         form.$setDirty();
@@ -1165,7 +1165,7 @@ export default ['domainsController', [
 
                 $scope.backupItem = angular.merge({}, blank, 
$scope.backupItem);
 
-                __original_value = $cleanup($scope.backupItem);
+                __original_value = 
ModelNormalizer.normalize($scope.backupItem);
 
                 if (LegacyUtils.isDefined($scope.backupItem) && 
!LegacyUtils.isDefined($scope.backupItem.queryMetadata))
                     $scope.backupItem.queryMetadata = 'Configuration';

http://git-wip-us.apache.org/repos/asf/ignite/blob/7659db00/modules/web-console/src/main/js/controllers/igfs-controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/controllers/igfs-controller.js 
b/modules/web-console/src/main/js/controllers/igfs-controller.js
index d2907a3..ff80a75 100644
--- a/modules/web-console/src/main/js/controllers/igfs-controller.js
+++ b/modules/web-console/src/main/js/controllers/igfs-controller.js
@@ -17,8 +17,8 @@
 
 // Controller for IGFS screen.
 export default ['igfsController', [
-    '$scope', '$http', '$state', '$filter', '$timeout', 'IgniteLegacyUtils', 
'IgniteMessages', 'IgniteConfirm', 'IgniteClone', '$loading', '$cleanup', 
'IgniteUnsavedChangesGuard', 'IgniteLegacyTable',
-    function($scope, $http, $state, $filter, $timeout, LegacyUtils, Messages, 
Confirm, Clone, $loading, $cleanup, UnsavedChangesGuard, LegacyTable) {
+    '$scope', '$http', '$state', '$filter', '$timeout', 'IgniteLegacyUtils', 
'IgniteMessages', 'IgniteConfirm', 'IgniteClone', '$loading', 
'IgniteModelNormalizer', 'IgniteUnsavedChangesGuard', 'IgniteLegacyTable',
+    function($scope, $http, $state, $filter, $timeout, LegacyUtils, Messages, 
Confirm, Clone, $loading, ModelNormalizer, UnsavedChangesGuard, LegacyTable) {
         UnsavedChangesGuard.install($scope);
 
         const emptyIgfs = {empty: true};
@@ -180,14 +180,14 @@ export default ['igfsController', [
                 }
 
                 $scope.$watch('ui.inputForm.$valid', function(valid) {
-                    if (valid && _.isEqual(__original_value, 
$cleanup($scope.backupItem)))
+                    if (valid && ModelNormalizer.isEqual(__original_value, 
$scope.backupItem))
                         $scope.ui.inputForm.$dirty = false;
                 });
 
                 $scope.$watch('backupItem', function(val) {
                     const form = $scope.ui.inputForm;
 
-                    if (form.$pristine || (form.$valid && 
_.isEqual(__original_value, $cleanup(val))))
+                    if (form.$pristine || (form.$valid && 
ModelNormalizer.isEqual(__original_value, val)))
                         form.$setPristine();
                     else
                         form.$setDirty();
@@ -225,7 +225,7 @@ export default ['igfsController', [
 
                 $scope.backupItem = angular.merge({}, blank, 
$scope.backupItem);
 
-                __original_value = $cleanup($scope.backupItem);
+                __original_value = 
ModelNormalizer.normalize($scope.backupItem);
 
                 if (LegacyUtils.getQueryVariable('new'))
                     $state.go('base.configuration.igfs');

Reply via email to