From 06779e6cd942e7c6d0805731e8aa0a07fcf3b590 Mon Sep 17 00:00:00 2001 From: Deep Tailor Date: Tue, 3 Oct 2017 13:33:09 -0700 Subject: [PATCH 1/4] add mutation listener to Inspector Controller --- .../general/src/controllers/ObjectInspectorController.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/platform/commonUI/general/src/controllers/ObjectInspectorController.js b/platform/commonUI/general/src/controllers/ObjectInspectorController.js index 991f79553e..b702ee9a79 100644 --- a/platform/commonUI/general/src/controllers/ObjectInspectorController.js +++ b/platform/commonUI/general/src/controllers/ObjectInspectorController.js @@ -38,6 +38,8 @@ define( $scope.contextutalParents = []; //$scope.isLink = false; + this.InspectorMutation = $scope.ngModel.selectedObject.getCapability('mutation'); + // Gets an array of the contextual parents/ancestors of the selected object function getContextualPath() { var currentObj = $scope.ngModel.selectedObject, @@ -108,8 +110,11 @@ define( getMetadata(); }); - } + this.InspectorMutation.listen(function(){ + getMetadata(); + }); + } return ObjectInspectorController; } ); From 7deb3cd0254b24bd02dd7ea2595687ac22f5d7a3 Mon Sep 17 00:00:00 2001 From: Deep Tailor Date: Tue, 3 Oct 2017 14:34:01 -0700 Subject: [PATCH 2/4] add if statement to check is objects are not equal before reassigning metadata --- .../general/src/controllers/ObjectInspectorController.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/platform/commonUI/general/src/controllers/ObjectInspectorController.js b/platform/commonUI/general/src/controllers/ObjectInspectorController.js index b702ee9a79..a0a10b821c 100644 --- a/platform/commonUI/general/src/controllers/ObjectInspectorController.js +++ b/platform/commonUI/general/src/controllers/ObjectInspectorController.js @@ -111,8 +111,10 @@ define( getMetadata(); }); - this.InspectorMutation.listen(function(){ - getMetadata(); + this.InspectorMutation.listen(function () { + if(!angular.equals($scope.metadata, $scope.ngModel.selectedObject.useCapability('metadata'))){ + getMetadata(); + } }); } return ObjectInspectorController; From a4a1cb5e05fb9bee73003a1c118d9d234bd0ff5b Mon Sep 17 00:00:00 2001 From: Deep Tailor Date: Tue, 10 Oct 2017 13:32:42 -0700 Subject: [PATCH 3/4] fix tests by adding listen function, and fix lint/checkstyle errors --- .../src/controllers/ObjectInspectorController.js | 6 +++--- .../test/controllers/ObjectInspectorControllerSpec.js | 10 +++++++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/platform/commonUI/general/src/controllers/ObjectInspectorController.js b/platform/commonUI/general/src/controllers/ObjectInspectorController.js index a0a10b821c..95924add34 100644 --- a/platform/commonUI/general/src/controllers/ObjectInspectorController.js +++ b/platform/commonUI/general/src/controllers/ObjectInspectorController.js @@ -24,8 +24,8 @@ * Module defining ObjectInspectorController. Created by shale on 08/21/2015. */ define( - [], - function () { + ['angular'], + function (angular) { /** * The ObjectInspectorController gets and formats the data for @@ -112,7 +112,7 @@ define( }); this.InspectorMutation.listen(function () { - if(!angular.equals($scope.metadata, $scope.ngModel.selectedObject.useCapability('metadata'))){ + if (!angular.equals($scope.metadata, $scope.ngModel.selectedObject.useCapability('metadata'))) { getMetadata(); } }); diff --git a/platform/commonUI/general/test/controllers/ObjectInspectorControllerSpec.js b/platform/commonUI/general/test/controllers/ObjectInspectorControllerSpec.js index bc2acd0fb1..be970c44f8 100644 --- a/platform/commonUI/general/test/controllers/ObjectInspectorControllerSpec.js +++ b/platform/commonUI/general/test/controllers/ObjectInspectorControllerSpec.js @@ -42,7 +42,15 @@ define( ["$watch"] ); mockScope.ngModel = {}; - mockScope.ngModel.selectedObject = 'mock selected object'; + mockScope.ngModel.selectedObject = { + getCapability: function () { + return { + listen: function () { + return true; + } + }; + } + }; mockObjectService = jasmine.createSpyObj( "objectService", From 26210eaa506e89c28b0186bc7be3431fc645a706 Mon Sep 17 00:00:00 2001 From: Deep Tailor Date: Tue, 10 Oct 2017 14:37:25 -0700 Subject: [PATCH 4/4] make reviewer requested changes --- .../src/controllers/ObjectInspectorController.js | 14 +++++--------- .../controllers/ObjectInspectorControllerSpec.js | 2 +- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/platform/commonUI/general/src/controllers/ObjectInspectorController.js b/platform/commonUI/general/src/controllers/ObjectInspectorController.js index 95924add34..d8e6ead840 100644 --- a/platform/commonUI/general/src/controllers/ObjectInspectorController.js +++ b/platform/commonUI/general/src/controllers/ObjectInspectorController.js @@ -24,8 +24,8 @@ * Module defining ObjectInspectorController. Created by shale on 08/21/2015. */ define( - ['angular'], - function (angular) { + [], + function () { /** * The ObjectInspectorController gets and formats the data for @@ -38,8 +38,6 @@ define( $scope.contextutalParents = []; //$scope.isLink = false; - this.InspectorMutation = $scope.ngModel.selectedObject.getCapability('mutation'); - // Gets an array of the contextual parents/ancestors of the selected object function getContextualPath() { var currentObj = $scope.ngModel.selectedObject, @@ -111,11 +109,9 @@ define( getMetadata(); }); - this.InspectorMutation.listen(function () { - if (!angular.equals($scope.metadata, $scope.ngModel.selectedObject.useCapability('metadata'))) { - getMetadata(); - } - }); + var mutation = $scope.ngModel.selectedObject.getCapability('mutation'); + var unlisten = mutation.listen(getMetadata); + $scope.$on('$destroy', unlisten); } return ObjectInspectorController; } diff --git a/platform/commonUI/general/test/controllers/ObjectInspectorControllerSpec.js b/platform/commonUI/general/test/controllers/ObjectInspectorControllerSpec.js index be970c44f8..4178fa8581 100644 --- a/platform/commonUI/general/test/controllers/ObjectInspectorControllerSpec.js +++ b/platform/commonUI/general/test/controllers/ObjectInspectorControllerSpec.js @@ -39,7 +39,7 @@ define( beforeEach(function () { mockScope = jasmine.createSpyObj( "$scope", - ["$watch"] + ["$watch", "$on"] ); mockScope.ngModel = {}; mockScope.ngModel.selectedObject = {