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