Skip to content

Commit c4e42e9

Browse files
Update default event priority filtering (#25313)
* update default event priority filter * update cl * cleanup * Update graylog2-web-interface/src/components/common/EntityFilters/FilterConfiguration/StaticOptionsList.tsx Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent 7ce2a6d commit c4e42e9

File tree

8 files changed

+16
-54
lines changed

8 files changed

+16
-54
lines changed

changelog/unreleased/issue-24889.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ type = "a"
22
message = "Added an 'Info' Events priority level."
33

44
issues = ["24889"]
5-
pulls = ["25240", "graylog-plugin-enterprise#13456"]
5+
pulls = ["25240", "graylog-plugin-enterprise#13456", "25313", "graylog-plugin-enterprise#13506"]

graylog2-web-interface/src/components/common/EntityFilters/FilterConfiguration/StaticOptionsList.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import React from 'react';
1818

1919
import type { Attribute } from 'stores/PaginationTypes';
2020
import { MenuItem } from 'components/bootstrap';
21-
import { defaultCompare } from 'logic/DefaultCompare';
2221
import type { Filters } from 'components/common/EntityFilters/types';
2322

2423
type Props = {
@@ -30,8 +29,9 @@ type Props = {
3029

3130
const StaticOptionsList = ({ allActiveFilters, attribute, filterValueRenderer, onSubmit }: Props) => (
3231
<>
33-
{attribute.filter_options
34-
.sort(({ title: title1 }, { title: title2 }) => defaultCompare(title1.toLowerCase(), title2.toLowerCase()))
32+
{(attribute.id === 'priority'
33+
? attribute.filter_options
34+
: [...attribute.filter_options].sort((a, b) => a.title.localeCompare(b.title)))
3535
.map(({ title, value }) => {
3636
const disabled = !!allActiveFilters?.get(attribute.id)?.find(({ value: filterValue }) => value === filterValue);
3737

graylog2-web-interface/src/components/events/Constants.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,15 @@
1515
* <http://www.mongodb.com/licensing/server-side-public-license>.
1616
*/
1717
import type { Sort, Attribute } from 'stores/PaginationTypes';
18-
import EventDefinitionPriorityEnum, { EXCLUDE_INFO_FILTER } from 'logic/alerts/EventDefinitionPriorityEnum';
18+
import EventDefinitionPriorityEnum from 'logic/alerts/EventDefinitionPriorityEnum';
1919
import type { MiddleSectionProps } from 'components/common/PaginatedEntityTable/PaginatedEntityTable';
2020

2121
export const EVENTS_ENTITY_TABLE_ID = 'events';
2222

2323
export const commonEventAttributes: Array<Attribute> = [
2424
{
2525
filter_options: [
26-
{ value: EXCLUDE_INFO_FILTER, title: 'Exclude Info' },
27-
...Object.keys(EventDefinitionPriorityEnum.properties).map((num) => ({ value: num, title: num })),
26+
...Object.keys(EventDefinitionPriorityEnum.properties).reverse().map((num) => ({ value: num, title: num })),
2827
],
2928
filterable: true,
3029
id: 'priority',

graylog2-web-interface/src/components/events/EventsEntityTable.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,16 @@ import QueryHelper from 'components/common/QueryHelper';
3434
import EventsWidgets from 'components/events/EventsWidgets';
3535
import EventsRefreshProvider from 'components/events/EventsRefreshProvider';
3636
import type { UrlQueryFilters } from 'components/common/EntityFilters/types';
37-
import { EXCLUDE_INFO_FILTER } from 'logic/alerts/EventDefinitionPriorityEnum';
37+
import EventDefinitionPriorityEnum from 'logic/alerts/EventDefinitionPriorityEnum';
3838

3939
const additionalSearchFields = {
4040
key: 'The key of the event',
4141
};
4242

43-
const defaultFilters = OrderedMap({ priority: [EXCLUDE_INFO_FILTER] });
43+
const nonInfoPriorities = Object.keys(EventDefinitionPriorityEnum.properties)
44+
.reverse()
45+
.filter((key) => key !== String(EventDefinitionPriorityEnum.INFO));
46+
const defaultFilters = OrderedMap({ priority: nonInfoPriorities });
4447

4548
const EventsEntityTable = () => {
4649
const { stream_id: streamId } = useQuery();

graylog2-web-interface/src/components/events/events/PriorityName.tsx

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,14 @@
1616
*/
1717
import * as React from 'react';
1818

19-
import EventDefinitionPriorityEnum, { EXCLUDE_INFO_FILTER } from 'logic/alerts/EventDefinitionPriorityEnum';
19+
import EventDefinitionPriorityEnum from 'logic/alerts/EventDefinitionPriorityEnum';
2020
import StringUtils from 'util/StringUtils';
2121

2222
type Props = {
2323
priority: number | string;
2424
};
25-
const PriorityName = ({ priority }: Props) => {
26-
if (String(priority) === EXCLUDE_INFO_FILTER) {
27-
return <>Exclude Info</>;
28-
}
29-
30-
return <>{StringUtils.capitalizeFirstLetter(EventDefinitionPriorityEnum.properties[priority].name)}</>;
31-
};
25+
const PriorityName = ({ priority }: Props) => (
26+
<>{StringUtils.capitalizeFirstLetter(EventDefinitionPriorityEnum.properties[priority].name)}</>
27+
);
3228

3329
export default PriorityName;

graylog2-web-interface/src/components/events/fetchEvents.test.ts

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import fetch from 'logic/rest/FetchProvider';
2020
import asMock from 'helpers/mocking/AsMock';
2121
import type { SearchParams } from 'stores/PaginationTypes';
2222
import type { UrlQueryFilters } from 'components/common/EntityFilters/types';
23-
import { EXCLUDE_INFO_FILTER } from 'logic/alerts/EventDefinitionPriorityEnum';
2423

2524
import fetchEvents, { defaultTimeRange, parseFilters, parseTypeFilter } from './fetchEvents';
2625

@@ -129,20 +128,6 @@ describe('fetchEvents', () => {
129128
expect(result.filter.priority).toEqual(['1', '2']);
130129
});
131130

132-
it('expands exclude info filter to all non-info priorities', () => {
133-
const filters: UrlQueryFilters = OrderedMap({ priority: [EXCLUDE_INFO_FILTER] });
134-
const result = parseFilters(filters);
135-
136-
expect(result.filter.priority).toEqual(['1', '2', '3', '4']);
137-
});
138-
139-
it('drops exclude info filter when specific priorities are also selected', () => {
140-
const filters: UrlQueryFilters = OrderedMap({ priority: [EXCLUDE_INFO_FILTER, '3'] });
141-
const result = parseFilters(filters);
142-
143-
expect(result.filter.priority).toEqual(['3']);
144-
});
145-
146131
it('includes id filter when present', () => {
147132
const filters: UrlQueryFilters = OrderedMap({ id: ['evt-1'] });
148133
const result = parseFilters(filters);

graylog2-web-interface/src/components/events/fetchEvents.ts

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ import { additionalAttributes } from 'components/events/Constants';
2626
import type { UrlQueryFilters } from 'components/common/EntityFilters/types';
2727
import parseTimerangeFilter from 'components/common/PaginatedEntityTable/parseTimerangeFilter';
2828
import type { TimeRange, RelativeTimeRange } from 'views/logic/queries/Query';
29-
import EventDefinitionPriorityEnum, { EXCLUDE_INFO_FILTER } from 'logic/alerts/EventDefinitionPriorityEnum';
30-
3129
const url = URLUtils.qualifyUrl('/events/search');
3230

3331
type FiltersResult = {
@@ -58,23 +56,6 @@ export const parseTypeFilter = (alert: string) => {
5856
}
5957
};
6058

61-
const allPriorityKeys = Object.keys(EventDefinitionPriorityEnum.properties);
62-
63-
const expandPriorityFilters = (priorities: Array<string>): Array<string> => {
64-
const hasNegated = priorities.includes(EXCLUDE_INFO_FILTER);
65-
const specificValues = priorities.filter((p) => p !== EXCLUDE_INFO_FILTER);
66-
67-
if (hasNegated && specificValues.length > 0) {
68-
return specificValues;
69-
}
70-
71-
if (hasNegated) {
72-
return allPriorityKeys.filter((key) => key !== String(EventDefinitionPriorityEnum.INFO));
73-
}
74-
75-
return priorities;
76-
};
77-
7859
const allTime = { type: 'relative', range: 0 } as const;
7960

8061
export const parseFilters = (filters: UrlQueryFilters, defaultTimerange: TimeRange = allTime) => {
@@ -107,7 +88,7 @@ export const parseFilters = (filters: UrlQueryFilters, defaultTimerange: TimeRan
10788
}
10889

10990
if (filters.get('priority')?.length > 0) {
110-
result.filter.priority = expandPriorityFilters(filters.get('priority'));
91+
result.filter.priority = filters.get('priority');
11192
}
11293

11394
if (filters.get('id')?.length > 0) {

graylog2-web-interface/src/logic/alerts/EventDefinitionPriorityEnum.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,4 @@ const EventDefinitionPriorityEnum = {
2929
},
3030
} as const;
3131

32-
export const EXCLUDE_INFO_FILTER = '!0';
33-
3432
export default EventDefinitionPriorityEnum;

0 commit comments

Comments
 (0)