@@ -50,6 +50,7 @@ import {
50
50
ActionsPeriodDate ,
51
51
DocumentFormat ,
52
52
filterActionsFilter ,
53
+ PiWebserviceProvider ,
53
54
TimeSeriesFilter ,
54
55
timeSeriesGridActionsFilter ,
55
56
TimeSeriesTopologyActionsFilter ,
@@ -58,7 +59,6 @@ import { configManager } from '@/services/application-config'
58
59
import { DisplayConfig } from ' @/lib/display/DisplayConfig.ts'
59
60
import type { UseDisplayConfigOptions } from ' @/services/useDisplayConfig'
60
61
import { authenticationManager } from ' @/services/authentication/AuthenticationManager.ts'
61
- import { filterToParams } from ' @deltares/fews-wms-requests'
62
62
import { downloadFileAttachment } from ' @/lib/download/downloadFiles.ts'
63
63
import {
64
64
computed ,
@@ -74,6 +74,7 @@ import { UseTimeSeriesOptions } from '@/services/useTimeSeries'
74
74
import { DateTime } from ' luxon'
75
75
import { DataDownloadFilter } from ' @/lib/download/types/DataDownloadFilter.ts'
76
76
import { useDownloadDialogStore } from ' @/stores/downloadDialog'
77
+ import { createTransformRequestFn } from ' @/lib/requests/transformRequest'
77
78
78
79
const store = useSystemTimeStore ()
79
80
const downloadDialogStore = useDownloadDialogStore ()
@@ -166,9 +167,8 @@ function parsePiDateTime(dateTime: ActionsPeriodDate | undefined) {
166
167
}
167
168
168
169
// 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() {
170
171
const _options = toValue (viewPeriodFromStore )
171
- let viewPeriod: string = ' '
172
172
let startDate: Date | null | undefined = props .startTime
173
173
? props .startTime
174
174
: _options ?.startTime
@@ -185,36 +185,45 @@ function determineViewPeriod(): string {
185
185
if (parsedEndDate ) endDate = new Date (parsedEndDate )
186
186
}
187
187
188
+ let startTime: string | null = null
189
+ let endTime: string | null = null
188
190
if (startDate || endDate ) {
189
191
// if either startTime or endTime is set, use it.
190
192
if (startDate ) {
191
- const startTime = DateTime .fromJSDate (startDate , {
193
+ startTime = DateTime .fromJSDate (startDate , {
192
194
zone: ' UTC' ,
193
195
})
194
196
.set ({ millisecond: 0 })
195
197
.toISO ({ suppressMilliseconds: true })
196
- viewPeriod = ` &startTime=${startTime } `
197
198
}
198
199
if (endDate ) {
199
- const endTime = DateTime .fromJSDate (endDate , {
200
+ endTime = DateTime .fromJSDate (endDate , {
200
201
zone: ' UTC' ,
201
202
})
202
203
.set ({ millisecond: 0 })
203
204
.toISO ({ suppressMilliseconds: true })
204
- viewPeriod = ` ${viewPeriod }&endTime=${endTime } `
205
205
}
206
206
}
207
- return viewPeriod
207
+ return {
208
+ startTime: startTime ?? undefined ,
209
+ endTime: endTime ?? undefined ,
210
+ }
208
211
}
209
212
210
- const downloadFile = (downloadFormat : string ) => {
213
+ const downloadFile = (downloadFormat : DocumentFormat ) => {
211
214
let viewPeriod = determineViewPeriod ()
215
+
216
+ const piProvider = new PiWebserviceProvider (baseUrl , {
217
+ transformRequestFn: createTransformRequestFn (),
218
+ })
219
+
212
220
if (props .filter ) {
213
221
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
+ })
218
227
return downloadFileAttachment (
219
228
url .href ,
220
229
fileName .value ,
@@ -225,10 +234,11 @@ const downloadFile = (downloadFormat: string) => {
225
234
}
226
235
if (props .filter ) {
227
236
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
+ })
232
242
return downloadFileAttachment (
233
243
url .href ,
234
244
fileName .value ,
@@ -237,11 +247,11 @@ const downloadFile = (downloadFormat: string) => {
237
247
)
238
248
}
239
249
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
+ } )
245
255
return downloadFileAttachment (
246
256
url .href ,
247
257
fileName .value ,
@@ -257,11 +267,9 @@ const downloadFile = (downloadFormat: string) => {
257
267
timeSeriesDisplayIndex: props .config ?.index ?? 0 ,
258
268
convertDatum: props .options .convertDatum ,
259
269
useDisplayUnits: props .options .useDisplayUnits ,
270
+ ... viewPeriod ,
260
271
}
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 )
265
273
return downloadFileAttachment (
266
274
url .href ,
267
275
fileName .value ,
0 commit comments