From 41c79c603249766153bb18976367f96266b680ac Mon Sep 17 00:00:00 2001 From: David Tsay <3614296+davetsay@users.noreply.github.com> Date: Mon, 16 Mar 2020 10:14:46 -0700 Subject: [PATCH] [Conditions] ConditionManager should observe its own mutations (#2748) * change blur listener to change listener to watch for immediate updates to input * move observe ConditionManager logic into ConditionManager --- src/plugins/condition/ConditionManager.js | 10 ++++++++++ src/plugins/condition/ConditionSetTelemetryProvider.js | 7 ------- src/plugins/condition/components/Criterion.vue | 2 +- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/plugins/condition/ConditionManager.js b/src/plugins/condition/ConditionManager.js index b9e4e34740..f0101ded6b 100644 --- a/src/plugins/condition/ConditionManager.js +++ b/src/plugins/condition/ConditionManager.js @@ -32,6 +32,10 @@ export default class ConditionManager extends EventEmitter { this.timeAPI = this.openmct.time; this.latestTimestamp = {}; this.initialize(); + + this.stopObservingForChanges = this.openmct.objects.observe(this.conditionSetDomainObject, '*', (newDomainObject) => { + this.update(newDomainObject); + }); } initialize() { @@ -48,6 +52,9 @@ export default class ConditionManager extends EventEmitter { update(newDomainObject) { this.destroy(); this.conditionSetDomainObject = newDomainObject; + this.stopObservingForChanges = this.openmct.objects.observe(this.conditionSetDomainObject, '*', (newDO) => { + this.update(newDO); + }); this.initialize(); } @@ -218,6 +225,9 @@ export default class ConditionManager extends EventEmitter { } destroy() { + if(this.stopObservingForChanges) { + this.stopObservingForChanges(); + } this.conditionClassCollection.forEach((condition) => { condition.off('conditionResultUpdated', this.handleConditionResult); condition.destroy(); diff --git a/src/plugins/condition/ConditionSetTelemetryProvider.js b/src/plugins/condition/ConditionSetTelemetryProvider.js index 44802d58b6..59ca24eb76 100644 --- a/src/plugins/condition/ConditionSetTelemetryProvider.js +++ b/src/plugins/condition/ConditionSetTelemetryProvider.js @@ -43,16 +43,9 @@ export default class ConditionSetTelemetryProvider { let conditionManager = new ConditionManager(domainObject, this.openmct); conditionManager.on('conditionSetResultUpdated', callback); - let stopObservingForChanges = this.openmct.objects.observe(domainObject, '*', (newDomainObject) => { - conditionManager.update(newDomainObject); - }); - return function unsubscribe() { conditionManager.off('conditionSetResultUpdated'); conditionManager.destroy(); - if (stopObservingForChanges) { - stopObservingForChanges(); - } } } } diff --git a/src/plugins/condition/components/Criterion.vue b/src/plugins/condition/components/Criterion.vue index f07fc481d0..76d7bc35a7 100644 --- a/src/plugins/condition/components/Criterion.vue +++ b/src/plugins/condition/components/Criterion.vue @@ -52,7 +52,7 @@ and