diff --git a/example/generator/src/SinewaveTelemetrySeries.js b/example/generator/src/SinewaveTelemetrySeries.js index 930206541f..5b7914a867 100644 --- a/example/generator/src/SinewaveTelemetrySeries.js +++ b/example/generator/src/SinewaveTelemetrySeries.js @@ -37,21 +37,27 @@ define( */ function SinewaveTelemetrySeries(request) { var latestObservedTime = Math.floor(Date.now() / 1000), - count = latestObservedTime - firstObservedTime, + endTime = (request.end !== undefined) ? + Math.floor(request.end / 1000) : latestObservedTime, + count = + Math.min(endTime, latestObservedTime) - firstObservedTime, period = request.period || 30, generatorData = {}, offset = (request.start !== undefined) ? Math.floor(request.start / 1000) - firstObservedTime : 0; + if (request.size !== undefined) { + offset = Math.max(offset, count - request.size); + } + generatorData.getPointCount = function () { return count - offset; }; generatorData.getDomainValue = function (i, domain) { return (i + offset) * 1000 + - (domain !== 'delta' ? - (firstObservedTime * 1000) : 0); + (domain !== 'delta' ? (firstObservedTime * 1000) : 0); }; generatorData.getRangeValue = function (i, range) { diff --git a/platform/features/conductor/src/ConductorTelemetryCapability.js b/platform/features/conductor/src/ConductorTelemetryCapability.js index 5d224b0415..ca9a18a24b 100644 --- a/platform/features/conductor/src/ConductorTelemetryCapability.js +++ b/platform/features/conductor/src/ConductorTelemetryCapability.js @@ -44,18 +44,35 @@ define( this.wrappedCapability = telemetryCapability; } + ConductorTelemetryCapability.prototype.amendRequest = function (request) { + request = request || {}; + + // This isn't really the right check, but it happens to distinguish + // plots (which want to query for the full set of data for easy + // panning) from views like fixed position, which only want the + // single latest data point. + if (request.size !== undefined) { + request.start = this.timeConductor.displayStart(); + request.end = this.timeConductor.displayEnd(); + } else { + request.start = this.timeConductor.queryStart(); + request.end = this.timeConductor.queryEnd(); + } + + return request; + }; + ConductorTelemetryCapability.prototype.getMetadata = function () { return this.wrappedCapability.getMetadata(); }; ConductorTelemetryCapability.prototype.requestData = function (request) { - request = request || {}; - request.start = this.timeConductor.queryStart(); - request.end = this.timeConductor.queryEnd(); + request = this.amendRequest(request); return this.wrappedCapability.requestData(request); }; ConductorTelemetryCapability.prototype.subscribe = function (callback, request) { + request = this.amendRequest(request); return this.wrappedCapability.subscribe(callback, request); }; diff --git a/platform/features/layout/src/FixedController.js b/platform/features/layout/src/FixedController.js index 9482f71aba..fd446bcb20 100644 --- a/platform/features/layout/src/FixedController.js +++ b/platform/features/layout/src/FixedController.js @@ -120,7 +120,7 @@ define( handle.getDatum(telemetryObject); if (telemetryObject && - handle.getDomainValue(telemetryObject) < maxDomainValue) { + (handle.getDomainValue(telemetryObject) < maxDomainValue)) { setDisplayedValue( telemetryObject, handle.getRangeValue(telemetryObject), @@ -233,7 +233,7 @@ define( } // Trigger a new query for telemetry data - function updateDisplayBounds(bounds) { + function updateDisplayBounds(event, bounds) { maxDomainValue = bounds.end; if (handle) { handle.request(