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');
