diff --git a/platform/features/plot/src/PlotController.js b/platform/features/plot/src/PlotController.js index 74de65d1aa..0050a5a22e 100644 --- a/platform/features/plot/src/PlotController.js +++ b/platform/features/plot/src/PlotController.js @@ -34,6 +34,7 @@ define( var subPlotFactory = new SubPlotFactory(telemetryFormatter), modeOptions = new PlotModeOptions([], subPlotFactory), subplots = [], + cachedObjects = [], updater, subscription, domainOffset; @@ -56,10 +57,13 @@ define( // Set up available modes (stacked/overlaid), based on the // set of telemetry objects in this plot view. function setupModes(telemetryObjects) { - modeOptions = new PlotModeOptions( - telemetryObjects || [], - subPlotFactory - ); + if (cachedObjects !== telemetryObjects) { + cachedObjects = telemetryObjects; + modeOptions = new PlotModeOptions( + telemetryObjects || [], + subPlotFactory + ); + } } // Update all sub-plots @@ -81,6 +85,7 @@ define( // Handle new telemetry data in this plot function updateValues() { + setupModes(subscription.getTelemetryObjects()); if (updater) { updater.update(); modeOptions.getModeHandler().plotTelemetry(updater); diff --git a/platform/features/plot/src/elements/PlotUpdater.js b/platform/features/plot/src/elements/PlotUpdater.js index b074765bbd..f59fda4e52 100644 --- a/platform/features/plot/src/elements/PlotUpdater.js +++ b/platform/features/plot/src/elements/PlotUpdater.js @@ -194,7 +194,7 @@ define( * @returns {number} the number of points in this buffer */ getLength: function (index) { - return lengthArray; + return lengthArray[index] || 0; }, /** * Update with latest data.