diff --git a/src/plugins/condition/ConditionManager.js b/src/plugins/condition/ConditionManager.js index f6a6386fa0..6f28c2ca23 100644 --- a/src/plugins/condition/ConditionManager.js +++ b/src/plugins/condition/ConditionManager.js @@ -34,6 +34,9 @@ export default class ConditionManager extends EventEmitter { this.composition = this.openmct.composition.get(conditionSetDomainObject); this.composition.on('add', this.subscribeToTelemetry, this); this.composition.on('remove', this.unsubscribeFromTelemetry, this); + + this.shouldEvaluateNewTelemetry = this.shouldEvaluateNewTelemetry.bind(this); + this.compositionLoad = this.composition.load(); this.subscriptions = {}; this.telemetryObjects = {}; @@ -337,6 +340,10 @@ export default class ConditionManager extends EventEmitter { return false; } + shouldEvaluateNewTelemetry(currentTimestamp) { + return this.openmct.time.bounds().end >= currentTimestamp; + } + telemetryReceived(endpoint, datum) { if (!this.isTelemetryUsed(endpoint)) { return; @@ -345,10 +352,12 @@ export default class ConditionManager extends EventEmitter { const normalizedDatum = this.createNormalizedDatum(datum, endpoint); const timeSystemKey = this.openmct.time.timeSystem().key; let timestamp = {}; - timestamp[timeSystemKey] = normalizedDatum[timeSystemKey]; - - this.updateConditionResults(normalizedDatum); - this.updateCurrentCondition(timestamp); + const currentTimestamp = normalizedDatum[timeSystemKey]; + timestamp[timeSystemKey] = currentTimestamp; + if (this.shouldEvaluateNewTelemetry(currentTimestamp)) { + this.updateConditionResults(normalizedDatum); + this.updateCurrentCondition(timestamp); + } } updateConditionResults(normalizedDatum) { diff --git a/src/plugins/condition/pluginSpec.js b/src/plugins/condition/pluginSpec.js index 6c143a93c3..d3cc6f776a 100644 --- a/src/plugins/condition/pluginSpec.js +++ b/src/plugins/condition/pluginSpec.js @@ -543,7 +543,6 @@ describe('the plugin', function () { }); it('should evaluate as stale when telemetry is not received in the allotted time', (done) => { - let conditionMgr = new ConditionManager(conditionSetDomainObject, openmct); conditionMgr.on('conditionSetResultUpdated', mockListener); conditionMgr.telemetryObjects = { @@ -565,7 +564,7 @@ describe('the plugin', function () { }); it('should not evaluate as stale when telemetry is received in the allotted time', (done) => { - const date = Date.now(); + const date = 1; conditionSetDomainObject.configuration.conditionCollection[0].configuration.criteria[0].input = ["0.4"]; let conditionMgr = new ConditionManager(conditionSetDomainObject, openmct); conditionMgr.on('conditionSetResultUpdated', mockListener);