Skip to content

Commit e5757e3

Browse files
authoredMar 26, 2025··
Merge pull request #1259 from Deltares/1258-dwo-1027-weboc-download-data-in-csv-file-is-not-working
Fix downloads of csv not working with some baseurls
2 parents c361f6a + 367fabe commit e5757e3

File tree

4 files changed

+40
-32
lines changed

4 files changed

+40
-32
lines changed
 

‎package-lock.json

+4-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"test-ct": "playwright test -c playwright-ct.config.ts"
1919
},
2020
"dependencies": {
21-
"@deltares/fews-pi-requests": "^1.10.0",
21+
"@deltares/fews-pi-requests": "^1.11.0",
2222
"@deltares/fews-ssd-requests": "^1.0.1",
2323
"@deltares/fews-ssd-webcomponent": "^1.0.2",
2424
"@deltares/fews-web-oc-charts": "^4.0.0-alpha.0",

‎src/components/download/TimeSeriesFileDownloadComponent.vue

+34-26
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ import {
5050
ActionsPeriodDate,
5151
DocumentFormat,
5252
filterActionsFilter,
53+
PiWebserviceProvider,
5354
TimeSeriesFilter,
5455
timeSeriesGridActionsFilter,
5556
TimeSeriesTopologyActionsFilter,
@@ -58,7 +59,6 @@ import { configManager } from '@/services/application-config'
5859
import { DisplayConfig } from '@/lib/display/DisplayConfig.ts'
5960
import type { UseDisplayConfigOptions } from '@/services/useDisplayConfig'
6061
import { authenticationManager } from '@/services/authentication/AuthenticationManager.ts'
61-
import { filterToParams } from '@deltares/fews-wms-requests'
6262
import { downloadFileAttachment } from '@/lib/download/downloadFiles.ts'
6363
import {
6464
computed,
@@ -74,6 +74,7 @@ import { UseTimeSeriesOptions } from '@/services/useTimeSeries'
7474
import { DateTime } from 'luxon'
7575
import { DataDownloadFilter } from '@/lib/download/types/DataDownloadFilter.ts'
7676
import { useDownloadDialogStore } from '@/stores/downloadDialog'
77+
import { createTransformRequestFn } from '@/lib/requests/transformRequest'
7778
7879
const store = useSystemTimeStore()
7980
const downloadDialogStore = useDownloadDialogStore()
@@ -166,9 +167,8 @@ function parsePiDateTime(dateTime: ActionsPeriodDate | undefined) {
166167
}
167168
168169
// use startTime and endTime if set, otherwise use the options from the store, otherwise use the period form the config
169-
function determineViewPeriod(): string {
170+
function determineViewPeriod() {
170171
const _options = toValue(viewPeriodFromStore)
171-
let viewPeriod: string = ''
172172
let startDate: Date | null | undefined = props.startTime
173173
? props.startTime
174174
: _options?.startTime
@@ -185,36 +185,45 @@ function determineViewPeriod(): string {
185185
if (parsedEndDate) endDate = new Date(parsedEndDate)
186186
}
187187
188+
let startTime: string | null = null
189+
let endTime: string | null = null
188190
if (startDate || endDate) {
189191
// if either startTime or endTime is set, use it.
190192
if (startDate) {
191-
const startTime = DateTime.fromJSDate(startDate, {
193+
startTime = DateTime.fromJSDate(startDate, {
192194
zone: 'UTC',
193195
})
194196
.set({ millisecond: 0 })
195197
.toISO({ suppressMilliseconds: true })
196-
viewPeriod = `&startTime=${startTime}`
197198
}
198199
if (endDate) {
199-
const endTime = DateTime.fromJSDate(endDate, {
200+
endTime = DateTime.fromJSDate(endDate, {
200201
zone: 'UTC',
201202
})
202203
.set({ millisecond: 0 })
203204
.toISO({ suppressMilliseconds: true })
204-
viewPeriod = `${viewPeriod}&endTime=${endTime}`
205205
}
206206
}
207-
return viewPeriod
207+
return {
208+
startTime: startTime ?? undefined,
209+
endTime: endTime ?? undefined,
210+
}
208211
}
209212
210-
const downloadFile = (downloadFormat: string) => {
213+
const downloadFile = (downloadFormat: DocumentFormat) => {
211214
let viewPeriod = determineViewPeriod()
215+
216+
const piProvider = new PiWebserviceProvider(baseUrl, {
217+
transformRequestFn: createTransformRequestFn(),
218+
})
219+
212220
if (props.filter) {
213221
if (isDataDownloadFilter(props.filter)) {
214-
const queryParameters = filterToParams(props.filter)
215-
const url = new URL(
216-
`${baseUrl}rest/fewspiservice/v1/timeseries${queryParameters}&documentFormat=${downloadFormat}${viewPeriod}`,
217-
)
222+
const url = piProvider.timeSeriesUrl({
223+
...props.filter,
224+
documentFormat: downloadFormat,
225+
...viewPeriod,
226+
})
218227
return downloadFileAttachment(
219228
url.href,
220229
fileName.value,
@@ -225,10 +234,11 @@ const downloadFile = (downloadFormat: string) => {
225234
}
226235
if (props.filter) {
227236
if (isFilterActionsFilter(props.filter)) {
228-
const queryParameters = filterToParams(props.filter)
229-
const url = new URL(
230-
`${baseUrl}rest/fewspiservice/v1/timeseries/filters/actions${queryParameters}&documentFormat=${downloadFormat}${viewPeriod}`,
231-
)
237+
const url = piProvider.timeSeriesFilterActionsUrl({
238+
...props.filter,
239+
documentFormat: downloadFormat,
240+
...viewPeriod,
241+
})
232242
return downloadFileAttachment(
233243
url.href,
234244
fileName.value,
@@ -237,11 +247,11 @@ const downloadFile = (downloadFormat: string) => {
237247
)
238248
}
239249
if (isTimeSeriesGridActionsFilter(props.filter)) {
240-
props.filter.documentFormat = downloadFormat
241-
const queryParameters = filterToParams(props.filter)
242-
const url = new URL(
243-
`${baseUrl}rest/fewspiservice/v1/timeseries/grid${queryParameters}&${viewPeriod}`,
244-
)
250+
const url = piProvider.timeSeriesGridUrl({
251+
...props.filter,
252+
documentFormat: downloadFormat,
253+
...viewPeriod,
254+
})
245255
return downloadFileAttachment(
246256
url.href,
247257
fileName.value,
@@ -257,11 +267,9 @@ const downloadFile = (downloadFormat: string) => {
257267
timeSeriesDisplayIndex: props.config?.index ?? 0,
258268
convertDatum: props.options.convertDatum,
259269
useDisplayUnits: props.options.useDisplayUnits,
270+
...viewPeriod,
260271
}
261-
const queryParameters = filterToParams(timeSeriesFilter)
262-
const url = new URL(
263-
`${baseUrl}rest/fewspiservice/v1/timeseries/topology/actions${queryParameters}${viewPeriod}`,
264-
)
272+
const url = piProvider.timeSeriesTopologyActionsUrl(timeSeriesFilter)
265273
return downloadFileAttachment(
266274
url.href,
267275
fileName.value,

‎src/services/useTopologyThresholds/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export function useTopologyThresholds(
3232
const provider = new PiWebserviceProvider(baseUrl, {
3333
transformRequestFn: createTransformRequestFn(),
3434
})
35-
const response = await provider.getTopologyThresholds()
35+
const response = await provider.getTopologyThresholds({})
3636
thresholds.value = response.topologyNodes
3737
} catch {
3838
error.value = 'Error loading topology thresholds'

0 commit comments

Comments
 (0)
Please sign in to comment.