|
10 | 10 | CUSTOM,
|
11 | 11 | DATE_RANGE_START_PARAM,
|
12 | 12 | DATE_RANGE_END_PARAM,
|
13 |
| - type DateRangeOption, |
14 | 13 | getDateRangeByValue
|
15 | 14 | } from '$lib/constants/date-ranges';
|
16 | 15 | import { Button } from '$lib/components/ui/button';
|
|
19 | 18 |
|
20 | 19 | import { cn } from '$lib/utils';
|
21 | 20 | import { RangeCalendar } from '$lib/components/ui/range-calendar/index';
|
22 |
| - import { page } from '$app/stores'; |
23 |
| - import { parseDateRangeParams } from '$lib/util/date-ranges'; |
24 | 21 |
|
25 | 22 | const params = queryParameters(
|
26 | 23 | {
|
|
35 | 32 | dateStyle: 'medium'
|
36 | 33 | });
|
37 | 34 |
|
38 |
| - let selectDateRange: DateRangeOption | undefined = $state(undefined); |
| 35 | + let selectDateRange = $derived(getDateRangeByValue(params[DATE_RANGE_PARAM])); |
| 36 | +
|
39 | 37 | let calendarDateRange: DateRange | undefined = $state({
|
40 | 38 | start: undefined,
|
41 | 39 | end: undefined
|
42 | 40 | });
|
43 | 41 |
|
| 42 | + // Update `calendarDateRange` when `selectDateRange` (preset selection) changes |
| 43 | + $effect(() => { |
| 44 | + const selectedRange = selectDateRange?.getRange(); |
| 45 | + const isCustomPreset = selectDateRange?.value === CUSTOM; |
| 46 | + untrack(() => { |
| 47 | + calendarDateRange = { |
| 48 | + start: fromAbsolute( |
| 49 | + isCustomPreset ? params[DATE_RANGE_START_PARAM] : selectedRange?.[0], |
| 50 | + getLocalTimeZone() |
| 51 | + ), |
| 52 | + end: fromAbsolute( |
| 53 | + isCustomPreset ? params[DATE_RANGE_END_PARAM] : selectedRange?.[1], |
| 54 | + getLocalTimeZone() |
| 55 | + ) |
| 56 | + }; |
| 57 | + }); |
| 58 | + }); |
| 59 | +
|
44 | 60 | let dateRangePopoverOpen = $state(false);
|
45 | 61 | let calendarDateRangePopoverOpen = $state(false);
|
46 | 62 |
|
|
70 | 86 | }
|
71 | 87 | }
|
72 | 88 |
|
73 |
| - $effect(() => { |
74 |
| - const url = new URL($page.url); |
75 |
| - untrack(() => { |
76 |
| - const { dateRangeValue, startTimestamp, endTimestamp } = parseDateRangeParams( |
77 |
| - url.searchParams |
78 |
| - ); |
79 |
| - // console.log({ dateRangeValue, startTimestamp, endTimestamp }); |
80 |
| - // console.log(JSON.parse(JSON.stringify(params))); |
81 |
| -
|
82 |
| - // TODO: Use `params` and handle converting non-custom ranges (ex. "Past 1 Month") |
83 |
| - selectDateRange = getDateRangeByValue(dateRangeValue); |
84 |
| - calendarDateRange = { |
85 |
| - start: fromAbsolute(Number(startTimestamp), getLocalTimeZone()), |
86 |
| - end: fromAbsolute(Number(endTimestamp), getLocalTimeZone()) |
87 |
| - }; |
88 |
| -
|
89 |
| - // selectDateRange = getDateRangeByValue(params[DATE_RANGE_PARAM]); |
90 |
| - // calendarDateRange = { |
91 |
| - // start: fromAbsolute(params[DATE_RANGE_START_PARAM], getLocalTimeZone()), |
92 |
| - // end: fromAbsolute(params[DATE_RANGE_END_PARAM], getLocalTimeZone()) |
93 |
| - // }; |
94 |
| - }); |
95 |
| - }); |
96 |
| -
|
97 | 89 | function getNonCustomDateRanges() {
|
98 | 90 | return DATE_RANGES.filter((range) => range.value !== CUSTOM);
|
99 | 91 | }
|
|
0 commit comments