|
| 1 | +import { ssp } from 'sveltekit-search-params'; |
| 2 | + |
1 | 3 | import {
|
2 | 4 | DATE_RANGE_PARAM,
|
3 | 5 | DATE_RANGE_START_PARAM,
|
4 | 6 | DATE_RANGE_END_PARAM,
|
5 | 7 | PAST_1_WEEK,
|
6 | 8 | getDateRangeByValue
|
7 | 9 | } from '$lib/constants/date-ranges';
|
8 |
| -import { ssp } from 'sveltekit-search-params'; |
| 10 | +import { getSearchParamValues } from './search-params'; |
9 | 11 |
|
10 | 12 | export function getDateRange(range: string): [number, number] {
|
11 | 13 | const dateRange = getDateRangeByValue(range);
|
12 | 14 | return dateRange ? dateRange.getRange() : getDateRangeByValue(PAST_1_WEEK)!.getRange();
|
13 | 15 | }
|
14 | 16 |
|
15 |
| -export function parseDateRangeParams(searchParams: URLSearchParams) { |
16 |
| - const dateRangeValue = searchParams.get(DATE_RANGE_PARAM); |
17 |
| - const startParam = searchParams.get(DATE_RANGE_START_PARAM); |
18 |
| - const endParam = searchParams.get(DATE_RANGE_END_PARAM); |
19 |
| - |
20 |
| - let startTimestamp: number; |
21 |
| - let endTimestamp: number; |
22 |
| - |
23 |
| - if (startParam && endParam) { |
24 |
| - startTimestamp = Number(startParam); |
25 |
| - endTimestamp = Number(endParam); |
26 |
| - } else { |
27 |
| - [startTimestamp, endTimestamp] = getDateRange(dateRangeValue || PAST_1_WEEK); |
28 |
| - } |
29 |
| - |
30 |
| - return { |
31 |
| - dateRangeValue: dateRangeValue || PAST_1_WEEK, |
32 |
| - startTimestamp, |
33 |
| - endTimestamp |
34 |
| - }; |
35 |
| -} |
36 |
| - |
37 | 17 | export function getDateRangeParamsConfig() {
|
38 | 18 | return {
|
39 | 19 | [DATE_RANGE_PARAM]: ssp.string(PAST_1_WEEK),
|
40 | 20 | [DATE_RANGE_START_PARAM]: ssp.number(),
|
41 | 21 | [DATE_RANGE_END_PARAM]: ssp.number()
|
42 | 22 | };
|
43 | 23 | }
|
| 24 | + |
| 25 | +export function parseDateRangeParams(searchParams: URLSearchParams) { |
| 26 | + const paramsConfig = getDateRangeParamsConfig(); |
| 27 | + const paramValues = getSearchParamValues(searchParams, paramsConfig); |
| 28 | + |
| 29 | + if (paramValues[DATE_RANGE_START_PARAM] == null || paramValues[DATE_RANGE_END_PARAM] == null) { |
| 30 | + const [start, end] = getDateRange(paramValues[DATE_RANGE_PARAM] || PAST_1_WEEK); |
| 31 | + paramValues[DATE_RANGE_START_PARAM] = start; |
| 32 | + paramValues[DATE_RANGE_END_PARAM] = end; |
| 33 | + } |
| 34 | + |
| 35 | + return { |
| 36 | + dateRangeValue: paramValues[DATE_RANGE_PARAM], |
| 37 | + startTimestamp: paramValues[DATE_RANGE_START_PARAM], |
| 38 | + endTimestamp: paramValues[DATE_RANGE_END_PARAM] |
| 39 | + }; |
| 40 | +} |
0 commit comments