From 76ea4cfb149c435e68f07a6bc67509364ad73b29 Mon Sep 17 00:00:00 2001 From: Darius Williams Date: Thu, 29 Sep 2022 11:00:23 -0500 Subject: [PATCH 1/4] Fix issue with positive time zone offsets --- .../src/scripts/web-services/instantaneous-values.js | 4 ++-- .../scripts/web-services/instantaneous-values.test.js | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/assets/src/scripts/web-services/instantaneous-values.js b/assets/src/scripts/web-services/instantaneous-values.js index 33730c7a2..0122f7bdb 100644 --- a/assets/src/scripts/web-services/instantaneous-values.js +++ b/assets/src/scripts/web-services/instantaneous-values.js @@ -82,8 +82,8 @@ export const fetchTimeSeries = async function({siteno, parameterCode = null, per siteno: siteno, parameterCode: parameterCode, period: period, - startTime: startTime, - endTime: endTime, + startTime: typeof startTime === 'string' ? startTime.replace('+', '%2B') : startTime, + endTime: typeof endTime === 'string' ? endTime.replace('+', '%2B') : endTime, format: 'json' }); const request = new Request(url, { diff --git a/assets/src/scripts/web-services/instantaneous-values.test.js b/assets/src/scripts/web-services/instantaneous-values.test.js index e42b64b39..e555eb527 100644 --- a/assets/src/scripts/web-services/instantaneous-values.test.js +++ b/assets/src/scripts/web-services/instantaneous-values.test.js @@ -185,6 +185,16 @@ describe('web-services/instantaneous-values', () => { expect(request.url).toContain(`endDT=${endTime}`); }); + it('Get url includes startDT and endDT with a substituted plus', () => { + const startTime = '2018-01-02T15:00:00.000+06:00'; + const endTime = '2018-01-02T16:45:00.000+06:00'; + fetchTimeSeries({siteno: siteID, parameterCode: parameterCode, period: null, startTime: startTime, endTime: endTime}); + const request = fetchMock.mock.calls[0][0]; + expect(request.url).not.toContain('period'); + expect(request.url).toContain(`startDT=${startTime.replace('+', '%2B')}`); + expect(request.url).toContain(`endDT=${endTime.replace('+', '%2B')}`); + }); + it('Get url does not include any time parameters if all are null', () => { fetchTimeSeries({siteno: siteID, parameterCode: parameterCode, period: null, startTime: null, endTime: null}); const request = fetchMock.mock.calls[0][0]; -- GitLab From 291e64fe5f05805238ada78c7dee575c21a0bd33 Mon Sep 17 00:00:00 2001 From: Darius Williams Date: Thu, 29 Sep 2022 11:03:10 -0500 Subject: [PATCH 2/4] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ed424d427..dfa425190 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ### Fixed - If the data reports that a parameter has a period of record, yet the observations service returns no data, the application will no longer hang. +- IV data requests with a positive UTC offset will now be formatted properly. ## [1.7.0](https://code.usgs.gov/wma/iow/waterdataui/-/compare/waterdataui-1.6.0...waterdataui-1.7.0) - 2022-09-15 ### Changed -- GitLab From 2b0899e0ef162b9512357a00861d4ccdd60ff407 Mon Sep 17 00:00:00 2001 From: Darius Williams Date: Thu, 29 Sep 2022 12:21:49 -0500 Subject: [PATCH 3/4] Changing location of the replace --- assets/src/scripts/web-services/instantaneous-values.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/assets/src/scripts/web-services/instantaneous-values.js b/assets/src/scripts/web-services/instantaneous-values.js index 0122f7bdb..da62115a9 100644 --- a/assets/src/scripts/web-services/instantaneous-values.js +++ b/assets/src/scripts/web-services/instantaneous-values.js @@ -55,7 +55,7 @@ export const getIVServiceURL = function({ dataEndpoint = dayCount && dayCount < 120 ? config.IV_DATA_ENDPOINT : config.HISTORICAL_IV_DATA_ENDPOINT; } else if (startTime && endTime) { const startDateTime = DateTime.fromISO(startTime); - timeParams = `startDT=${startTime}&endDT=${endTime}`; + timeParams = `startDT=${startTime.replace('+', '%2B')}&endDT=${endTime.replace('+', '%2B')}`; dataEndpoint = ivDataEndpoint(startDateTime); } else { timeParams = ''; @@ -82,8 +82,8 @@ export const fetchTimeSeries = async function({siteno, parameterCode = null, per siteno: siteno, parameterCode: parameterCode, period: period, - startTime: typeof startTime === 'string' ? startTime.replace('+', '%2B') : startTime, - endTime: typeof endTime === 'string' ? endTime.replace('+', '%2B') : endTime, + startTime: startTime, + endTime: endTime, format: 'json' }); const request = new Request(url, { -- GitLab From d99ef5ace88f1517db4dd4f17f75dd8bbf54a1c4 Mon Sep 17 00:00:00 2001 From: Darius Williams Date: Thu, 29 Sep 2022 12:45:06 -0500 Subject: [PATCH 4/4] Ensuring string type --- .../scripts/web-services/instantaneous-values.js | 2 +- .../web-services/instantaneous-values.test.js | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/assets/src/scripts/web-services/instantaneous-values.js b/assets/src/scripts/web-services/instantaneous-values.js index da62115a9..0f08b8780 100644 --- a/assets/src/scripts/web-services/instantaneous-values.js +++ b/assets/src/scripts/web-services/instantaneous-values.js @@ -55,7 +55,7 @@ export const getIVServiceURL = function({ dataEndpoint = dayCount && dayCount < 120 ? config.IV_DATA_ENDPOINT : config.HISTORICAL_IV_DATA_ENDPOINT; } else if (startTime && endTime) { const startDateTime = DateTime.fromISO(startTime); - timeParams = `startDT=${startTime.replace('+', '%2B')}&endDT=${endTime.replace('+', '%2B')}`; + timeParams = `startDT=${String(startTime).replace('+', '%2B')}&endDT=${String(endTime).replace('+', '%2B')}`; dataEndpoint = ivDataEndpoint(startDateTime); } else { timeParams = ''; diff --git a/assets/src/scripts/web-services/instantaneous-values.test.js b/assets/src/scripts/web-services/instantaneous-values.test.js index e555eb527..54e3a796a 100644 --- a/assets/src/scripts/web-services/instantaneous-values.test.js +++ b/assets/src/scripts/web-services/instantaneous-values.test.js @@ -125,8 +125,8 @@ describe('web-services/instantaneous-values', () => { }); expect(result).toContain(`${config.IV_DATA_ENDPOINT}`); expect(result).not.toContain('period'); - expect(result).toContain(`startDT=${startTime}`); - expect(result).toContain(`endDT=${endTime}`); + expect(result).toContain(`startDT=${startTime.replace('+', '%2B')}`); + expect(result).toContain(`endDT=${endTime.replace('+', '%2B')}`); }); it('Expects if no period, but startTime and endTime are defined and more than 120 days in the past, the HISTORICAL_IV_DATA_ENDPOINT is used', () => { @@ -141,8 +141,8 @@ describe('web-services/instantaneous-values', () => { }); expect(result).toContain(`${config.HISTORICAL_IV_DATA_ENDPOINT}`); expect(result).not.toContain('period'); - expect(result).toContain(`startDT=${startTime}`); - expect(result).toContain(`endDT=${endTime}`); + expect(result).toContain(`startDT=${startTime.replace('+', '%2B')}`); + expect(result).toContain(`endDT=${endTime.replace('+', '%2B')}`); }); }); @@ -181,8 +181,8 @@ describe('web-services/instantaneous-values', () => { const request = fetchMock.mock.calls[0][0]; expect(request.url).not.toContain('period'); - expect(request.url).toContain(`startDT=${startTime}`); - expect(request.url).toContain(`endDT=${endTime}`); + expect(request.url).toContain(`startDT=${startTime.replace('+', '%2B')}`); + expect(request.url).toContain(`endDT=${endTime.replace('+', '%2B')}`); }); it('Get url includes startDT and endDT with a substituted plus', () => { @@ -191,8 +191,8 @@ describe('web-services/instantaneous-values', () => { fetchTimeSeries({siteno: siteID, parameterCode: parameterCode, period: null, startTime: startTime, endTime: endTime}); const request = fetchMock.mock.calls[0][0]; expect(request.url).not.toContain('period'); - expect(request.url).toContain(`startDT=${startTime.replace('+', '%2B')}`); - expect(request.url).toContain(`endDT=${endTime.replace('+', '%2B')}`); + expect(request.url).toContain(`startDT=${startTime.replace('+', '%2B').replace('+', '%2B')}`); + expect(request.url).toContain(`endDT=${endTime.replace('+', '%2B').replace('+', '%2B')}`); }); it('Get url does not include any time parameters if all are null', () => { -- GitLab