From 39b221a2e5b353e95ec92fcde859fce904b8d933 Mon Sep 17 00:00:00 2001 From: Tariq Soliman Date: Tue, 26 Mar 2024 17:02:30 -0700 Subject: [PATCH] #519 fix mmgisAPI.setTime start (#520) --- src/essence/Ancillary/TimeControl.js | 4 +-- src/essence/Ancillary/TimeUI.js | 47 +++++++++++++++++++++++----- 2 files changed, 42 insertions(+), 9 deletions(-) diff --git a/src/essence/Ancillary/TimeControl.js b/src/essence/Ancillary/TimeControl.js index 0c4d7389..396c5349 100644 --- a/src/essence/Ancillary/TimeControl.js +++ b/src/essence/Ancillary/TimeControl.js @@ -114,12 +114,12 @@ var TimeControl = { .toISOString() .split('.')[0] + 'Z' } - TimeControl.timeUI.updateTimes( + + return TimeControl.timeUI.updateTimes( TimeControl.startTime, TimeControl.endTime, TimeControl.currentTime ) - return true }, setLayerTime: function (layer, startTime, endTime) { if (typeof layer == 'string') { diff --git a/src/essence/Ancillary/TimeUI.js b/src/essence/Ancillary/TimeUI.js index b72ac866..484fe0b4 100644 --- a/src/essence/Ancillary/TimeUI.js +++ b/src/essence/Ancillary/TimeUI.js @@ -866,25 +866,57 @@ const TimeUI = { let date // Start + let offsetStartDate = null + let parsedStart = null if (start != null) { date = new Date(start) - const offsetStartDate = TimeUI.addOffset(date) - const parsedStart = TimeUI.startTempus.dates.parseInput( + offsetStartDate = TimeUI.addOffset(date) + parsedStart = TimeUI.startTempus.dates.parseInput( new Date(offsetStartDate) ) - TimeUI.startTempus.dontChangeNext = true - TimeUI.startTempus.dates.setValue(parsedStart) } - // End + let offsetEndDate = null + let parsedEnd = null if (end != null) { date = new Date(end) - const offsetEndDate = new Date( + offsetEndDate = new Date( date.getTime() + date.getTimezoneOffset() * 60000 ) - const parsedEnd = TimeUI.endTempus.dates.parseInput( + parsedEnd = TimeUI.endTempus.dates.parseInput( new Date(offsetEndDate) ) + } + + if (parsedStart != null && parsedEnd != null) { + if (offsetStartDate.getTime() > offsetEndDate.getTime()) { + console.warn( + `updateTimes: Cannot set start time after end time. ${parsedStart} > ${parseEnd}` + ) + return false + } + } + + if (parsedStart != null) { + TimeUI.endTempus.updateOptions({ + restrictions: { + minDate: parsedStart, + }, + }) + } + if (parsedEnd != null) { + TimeUI.startTempus.updateOptions({ + restrictions: { + maxDate: parsedEnd, + }, + }) + } + + if (parsedStart) { + TimeUI.startTempus.dontChangeNext = true + TimeUI.startTempus.dates.setValue(parsedStart) + } + if (parsedEnd) { TimeUI.endTempus.dontChangeNext = true TimeUI.endTempus.dates.setValue(parsedEnd) } @@ -896,6 +928,7 @@ const TimeUI = { } TimeUI.change() + return true }, setStartTime( ISOString,