From bb0b2c9fa462cab381e7c9a89201b4983a850206 Mon Sep 17 00:00:00 2001 From: Kevin Delemme Date: Wed, 25 Sep 2024 11:03:15 -0400 Subject: [PATCH] [8.15] fix(slo): use correct uisettings (#193362) (#193575) # Backport This will backport the following commits from `main` to `8.15`: - [fix(slo): use correct uisettings (#193362)](https://github.com/elastic/kibana/pull/193362) ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sqren/backport) \n\n### Questions ?\nPlease refer to the [Backport tool\ndocumentation](https://github.com/sqren/backport)\n\n\n\nCo-authored-by: Kevin Delemme "}}]}] BACKPORT--> --- .../good_bad_events_chart.tsx | 10 +-- .../components/events_chart_panel.tsx | 15 ++-- .../components/common/data_preview_chart.tsx | 2 +- .../slo/public/utils/slo/get_discover_link.ts | 78 ++++++++++++++----- 4 files changed, 74 insertions(+), 31 deletions(-) rename x-pack/plugins/observability_solution/slo/public/{pages/slos/components/common => components/good_bad_events_chart}/good_bad_events_chart.tsx (94%) diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/common/good_bad_events_chart.tsx b/x-pack/plugins/observability_solution/slo/public/components/good_bad_events_chart/good_bad_events_chart.tsx similarity index 94% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/common/good_bad_events_chart.tsx rename to x-pack/plugins/observability_solution/slo/public/components/good_bad_events_chart/good_bad_events_chart.tsx index 242500d4d9efd7..edf7a3d1d3ee95 100644 --- a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/common/good_bad_events_chart.tsx +++ b/x-pack/plugins/observability_solution/slo/public/components/good_bad_events_chart/good_bad_events_chart.tsx @@ -23,10 +23,10 @@ import { i18n } from '@kbn/i18n'; import { GetPreviewDataResponse, SLOWithSummaryResponse } from '@kbn/slo-schema'; import moment from 'moment'; import React, { useRef } from 'react'; -import { TimeBounds } from '../../../slo_details/types'; -import { getBrushTimeBounds } from '../../../../utils/slo/duration'; -import { useKibana } from '../../../../utils/kibana_react'; -import { openInDiscover } from '../../../../utils/slo/get_discover_link'; +import { TimeBounds } from '../../pages/slo_details/types'; +import { getBrushTimeBounds } from '../../utils/slo/duration'; +import { useKibana } from '../../utils/kibana_react'; +import { openInDiscover } from '../../utils/slo/get_discover_link'; export interface Props { data: GetPreviewDataResponse; @@ -85,7 +85,7 @@ export function GoodBadEventsChart({ to: moment(datanum.x).add(intervalInMilliseconds, 'ms').toISOString(), mode: 'absolute' as const, }; - openInDiscover(discover, slo, isBad, !isBad, timeRange); + openInDiscover({ slo, showBad: isBad, showGood: !isBad, timeRange, discover, uiSettings }); } }; diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/events_chart_panel.tsx b/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/events_chart_panel.tsx index ac2cef18e95619..cc973501fe9efb 100644 --- a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/events_chart_panel.tsx +++ b/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/events_chart_panel.tsx @@ -42,7 +42,7 @@ import { SloTabId } from './slo_details'; import { useGetPreviewData } from '../../../hooks/use_get_preview_data'; import { useKibana } from '../../../utils/kibana_react'; import { COMPARATOR_MAPPING } from '../../slo_edit/constants'; -import { GoodBadEventsChart } from '../../slos/components/common/good_bad_events_chart'; +import { GoodBadEventsChart } from '../../../components/good_bad_events_chart/good_bad_events_chart'; import { getDiscoverLink } from '../../../utils/slo/get_discover_link'; export interface Props { @@ -173,10 +173,15 @@ export function EventsChartPanel({ slo, range, selectedTabId, onBrushed }: Props diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/data_preview_chart.tsx b/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/data_preview_chart.tsx index cb9730497e2162..5241e6c78aebe5 100644 --- a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/data_preview_chart.tsx +++ b/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/data_preview_chart.tsx @@ -38,7 +38,7 @@ import moment from 'moment'; import React, { useState } from 'react'; import { useFormContext } from 'react-hook-form'; import { useKibana } from '../../../../utils/kibana_react'; -import { GoodBadEventsChart } from '../../../slos/components/common/good_bad_events_chart'; +import { GoodBadEventsChart } from '../../../../components/good_bad_events_chart/good_bad_events_chart'; import { useDebouncedGetPreviewData } from '../../hooks/use_preview'; import { useSectionFormValidation } from '../../hooks/use_section_form_validation'; import { CreateSLOForm } from '../../types'; diff --git a/x-pack/plugins/observability_solution/slo/public/utils/slo/get_discover_link.ts b/x-pack/plugins/observability_solution/slo/public/utils/slo/get_discover_link.ts index 6166a56ae73baa..e8878b0a165309 100644 --- a/x-pack/plugins/observability_solution/slo/public/utils/slo/get_discover_link.ts +++ b/x-pack/plugins/observability_solution/slo/public/utils/slo/get_discover_link.ts @@ -11,13 +11,22 @@ import { i18n } from '@kbn/i18n'; import { buildEsQuery } from '@kbn/observability-plugin/public'; import { v4 } from 'uuid'; import { isEmpty } from 'lodash'; +import { getEsQueryConfig } from '@kbn/data-plugin/public'; +import { IUiSettingsClient } from '@kbn/core/public'; -function createDiscoverLocator( - slo: SLOWithSummaryResponse, +function createDiscoverLocator({ + slo, showBad = false, showGood = false, - timeRange?: TimeRange -) { + timeRange, + uiSettings, +}: { + slo: SLOWithSummaryResponse; + showBad: boolean; + showGood: boolean; + timeRange: TimeRange; + uiSettings?: IUiSettingsClient; +}) { const indexId = v4(); const filters: Filter[] = []; @@ -42,8 +51,17 @@ function createDiscoverLocator( const totalFilters = kqlWithFiltersSchema.is(slo.indicator.params.total) ? slo.indicator.params.total.filters : []; - const customGoodFilter = buildEsQuery({ kuery: goodKuery, filters: goodFilters }); - const customTotalFilter = buildEsQuery({ kuery: totalKuery, filters: totalFilters }); + + const customGoodFilter = buildEsQuery({ + kuery: goodKuery, + filters: goodFilters, + ...(uiSettings && { config: getEsQueryConfig(uiSettings) }), + }); + const customTotalFilter = buildEsQuery({ + kuery: totalKuery, + filters: totalFilters, + ...(uiSettings && { config: getEsQueryConfig(uiSettings) }), + }); const customBadFilter = { bool: { filter: customTotalFilter, must_not: customGoodFilter } }; filters.push({ @@ -144,22 +162,42 @@ function createDiscoverLocator( }; } -export function getDiscoverLink( - discover: DiscoverStart, - slo: SLOWithSummaryResponse, - timeRange: TimeRange -) { - const config = createDiscoverLocator(slo, false, false, timeRange); - return discover?.locator?.getRedirectUrl(config); +export function getDiscoverLink({ + slo, + timeRange, + discover, + uiSettings, +}: { + slo: SLOWithSummaryResponse; + timeRange: TimeRange; + discover?: DiscoverStart; + uiSettings?: IUiSettingsClient; +}) { + const locatorConfig = createDiscoverLocator({ + slo, + showBad: false, + showGood: false, + timeRange, + uiSettings, + }); + return discover?.locator?.getRedirectUrl(locatorConfig); } -export function openInDiscover( - discover: DiscoverStart, - slo: SLOWithSummaryResponse, +export function openInDiscover({ + slo, showBad = false, showGood = false, - timeRange?: TimeRange -) { - const config = createDiscoverLocator(slo, showBad, showGood, timeRange); - discover?.locator?.navigate(config); + timeRange, + discover, + uiSettings, +}: { + slo: SLOWithSummaryResponse; + showBad: boolean; + showGood: boolean; + timeRange: TimeRange; + discover?: DiscoverStart; + uiSettings?: IUiSettingsClient; +}) { + const locatorConfig = createDiscoverLocator({ slo, showBad, showGood, timeRange, uiSettings }); + discover?.locator?.navigate(locatorConfig); }