Skip to content

Commit fc35a36

Browse files
committed
[Metrics UI] Fixes for editing alerts in alert management (#64597)
* [Metrics UI] Fixes for editing alerts in alert management * Change EuiFieldSearch to use onChange instead of onSearch * Fixing groupBy * Fixing the correct groupBy
1 parent 825ce2c commit fc35a36

1 file changed

Lines changed: 59 additions & 44 deletions

File tree

x-pack/plugins/infra/public/components/alerting/metrics/expression.tsx

Lines changed: 59 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* you may not use this file except in compliance with the Elastic License.
55
*/
66

7-
import React, { useCallback, useMemo, useEffect, useState } from 'react';
7+
import React, { ChangeEvent, useCallback, useMemo, useEffect, useState } from 'react';
88
import {
99
EuiFlexGroup,
1010
EuiFlexItem,
@@ -13,6 +13,7 @@ import {
1313
EuiText,
1414
EuiFormRow,
1515
EuiButtonEmpty,
16+
EuiFieldSearch,
1617
} from '@elastic/eui';
1718
import { IFieldType } from 'src/plugins/data/public';
1819
import { FormattedMessage } from '@kbn/i18n/react';
@@ -143,7 +144,7 @@ export const Expressions: React.FC<Props> = props => {
143144

144145
const onGroupByChange = useCallback(
145146
(group: string | null) => {
146-
setAlertParams('groupBy', group || undefined);
147+
setAlertParams('groupBy', group || '');
147148
},
148149
[setAlertParams]
149150
);
@@ -211,10 +212,20 @@ export const Expressions: React.FC<Props> = props => {
211212
}
212213
setAlertParams('sourceId', source?.id);
213214
} else {
214-
setAlertParams('criteria', [defaultExpression]);
215+
if (!alertParams.criteria) {
216+
setAlertParams('criteria', [defaultExpression]);
217+
}
218+
if (!alertParams.sourceId) {
219+
setAlertParams('sourceId', source?.id || 'default');
220+
}
215221
}
216222
}, [alertsContext.metadata, defaultExpression, source]); // eslint-disable-line react-hooks/exhaustive-deps
217223

224+
const handleFieldSearchChange = useCallback(
225+
(e: ChangeEvent<HTMLInputElement>) => onFilterQuerySubmit(e.target.value),
226+
[onFilterQuerySubmit]
227+
);
228+
218229
return (
219230
<>
220231
<EuiSpacer size={'m'} />
@@ -269,48 +280,52 @@ export const Expressions: React.FC<Props> = props => {
269280

270281
<EuiSpacer size={'m'} />
271282

272-
{alertsContext.metadata && (
273-
<>
274-
<EuiFormRow
275-
label={i18n.translate('xpack.infra.metrics.alertFlyout.filterLabel', {
276-
defaultMessage: 'Filter (optional)',
277-
})}
278-
helpText={i18n.translate('xpack.infra.metrics.alertFlyout.filterHelpText', {
279-
defaultMessage: 'Use a KQL expression to limit the scope of your alert trigger.',
280-
})}
281-
fullWidth
282-
compressed
283-
>
284-
<MetricsExplorerKueryBar
285-
derivedIndexPattern={derivedIndexPattern}
286-
onSubmit={onFilterQuerySubmit}
287-
value={alertParams.filterQuery}
288-
/>
289-
</EuiFormRow>
290-
291-
<EuiSpacer size={'m'} />
292-
<EuiFormRow
293-
label={i18n.translate('xpack.infra.metrics.alertFlyout.createAlertPerText', {
294-
defaultMessage: 'Create alert per (optional)',
295-
})}
296-
helpText={i18n.translate('xpack.infra.metrics.alertFlyout.createAlertPerHelpText', {
297-
defaultMessage:
298-
'Create an alert for every unique value. For example: "host.id" or "cloud.region".',
299-
})}
283+
<EuiFormRow
284+
label={i18n.translate('xpack.infra.metrics.alertFlyout.filterLabel', {
285+
defaultMessage: 'Filter (optional)',
286+
})}
287+
helpText={i18n.translate('xpack.infra.metrics.alertFlyout.filterHelpText', {
288+
defaultMessage: 'Use a KQL expression to limit the scope of your alert trigger.',
289+
})}
290+
fullWidth
291+
compressed
292+
>
293+
{(alertsContext.metadata && (
294+
<MetricsExplorerKueryBar
295+
derivedIndexPattern={derivedIndexPattern}
296+
onSubmit={onFilterQuerySubmit}
297+
value={alertParams.filterQuery}
298+
/>
299+
)) || (
300+
<EuiFieldSearch
301+
onChange={handleFieldSearchChange}
302+
value={alertParams.filterQuery}
300303
fullWidth
301-
compressed
302-
>
303-
<MetricsExplorerGroupBy
304-
onChange={onGroupByChange}
305-
fields={derivedIndexPattern.fields}
306-
options={{
307-
...options,
308-
groupBy: alertParams.groupBy || undefined,
309-
}}
310-
/>
311-
</EuiFormRow>
312-
</>
313-
)}
304+
/>
305+
)}
306+
</EuiFormRow>
307+
308+
<EuiSpacer size={'m'} />
309+
<EuiFormRow
310+
label={i18n.translate('xpack.infra.metrics.alertFlyout.createAlertPerText', {
311+
defaultMessage: 'Create alert per (optional)',
312+
})}
313+
helpText={i18n.translate('xpack.infra.metrics.alertFlyout.createAlertPerHelpText', {
314+
defaultMessage:
315+
'Create an alert for every unique value. For example: "host.id" or "cloud.region".',
316+
})}
317+
fullWidth
318+
compressed
319+
>
320+
<MetricsExplorerGroupBy
321+
onChange={onGroupByChange}
322+
fields={derivedIndexPattern.fields}
323+
options={{
324+
...options,
325+
groupBy: alertParams.groupBy || undefined,
326+
}}
327+
/>
328+
</EuiFormRow>
314329
</>
315330
);
316331
};

0 commit comments

Comments
 (0)