From 890aafc20358dfa2a5a16cc3ad8df1c9875f405c Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Mon, 14 Sep 2015 10:02:59 -0700 Subject: [PATCH] [Time Controller] Filter out realtime updates Filter out realtime updates that are outside of the time controller's range. WTD-1515 --- .../src/ConductorTelemetryDecorator.js | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/platform/features/conductor/src/ConductorTelemetryDecorator.js b/platform/features/conductor/src/ConductorTelemetryDecorator.js index 6d75125b7a..7687715f30 100644 --- a/platform/features/conductor/src/ConductorTelemetryDecorator.js +++ b/platform/features/conductor/src/ConductorTelemetryDecorator.js @@ -42,6 +42,34 @@ define( this.telemetryService = telemetryService; } + // Strip out any realtime data series that is outside of the conductor's + // bounds. + ConductorTelemetryDecorator.prototype.stripRealtime = function (packaged) { + var conductor = this.conductorService.getConductor(), + start = conductor.displayStart(), + end = conductor.displayEnd(), + repackaged = {}; + + function filterSource(packagedBySource) { + var repackagedBySource = {}; + + Object.keys(packagedBySource).filter(function (k) { + return packagedBySource[k].getPointCount() > 0 && + packagedBySource[k].getDomainValue(0) <= end; + }).forEach(function (k) { + repackagedBySource[k] = packagedBySource[k]; + }); + + return repackagedBySource; + } + + Object.keys(packaged).forEach(function (source) { + repackaged[source] = filterSource(packaged[source]); + }); + + return repackaged; + }; + ConductorTelemetryDecorator.prototype.amendRequests = function (requests) { var conductor = this.conductorService.getConductor(), start = conductor.displayStart(), @@ -63,8 +91,14 @@ define( }; ConductorTelemetryDecorator.prototype.subscribe = function (callback, requests) { + var self = this; + + function internalCallback(packagedSeries) { + return callback(self.stripRealtime(packagedSeries)); + } + return this.telemetryService - .subscribe(callback, this.amendRequests(requests)); + .subscribe(internalCallback, this.amendRequests(requests)); }; return ConductorTelemetryDecorator;