Skip to content

Commit 2a9691c

Browse files
Remove requirement for timeRangeStart when listing workflows in advanced visibility (#932)
* Tweaks to DateFilterV2 to show the placeholder text when any of the time values are unset * Remove fallback logic from parseDateFilterValue * Make timeRangeStart optional for listing workflows in advanced visibility. This means that workflows can be listed and searched for with no limit on start time * Hide the filters in advanced visibility on page load because they will be unset by default and so, there is no point in showing them * Update activeFiltersCount logic in usePageFilters to consider a filter as active if any of its query params has been modified, as opposed to all of them
1 parent d373034 commit 2a9691c

File tree

9 files changed

+28
-34
lines changed

9 files changed

+28
-34
lines changed

src/components/date-filter-v2/date-filter-v2.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ export default function DateFilterV2({
8282
);
8383

8484
const displayValue = useMemo<string>(() => {
85-
if (!dates.end || !dates.start) return 'Unknown';
85+
if (!dates.end || !dates.start) return '';
8686
if (dates.end === 'now' && isRelativeDateFilterValue(dates.start))
8787
return DATE_FILTER_RELATIVE_VALUES[dates.start].label;
8888

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { type DateFilterValue } from '../../date-filter-v2.types';
21
import parseDateFilterValue from '../parse-date-filter-value';
32

43
// Mock is-relative-date-filter-value
@@ -9,26 +8,22 @@ jest.mock('../is-relative-date-filter-value', () => ({
98

109
describe('parseDateFilterValue', () => {
1110
it('returns the value as is for relative date values', () => {
12-
const fallback: DateFilterValue = 'now';
13-
expect(parseDateFilterValue('now-5m', fallback)).toBe('now-5m');
14-
expect(parseDateFilterValue('now-1h', fallback)).toBe('now-1h');
11+
expect(parseDateFilterValue('now-5m')).toBe('now-5m');
12+
expect(parseDateFilterValue('now-1h')).toBe('now-1h');
1513
});
1614

1715
it('parses string dates into Date objects when format is valid', () => {
18-
const fallback = 'now';
19-
const result = parseDateFilterValue('2023-05-23T10:30:00.000Z', fallback);
16+
const result = parseDateFilterValue('2023-05-23T10:30:00.000Z');
2017
expect(result instanceof Date).toBe(true);
2118
expect((result as Date).toISOString()).toBe('2023-05-23T10:30:00.000Z');
2219
});
2320

24-
it('returns the fallback when date format is invalid', () => {
25-
const fallback = 'now';
26-
const result = parseDateFilterValue('invalid-date', fallback);
27-
expect(result).toBe(fallback);
21+
it('returns undefined when date format is invalid', () => {
22+
const result = parseDateFilterValue('invalid-date');
23+
expect(result).toBeUndefined();
2824
});
2925

30-
it('returns the fallback for empty strings', () => {
31-
const fallback = 'now';
32-
expect(parseDateFilterValue('', fallback)).toBe(fallback);
26+
it('returns undefined for empty strings', () => {
27+
expect(parseDateFilterValue('')).toBeUndefined();
3328
});
3429
});

src/components/date-filter-v2/helpers/parse-date-filter-value.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,9 @@ import { type DateFilterValue } from '../date-filter-v2.types';
55
import isRelativeDateFilterValue from './is-relative-date-filter-value';
66

77
export default function parseDateFilterValue(
8-
v: string,
9-
fallback: DateFilterValue
10-
): DateFilterValue {
8+
v: string
9+
): DateFilterValue | undefined {
1110
if (isRelativeDateFilterValue(v)) return v;
1211
const day = dayjs(v);
13-
return day.isValid() ? day.toDate() : fallback;
12+
return day.isValid() ? day.toDate() : undefined;
1413
}

src/components/page-filters/hooks/use-page-filters.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export default function usePageFilters<P extends PageQueryParams>({
2626
pageQueryParamsConfig.map((c) => [c.key, c])
2727
);
2828
return pageFiltersConfig.filter((pageFilter) =>
29-
Object.keys(pageFilter.getValue(queryParams)).every(
29+
Object.keys(pageFilter.getValue(queryParams)).some(
3030
(queryParamKey: PageQueryParamKeys<P>) =>
3131
queryParams[queryParamKey] &&
3232
queryParams[queryParamKey] !==

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

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ const domainPageQueryParamsConfig: [
1717
// Search input
1818
PageQueryParam<'search', string>,
1919
PageQueryParamMultiValue<'statuses', Array<WorkflowStatus> | undefined>,
20-
PageQueryParam<'timeRangeStart', DateFilterValue>,
20+
PageQueryParam<'timeRangeStart', DateFilterValue | undefined>,
2121
PageQueryParam<'timeRangeEnd', DateFilterValue>,
2222
PageQueryParam<'sortColumn', string>,
2323
PageQueryParam<'sortOrder', SortOrder>,
@@ -62,14 +62,13 @@ const domainPageQueryParamsConfig: [
6262
{
6363
key: 'timeRangeStart',
6464
queryParamKey: 'start',
65-
defaultValue: 'now-30d',
66-
parseValue: (v) => parseDateFilterValue(v, 'now-30d'),
65+
parseValue: parseDateFilterValue,
6766
},
6867
{
6968
key: 'timeRangeEnd',
7069
queryParamKey: 'end',
7170
defaultValue: 'now',
72-
parseValue: (v) => parseDateFilterValue(v, 'now'),
71+
parseValue: (v) => parseDateFilterValue(v) ?? 'now',
7372
},
7473
{
7574
key: 'sortColumn',
@@ -104,13 +103,13 @@ const domainPageQueryParamsConfig: [
104103
key: 'timeRangeStartBasic',
105104
queryParamKey: 'start',
106105
defaultValue: 'now-30d',
107-
parseValue: (v) => parseDateFilterValue(v, 'now-30d'),
106+
parseValue: (v) => parseDateFilterValue(v) ?? 'now-30d',
108107
},
109108
{
110109
key: 'timeRangeEndBasic',
111110
queryParamKey: 'end',
112111
defaultValue: 'now',
113-
parseValue: (v) => parseDateFilterValue(v, 'now'),
112+
parseValue: (v) => parseDateFilterValue(v) ?? 'now',
114113
},
115114
{
116115
key: 'inputTypeArchival',
@@ -140,13 +139,13 @@ const domainPageQueryParamsConfig: [
140139
key: 'timeRangeStartArchival',
141140
queryParamKey: 'astart',
142141
defaultValue: 'now-7d',
143-
parseValue: (v) => parseDateFilterValue(v, 'now-7d'),
142+
parseValue: (v) => parseDateFilterValue(v) ?? 'now-7d',
144143
},
145144
{
146145
key: 'timeRangeEndArchival',
147146
queryParamKey: 'aend',
148147
defaultValue: 'now',
149-
parseValue: (v) => parseDateFilterValue(v, 'now'),
148+
parseValue: (v) => parseDateFilterValue(v) ?? 'now',
150149
},
151150
{
152151
key: 'sortColumnArchival',

src/views/domain-workflows/domain-workflows-advanced/domain-workflows-advanced.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@ export default function DomainWorkflowsAdvanced({ domain, cluster }: Props) {
1717
const now = dayjs();
1818

1919
return {
20-
timeRangeStart: getDayjsFromDateFilterValue(
21-
queryParams.timeRangeStart,
22-
now
23-
).toISOString(),
20+
timeRangeStart: queryParams.timeRangeStart
21+
? getDayjsFromDateFilterValue(
22+
queryParams.timeRangeStart,
23+
now
24+
).toISOString()
25+
: undefined,
2426
timeRangeEnd: getDayjsFromDateFilterValue(
2527
queryParams.timeRangeEnd,
2628
now

src/views/domain-workflows/domain-workflows-header/domain-workflows-header.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ export default function DomainWorkflowsHeader({
4141
queryStringQueryParamKey="query"
4242
refetchQuery={refetch}
4343
isQueryRunning={isFetching}
44-
expandFiltersByDefault={true}
4544
/>
4645
);
4746
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
export type Props = {
22
domain: string;
33
cluster: string;
4-
timeRangeStart: string;
4+
timeRangeStart?: string;
55
timeRangeEnd: string;
66
};
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
export type Props = {
22
domain: string;
33
cluster: string;
4-
timeRangeStart: string;
4+
timeRangeStart?: string;
55
timeRangeEnd: string;
66
};

0 commit comments

Comments
 (0)