Skip to content

Commit d6833d5

Browse files
committed
fix: don't allow invalid filter selections on timeline (#13855)
1 parent 6cca28f commit d6833d5

File tree

3 files changed

+38
-32
lines changed

3 files changed

+38
-32
lines changed

airbyte-webapp/src/pages/connections/ConnectionTimelinePage/ConnectionTimelineFilters.module.scss

-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
.filterButton {
55
background-color: colors.$foreground;
66
border-radius: variables.$border-radius-sm;
7-
color: colors.$grey-400;
87
border: variables.$border-thin solid colors.$grey-300;
98
min-height: auto;
109
height: variables.$button-height-xs;

airbyte-webapp/src/pages/connections/ConnectionTimelinePage/ConnectionTimelineFilters.tsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -65,17 +65,18 @@ export const ConnectionTimelineFilters: React.FC<ConnectionTimelineFiltersProps>
6565
buttonClassName={styles.filterButton}
6666
optionClassName={styles.filterOption}
6767
optionTextAs="span"
68-
options={statusFilterOptions}
68+
options={statusFilterOptions(filterValues)}
6969
selectedValue={filterValues.status}
7070
onSelect={(value) => setFilterValue("status", value)}
71+
isDisabled={!["sync", "clear", "refresh", ""].includes(filterValues.eventCategory)}
7172
/>
7273
</FlexItem>
7374
<FlexItem>
7475
<ListBox
7576
buttonClassName={styles.filterButton}
7677
optionClassName={styles.filterOption}
7778
optionTextAs="span"
78-
options={eventTypeFilterOptions}
79+
options={eventTypeFilterOptions(filterValues)}
7980
selectedValue={filterValues.eventCategory}
8081
onSelect={(value) => setFilterValue("eventCategory", value)}
8182
/>

airbyte-webapp/src/pages/connections/ConnectionTimelinePage/utils.tsx

+35-29
Original file line numberDiff line numberDiff line change
@@ -180,32 +180,38 @@ const generateEventTypeFilterOption = (value: TimelineFilterValues["eventCategor
180180
value,
181181
});
182182

183-
export const statusFilterOptions = [
184-
{
185-
label: (
186-
<Text color="grey" bold>
187-
<FormattedMessage id="connection.timeline.filters.allStatuses" />
188-
</Text>
189-
),
190-
value: "",
191-
},
192-
generateStatusFilterOption("success", "connection.timeline.filters.success", "statusSuccess"),
193-
generateStatusFilterOption("failure", "connection.timeline.filters.failure", "statusError"),
194-
generateStatusFilterOption("incomplete", "connection.timeline.filters.incomplete", "statusWarning"),
195-
generateStatusFilterOption("cancelled", "connection.timeline.filters.cancelled", "statusCancelled"),
196-
];
197-
198-
export const eventTypeFilterOptions = [
199-
{
200-
label: (
201-
<Text color="grey" bold>
202-
<FormattedMessage id="connection.timeline.filters.allEventTypes" />
203-
</Text>
204-
),
205-
value: "",
206-
},
207-
generateEventTypeFilterOption("sync", "connection.timeline.filters.sync"),
208-
generateEventTypeFilterOption("refresh", "connection.timeline.filters.refresh"),
209-
generateEventTypeFilterOption("clear", "connection.timeline.filters.clear"),
210-
generateEventTypeFilterOption("connection_settings", "connection.timeline.filters.connection_settings"),
211-
];
183+
export const statusFilterOptions = (filterValues: TimelineFilterValues) => {
184+
return [
185+
{
186+
label: (
187+
<Text color={!["sync", "clear", "refresh", ""].includes(filterValues.eventCategory) ? "grey300" : "grey"} bold>
188+
<FormattedMessage id="connection.timeline.filters.allStatuses" />
189+
</Text>
190+
),
191+
value: "",
192+
},
193+
generateStatusFilterOption("success", "connection.timeline.filters.success", "statusSuccess"),
194+
generateStatusFilterOption("failure", "connection.timeline.filters.failure", "statusError"),
195+
generateStatusFilterOption("incomplete", "connection.timeline.filters.incomplete", "statusWarning"),
196+
generateStatusFilterOption("cancelled", "connection.timeline.filters.cancelled", "statusCancelled"),
197+
];
198+
};
199+
200+
export const eventTypeFilterOptions = (filterValues: TimelineFilterValues) => {
201+
return [
202+
{
203+
label: (
204+
<Text color="grey" bold>
205+
<FormattedMessage id="connection.timeline.filters.allEventTypes" />
206+
</Text>
207+
),
208+
value: "",
209+
},
210+
generateEventTypeFilterOption("sync", "connection.timeline.filters.sync"),
211+
generateEventTypeFilterOption("refresh", "connection.timeline.filters.refresh"),
212+
generateEventTypeFilterOption("clear", "connection.timeline.filters.clear"),
213+
...(filterValues.status === ""
214+
? [generateEventTypeFilterOption("connection_settings", "connection.timeline.filters.connection_settings")]
215+
: []),
216+
];
217+
};

0 commit comments

Comments
 (0)