Skip to content

Commit 3fde298

Browse files
Fix date query params for basic visibility (#857)
* Separate query params for basic visibility start/end time * Allow caching for basic visibility workflow listing by removing gcTime: 0 * Default start/end time values moved to query params config * Default values modified to: - end: end of current day - start: start of the day 30 days before current day * Refetch workflows every 60 seconds * Regenerate package.json (the version number is gone now)
1 parent 9b74ff1 commit 3fde298

8 files changed

+43
-30
lines changed

package-lock.json

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

src/views/domain-page/__fixtures__/domain-page-query-params.ts

+2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ export const mockDomainPageQueryParamsValues = {
1313
workflowId: '',
1414
workflowType: '',
1515
statusBasic: undefined,
16+
timeRangeStartBasic: new Date('2024-11-17T03:24:00'),
17+
timeRangeEndBasic: new Date('2024-12-17T03:24:00'),
1618
inputTypeArchival: 'search',
1719
searchArchival: '',
1820
statusesArchival: undefined,

src/views/domain-page/config/domain-page-query-params.config.ts

+22
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@ import {
22
type PageQueryParamMultiValue,
33
type PageQueryParam,
44
} from '@/hooks/use-page-query-params/use-page-query-params.types';
5+
import dayjs from '@/utils/datetime/dayjs';
56
import parseDateQueryParam from '@/utils/datetime/parse-date-query-param';
67
import { type SortOrder } from '@/utils/sort-by';
78
import { type WorkflowStatusClosed } from '@/views/domain-workflows-archival/domain-workflows-archival-header/domain-workflows-archival-header.types';
9+
import DOMAIN_WORKFLOWS_BASIC_START_DAYS_CONFIG from '@/views/domain-workflows-basic/config/domain-workflows-basic-start-days.config';
810
import { type WorkflowStatusBasicVisibility } from '@/views/domain-workflows-basic/domain-workflows-basic-filters/domain-workflows-basic-filters.types';
911
import isWorkflowStatusBasicVisibility from '@/views/domain-workflows-basic/domain-workflows-basic-filters/helpers/is-workflow-status-basic-visibility';
1012
import isWorkflowStatus from '@/views/shared/workflow-status-tag/helpers/is-workflow-status';
@@ -26,6 +28,8 @@ const domainPageQueryParamsConfig: [
2628
PageQueryParam<'workflowId', string>,
2729
PageQueryParam<'workflowType', string>,
2830
PageQueryParam<'statusBasic', WorkflowStatusBasicVisibility | undefined>,
31+
PageQueryParam<'timeRangeStartBasic', Date>,
32+
PageQueryParam<'timeRangeEndBasic', Date>,
2933
// Archival inputs
3034
PageQueryParam<'inputTypeArchival', WorkflowsHeaderInputType>,
3135
PageQueryParam<'searchArchival', string>,
@@ -95,6 +99,24 @@ const domainPageQueryParamsConfig: [
9599
parseValue: (value: string) =>
96100
isWorkflowStatusBasicVisibility(value) ? value : undefined,
97101
},
102+
{
103+
key: 'timeRangeStartBasic',
104+
queryParamKey: 'start',
105+
defaultValue: dayjs()
106+
.subtract(DOMAIN_WORKFLOWS_BASIC_START_DAYS_CONFIG, 'days')
107+
.toDate(),
108+
parseValue: (v) =>
109+
parseDateQueryParam(v) ??
110+
dayjs()
111+
.subtract(DOMAIN_WORKFLOWS_BASIC_START_DAYS_CONFIG, 'days')
112+
.toDate(),
113+
},
114+
{
115+
key: 'timeRangeEndBasic',
116+
queryParamKey: 'end',
117+
defaultValue: dayjs().toDate(),
118+
parseValue: (v) => parseDateQueryParam(v) ?? dayjs().toDate(),
119+
},
98120
{
99121
key: 'inputTypeArchival',
100122
queryParamKey: 'ainput',

src/views/domain-workflows-basic/config/domain-workflows-basic-filters.config.ts

+14-8
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,10 @@ const domainWorkflowsBasicFiltersConfig: [
1515
>,
1616
PageFilterConfig<
1717
typeof domainPageQueryParamsConfig,
18-
{ timeRangeStart: Date | undefined; timeRangeEnd: Date | undefined }
18+
{
19+
timeRangeStartBasic: Date | undefined;
20+
timeRangeEndBasic: Date | undefined;
21+
}
1922
>,
2023
] = [
2124
{
@@ -34,23 +37,26 @@ const domainWorkflowsBasicFiltersConfig: [
3437
{
3538
id: 'dates',
3639
getValue: (v) => ({
37-
timeRangeStart: v.timeRangeStart,
38-
timeRangeEnd: v.timeRangeEnd,
40+
timeRangeStartBasic: v.timeRangeStartBasic,
41+
timeRangeEndBasic: v.timeRangeEndBasic,
3942
}),
4043
formatValue: (v) => ({
41-
timeRangeStart: v.timeRangeStart?.toISOString(),
42-
timeRangeEnd: v.timeRangeEnd?.toISOString(),
44+
timeRangeStartBasic: v.timeRangeStartBasic?.toISOString(),
45+
timeRangeEndBasic: v.timeRangeEndBasic?.toISOString(),
4346
}),
4447
component: ({ value, setValue }) =>
4548
createElement(DateFilter, {
4649
label: 'Dates',
4750
placeholder: 'Select time range',
4851
dates: {
49-
start: value.timeRangeStart,
50-
end: value.timeRangeEnd,
52+
start: value.timeRangeStartBasic,
53+
end: value.timeRangeEndBasic,
5154
},
5255
onChangeDates: ({ start, end }) =>
53-
setValue({ timeRangeStart: start, timeRangeEnd: end }),
56+
setValue({
57+
timeRangeStartBasic: start,
58+
timeRangeEndBasic: end,
59+
}),
5460
clearable: false,
5561
}),
5662
},

src/views/domain-workflows-basic/domain-workflows-basic-filters/domain-workflows-basic-filters.tsx

+1-15
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
'use client';
2-
import { useEffect, useState } from 'react';
2+
import { useState } from 'react';
33

44
import usePageFilters from '@/components/page-filters/hooks/use-page-filters';
55
import PageFiltersFields from '@/components/page-filters/page-filters-fields/page-filters-fields';
66
import PageFiltersSearch from '@/components/page-filters/page-filters-search/page-filters-search';
77
import PageFiltersToggle from '@/components/page-filters/page-filters-toggle/page-filters-toggle';
8-
import dayjs from '@/utils/datetime/dayjs';
98
import domainPageQueryParamsConfig from '@/views/domain-page/config/domain-page-query-params.config';
109

1110
import domainWorkflowsBasicFiltersConfig from '../config/domain-workflows-basic-filters.config';
1211
import DOMAIN_WORKFLOWS_BASIC_SEARCH_DEBOUNCE_MS from '../config/domain-workflows-basic-search-debounce-ms.config';
13-
import DOMAIN_WORKFLOWS_BASIC_START_DAYS_CONFIG from '../config/domain-workflows-basic-start-days.config';
1412

1513
import { styled } from './domain-workflows-basic-filters.styles';
1614

@@ -23,18 +21,6 @@ export default function DomainWorkflowsBasicFilters() {
2321
pageQueryParamsConfig: domainPageQueryParamsConfig,
2422
});
2523

26-
useEffect(() => {
27-
if (!queryParams.timeRangeStart && !queryParams.timeRangeEnd) {
28-
const now = dayjs();
29-
setQueryParams({
30-
timeRangeStart: now
31-
.subtract(DOMAIN_WORKFLOWS_BASIC_START_DAYS_CONFIG, 'days')
32-
.toISOString(),
33-
timeRangeEnd: now.toISOString(),
34-
});
35-
}
36-
}, [queryParams.timeRangeStart, queryParams.timeRangeEnd, setQueryParams]);
37-
3824
return (
3925
<styled.HeaderContainer>
4026
<styled.InputContainer>

src/views/domain-workflows-basic/hooks/helpers/__tests__/get-list-workflows-basic-query-options.test.ts

-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ describe(getListWorkflowsBasicQueryOptions.name, () => {
2626
},
2727
],
2828
initialPageParam: undefined,
29-
gcTime: 0,
3029
retry: false,
3130
});
3231
});

src/views/domain-workflows-basic/hooks/helpers/get-list-workflows-basic-query-options.ts

-1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,5 @@ export default function getListWorkflowsBasicQueryOptions({
3838
},
3939
retry: false,
4040
refetchOnWindowFocus: (query) => query.state.status !== 'error',
41-
gcTime: 0,
4241
};
4342
}

src/views/domain-workflows-basic/hooks/use-list-workflows-basic.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ export default function useListWorkflowsBasic({
3232
const requestQueryParamsBase = {
3333
workflowId: queryParams.workflowId,
3434
workflowType: queryParams.workflowType,
35-
timeRangeStart: queryParams.timeRangeStart?.toISOString() ?? '',
36-
timeRangeEnd: queryParams.timeRangeEnd?.toISOString() ?? '',
35+
timeRangeStart: queryParams.timeRangeStartBasic.toISOString(),
36+
timeRangeEnd: queryParams.timeRangeEndBasic.toISOString(),
3737
pageSize: pageSize.toString(),
3838
...(queryParams.statusBasic !== 'ALL_CLOSED' &&
3939
queryParams.statusBasic !== 'WORKFLOW_EXECUTION_CLOSE_STATUS_INVALID'
@@ -77,8 +77,8 @@ export default function useListWorkflowsBasic({
7777
loadClosedWorkflows,
7878
queryParams.workflowId,
7979
queryParams.workflowType,
80-
queryParams.timeRangeStart,
81-
queryParams.timeRangeEnd,
80+
queryParams.timeRangeStartBasic,
81+
queryParams.timeRangeEndBasic,
8282
queryParams.statusBasic,
8383
]);
8484

0 commit comments

Comments
 (0)