diff --git a/source/core/datasource/TimeSeries.datasource.js b/source/core/datasource/TimeSeries.datasource.js index 46376a71f0..c24c4e321f 100644 --- a/source/core/datasource/TimeSeries.datasource.js +++ b/source/core/datasource/TimeSeries.datasource.js @@ -256,11 +256,12 @@ class TimeSeriesDatasource { endTime= this.getEndTimeAsIsoDate(), replaySpeed= this.getReplaySpeed(), reconnect= false, + resumePlayback = false, mode= this.getMode(), version = this.version() ) { - return this.timeSeriesDataSource.setTimeRange(startTime,endTime,replaySpeed,reconnect,mode,version); + return this.timeSeriesDataSource.setTimeRange(startTime,endTime,replaySpeed,reconnect,resumePlayback,mode,version); } /***********************************/ diff --git a/source/core/datasource/TimeSeries.replay.datasource.js b/source/core/datasource/TimeSeries.replay.datasource.js index 0d94ec77d4..5fa54dd419 100644 --- a/source/core/datasource/TimeSeries.replay.datasource.js +++ b/source/core/datasource/TimeSeries.replay.datasource.js @@ -307,6 +307,7 @@ class TimeSeriesReplayDatasource extends DataSource { endTime = this.getEndTimeAsIsoDate(), replaySpeed = this.getReplaySpeed(), reconnect = false, + resumePlayback = false, mode = this.getMode(), version = this.version() ) { @@ -327,10 +328,11 @@ class TimeSeriesReplayDatasource extends DataSource { return this.updateProperties({ startTime: this.getStartTimeAsIsoDate(), endTime: this.getEndTimeAsIsoDate(), - replaySpeed: replaySpeed, - reconnect: reconnect, - mode: mode, - version: version + replaySpeed, + reconnect, + resumePlayback, + mode, + version, }); } async reset() { diff --git a/source/core/datasource/common/handler/TimeSeries.handler.js b/source/core/datasource/common/handler/TimeSeries.handler.js index a082cd8bd6..bfed5db93f 100644 --- a/source/core/datasource/common/handler/TimeSeries.handler.js +++ b/source/core/datasource/common/handler/TimeSeries.handler.js @@ -295,7 +295,8 @@ class TimeSeriesHandler extends DataSourceHandler { try { this.timeBroadcastChannel.postMessage({ dataSourceId: this.dataSourceId, - type: EventType.TIME_CHANGED + type: EventType.TIME_CHANGED, + resumePlayback: properties.resumePlayback }); await this.disconnect(); diff --git a/source/core/timesync/DataSynchronizer.js b/source/core/timesync/DataSynchronizer.js index c3bf559b8c..9f5a3e270f 100644 --- a/source/core/timesync/DataSynchronizer.js +++ b/source/core/timesync/DataSynchronizer.js @@ -288,7 +288,7 @@ class DataSynchronizer { endTime = this.getEndTimeAsIsoDate(), replaySpeed = this.getReplaySpeed(), reconnect = false) { - return this.dataSynchronizer.setTimeRange(startTime,endTime, replaySpeed,reconnect); + return this.dataSynchronizer.setTimeRange(startTime, endTime, replaySpeed, reconnect); } async updateProperties(properties) { diff --git a/source/core/timesync/replay/DataSynchronizer.replay.js b/source/core/timesync/replay/DataSynchronizer.replay.js index f752dd351c..ae84520fd4 100644 --- a/source/core/timesync/replay/DataSynchronizer.replay.js +++ b/source/core/timesync/replay/DataSynchronizer.replay.js @@ -52,6 +52,7 @@ class DataSynchronizerReplay { this.properties.minTimestamp = undefined; this.properties.maxTimestamp = undefined; this.properties.version = 0; + this.properties.resumePlayback = false; if (isDefined(properties)) { if (isDefined(properties.minTime)) { @@ -239,6 +240,14 @@ class DataSynchronizerReplay { return Mode.REPLAY; } + getResumePlayback() { + return this.properties.resumePlayback; + } + + setResumePlayback(resumePlayback) { + this.properties.resumePlayback = resumePlayback; + } + //----------- ASYNCHRONOUS FUNCTIONS -----------------// async initDataSources() { @@ -418,7 +427,7 @@ class DataSynchronizerReplay { this.checkStartEndTime(); await this.updateAlgo(); for (let dataSource of this.dataSources) { - await dataSource.setTimeRange(this.getStartTimeAsIsoDate(), this.getEndTimeAsIsoDate(), this.getReplaySpeed(), true); + await dataSource.setTimeRange(this.getStartTimeAsIsoDate(), this.getEndTimeAsIsoDate(), this.getReplaySpeed(), true, this.getResumePlayback()); } @@ -480,8 +489,9 @@ class DataSynchronizerReplay { this.getEndTimeAsIsoDate(), this.getReplaySpeed(), false, + this.getResumePlayback(), this.getMode(), - this.version() + this.version(), )); } return Promise.all(promises); diff --git a/source/core/ui/view/View.js b/source/core/ui/view/View.js index 30bb24016e..a5b0b6b1ee 100755 --- a/source/core/ui/view/View.js +++ b/source/core/ui/view/View.js @@ -257,7 +257,7 @@ class View { const timeBroadcastChannel = new BroadcastChannel(DATASOURCE_TIME_TOPIC+dataSourceId); timeBroadcastChannel.onmessage = (event) => { // skip data reset events for now - if (event.data.type === EventType.TIME_CHANGED) { + if (event.data.type === EventType.TIME_CHANGED && !event.data.resumePlayback) { self.reset(); // on time changed } };