From 40d54df56746fe5e9fe5907bee389fc9b35b877c Mon Sep 17 00:00:00 2001 From: Andrew Henry Date: Mon, 8 Apr 2019 22:02:40 -0700 Subject: [PATCH] Summary widget unsubscribe (#2364) * Delete subscription handle to prevent double unsubscribe error * Do not attempt to render undefined telemetry datum --- src/plugins/summaryWidget/src/ConditionManager.js | 1 + .../src/telemetry/SummaryWidgetTelemetryProvider.js | 2 +- src/plugins/summaryWidget/src/views/SummaryWidgetView.js | 5 ++++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/plugins/summaryWidget/src/ConditionManager.js b/src/plugins/summaryWidget/src/ConditionManager.js index 120dd954ec..e9c18dce98 100644 --- a/src/plugins/summaryWidget/src/ConditionManager.js +++ b/src/plugins/summaryWidget/src/ConditionManager.js @@ -237,6 +237,7 @@ define ([ }); delete this.compositionObjs[objectId]; this.subscriptions[objectId](); //unsubscribe from telemetry source + delete this.subscriptions[objectId]; this.eventEmitter.emit('remove', identifier); if (_.isEmpty(this.compositionObjs)) { diff --git a/src/plugins/summaryWidget/src/telemetry/SummaryWidgetTelemetryProvider.js b/src/plugins/summaryWidget/src/telemetry/SummaryWidgetTelemetryProvider.js index 4f835dffcf..cd16974306 100644 --- a/src/plugins/summaryWidget/src/telemetry/SummaryWidgetTelemetryProvider.js +++ b/src/plugins/summaryWidget/src/telemetry/SummaryWidgetTelemetryProvider.js @@ -43,7 +43,7 @@ define([ return evaluator.requestLatest(options) .then(function (latestDatum) { this.pool.release(evaluator); - return [latestDatum]; + return latestDatum ? [latestDatum] : []; }.bind(this)); }; diff --git a/src/plugins/summaryWidget/src/views/SummaryWidgetView.js b/src/plugins/summaryWidget/src/views/SummaryWidgetView.js index bfe73667ac..bc081f748e 100644 --- a/src/plugins/summaryWidget/src/views/SummaryWidgetView.js +++ b/src/plugins/summaryWidget/src/views/SummaryWidgetView.js @@ -52,7 +52,10 @@ define([ strategy: 'latest', size: 1 }).then(function (results) { - if (this.destroyed || this.hasUpdated || this.renderTracker !== renderTracker) { + if (this.destroyed || + this.hasUpdated || + this.renderTracker !== renderTracker || + results.length === 0) { return; } this.updateState(results[results.length - 1]);