Skip to content

Commit 62074ed

Browse files
committed
Merge branch 'feat/14552-effective-query-backend' of github.com:Graylog2/graylog2-server into feat/14552-effective-query-backend
2 parents 061da09 + 3049f15 commit 62074ed

3 files changed

Lines changed: 19 additions & 1 deletion

File tree

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
type = "added"
2+
message = "Add an extension point to display a read-only query preview beneath the Search Query on the event definition condition screen."
3+
4+
issues = ["14552"]

graylog2-web-interface/src/components/event-definitions/event-definition-types/FilterForm.tsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import type { RelativeTimeRangeWithEnd } from 'views/logic/queries/Query';
4040
import Search from 'views/logic/search/Search';
4141
import { extractDurationAndUnit } from 'components/common/TimeUnitInput';
4242
import { Alert, ButtonToolbar, ControlLabel, FormGroup, HelpBlock, Input } from 'components/bootstrap';
43+
import usePluginEntities from 'hooks/usePluginEntities';
4344
import RelativeTime from 'components/common/RelativeTime';
4445
import type { LookupTableParameterJson } from 'views/logic/parameters/LookupTableParameter';
4546
import LookupTableParameter from 'views/logic/parameters/LookupTableParameter';
@@ -179,6 +180,7 @@ const QueryParameters = ({ eventDefinition, onChange, userCanViewLookupTables, v
179180
const FilterForm = ({ currentUser, eventDefinition, onChange, streams, validation }: Props) => {
180181
const { execute_every_ms: executeEveryMs, search_within_ms: searchWithinMs } = eventDefinition.config;
181182
const [currentConfig, setCurrentConfig] = useState(eventDefinition.config);
183+
const searchQueryPreviews = usePluginEntities('eventDefinitions.components.searchQueryPreview') ?? [];
182184
const searchWithin = extractDurationAndUnit(searchWithinMs, TIME_UNITS);
183185
const executeEvery = extractDurationAndUnit(executeEveryMs, TIME_UNITS);
184186
const { userTimezone } = useUserDateTime();
@@ -553,6 +555,14 @@ const FilterForm = ({ currentUser, eventDefinition, onChange, streams, validatio
553555
</FormGroup>
554556
)}
555557

558+
{/* Extension point (filled by the enterprise search-filters plugin) for a read-only preview of the
559+
effective query beneath the Search Query. Scoped (Illuminate) definitions hide the base query, so
560+
the preview is not rendered for them. */}
561+
{onlyFilters ||
562+
searchQueryPreviews.map(({ component: SearchQueryPreview, key }) => (
563+
<SearchQueryPreview key={key} queryString={currentConfig.query ?? ''} filters={currentConfig.filters ?? []} />
564+
))}
565+
556566
{onlyFilters || (
557567
<QueryParameters
558568
eventDefinition={eventDefinition}

graylog2-web-interface/src/components/event-definitions/types.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import type React from 'react';
1919

2020
import type { SearchBarControl } from 'views/types';
2121
import type User from 'logic/users/User';
22-
import type { EventDefinition } from 'components/event-definitions/event-definitions-types';
22+
import type { EventDefinition, SearchFilter } from 'components/event-definitions/event-definitions-types';
2323
import type { Attribute } from 'stores/PaginationTypes';
2424

2525
export type AlertType = 'alert' | 'event' | 'event_definition';
@@ -105,5 +105,9 @@ declare module 'graylog-web-plugin/plugin' {
105105
'eventDefinitions.components.sigmaGitImport'?: Array<{ component: React.FC; key: string }>;
106106
'eventDefinitions.components.sigmaFileUpload'?: Array<{ component: React.FC; key: string }>;
107107
'eventDefinitions.components.sigmaOptions'?: Array<{ component: React.FC; key: string }>;
108+
'eventDefinitions.components.searchQueryPreview'?: Array<{
109+
component: React.ComponentType<{ queryString: string; filters: SearchFilter[] }>;
110+
key: string;
111+
}>;
108112
}
109113
}

0 commit comments

Comments
 (0)