From 2304fb67365325bfcb530d3fa2a658544d8a7016 Mon Sep 17 00:00:00 2001 From: Bena Kansara <69037875+benakansara@users.noreply.github.com> Date: Mon, 23 Sep 2024 15:08:15 +0200 Subject: [PATCH] [Obs Alerts table] Fix error on clicking alert reason message (#193693) Resolves https://github.com/elastic/kibana/issues/193692 --- .../helpers/map_rules_params_with_flyout.ts | 47 +++++++++++++------ 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_overview/helpers/map_rules_params_with_flyout.ts b/x-pack/plugins/observability_solution/observability/public/components/alert_overview/helpers/map_rules_params_with_flyout.ts index fce4bd35dbdeeb..b5819631406d78 100644 --- a/x-pack/plugins/observability_solution/observability/public/components/alert_overview/helpers/map_rules_params_with_flyout.ts +++ b/x-pack/plugins/observability_solution/observability/public/components/alert_overview/helpers/map_rules_params_with_flyout.ts @@ -89,7 +89,9 @@ export const mapRuleParamsWithFlyout = (alert: TopAlert): FlyoutThresholdData[] switch (ruleId) { case OBSERVABILITY_THRESHOLD_RULE_TYPE_ID: return observedValues.map((observedValue, metricIndex) => { - const criteria = ruleCriteria[metricIndex] as CustomMetricExpressionParams; + const criteria = Array.isArray(ruleCriteria) + ? (ruleCriteria[metricIndex] as CustomMetricExpressionParams) + : (ruleCriteria as CustomMetricExpressionParams); const fields = criteria.metrics.map((metric) => metric.field || 'COUNT_AGG'); const comparator = criteria.comparator; const threshold = criteria.threshold; @@ -118,12 +120,20 @@ export const mapRuleParamsWithFlyout = (alert: TopAlert): FlyoutThresholdData[] case METRIC_THRESHOLD_ALERT_TYPE_ID: return observedValues.map((observedValue, metricIndex) => { - const criteria = ruleCriteria[metricIndex] as BaseMetricExpressionParams & { - metric: string; - customMetrics: Array<{ - field?: string; - }>; - }; + const criteria = Array.isArray(ruleCriteria) + ? (ruleCriteria[metricIndex] as BaseMetricExpressionParams & { + metric: string; + customMetrics: Array<{ + field?: string; + }>; + }) + : (ruleCriteria as BaseMetricExpressionParams & { + metric: string; + customMetrics: Array<{ + field?: string; + }>; + }); + let fields: string[] = []; const metric = criteria.metric; const customMetric = criteria.customMetrics; @@ -157,14 +167,21 @@ export const mapRuleParamsWithFlyout = (alert: TopAlert): FlyoutThresholdData[] case METRIC_INVENTORY_THRESHOLD_ALERT_TYPE_ID: return observedValues.map((observedValue, metricIndex) => { - const { threshold, customMetric, metric, comparator } = ruleCriteria[ - metricIndex - ] as BaseMetricExpressionParams & { - metric: string; - customMetric: { - field: string; - }; - }; + const criteria = Array.isArray(ruleCriteria) + ? (ruleCriteria[metricIndex] as BaseMetricExpressionParams & { + metric: string; + customMetric: { + field: string; + }; + }) + : (ruleCriteria as BaseMetricExpressionParams & { + metric: string; + customMetric: { + field: string; + }; + }); + + const { threshold, customMetric, metric, comparator } = criteria; const metricField = customMetric?.field || metric; const thresholdFormatted = threshold.map((thresholdToFormat) => { if (