diff --git a/x-pack/plugins/apm/public/components/app/backend_detail_overview/backend_detail_dependencies_table.tsx b/x-pack/plugins/apm/public/components/app/backend_detail_overview/backend_detail_dependencies_table.tsx index 6425eba01d3c8f..ee71e4d8c8674d 100644 --- a/x-pack/plugins/apm/public/components/app/backend_detail_overview/backend_detail_dependencies_table.tsx +++ b/x-pack/plugins/apm/public/components/app/backend_detail_overview/backend_detail_dependencies_table.tsx @@ -9,8 +9,8 @@ import { i18n } from '@kbn/i18n'; import React from 'react'; import { getNodeName, NodeType } from '../../../../common/connections'; import { useApmParams } from '../../../hooks/use_apm_params'; -import { useComparison } from '../../../hooks/use_comparison'; import { useFetcher } from '../../../hooks/use_fetcher'; +import { getTimeRangeComparison } from '../../shared/time_comparison/get_time_range_comparison'; import { DependenciesTable } from '../../shared/dependencies_table'; import { ServiceLink } from '../../shared/service_link'; import { useTimeRange } from '../../../hooks/use_time_range'; @@ -30,7 +30,12 @@ export function BackendDetailDependenciesTable() { const { start, end } = useTimeRange({ rangeFrom, rangeTo }); - const { offset } = useComparison(); + const { offset } = getTimeRangeComparison({ + start, + end, + comparisonEnabled, + comparisonType, + }); const { data, status } = useFetcher( (callApmApi) => { diff --git a/x-pack/plugins/apm/public/components/app/backend_detail_overview/backend_error_rate_chart.tsx b/x-pack/plugins/apm/public/components/app/backend_detail_overview/backend_error_rate_chart.tsx index 9fb53ab15d374f..5ecb41829f06c4 100644 --- a/x-pack/plugins/apm/public/components/app/backend_detail_overview/backend_error_rate_chart.tsx +++ b/x-pack/plugins/apm/public/components/app/backend_detail_overview/backend_error_rate_chart.tsx @@ -7,7 +7,6 @@ import React, { useMemo } from 'react'; import { i18n } from '@kbn/i18n'; import { asPercent } from '../../../../common/utils/formatters'; -import { useComparison } from '../../../hooks/use_comparison'; import { useFetcher } from '../../../hooks/use_fetcher'; import { useTimeRange } from '../../../hooks/use_time_range'; import { Coordinate, TimeSeries } from '../../../../typings/timeseries'; @@ -17,6 +16,10 @@ import { ChartType, getTimeSeriesColor, } from '../../shared/charts/helper/get_timeseries_color'; +import { + getComparisonChartTheme, + getTimeRangeComparison, +} from '../../shared/time_comparison/get_time_range_comparison'; function yLabelFormat(y?: number | null) { return asPercent(y || 0, 1); @@ -28,12 +31,26 @@ export function BackendFailedTransactionRateChart({ height: number; }) { const { - query: { backendName, kuery, environment, rangeFrom, rangeTo }, + query: { + backendName, + kuery, + environment, + rangeFrom, + rangeTo, + comparisonEnabled, + comparisonType, + }, } = useApmParams('/backends/overview'); const { start, end } = useTimeRange({ rangeFrom, rangeTo }); - const { offset, comparisonChartTheme } = useComparison(); + const comparisonChartTheme = getComparisonChartTheme(); + const { offset } = getTimeRangeComparison({ + start, + end, + comparisonType, + comparisonEnabled, + }); const { data, status } = useFetcher( (callApmApi) => { diff --git a/x-pack/plugins/apm/public/components/app/backend_detail_overview/backend_latency_chart.tsx b/x-pack/plugins/apm/public/components/app/backend_detail_overview/backend_latency_chart.tsx index 9d95b58fe24de4..8289ac01b7b27d 100644 --- a/x-pack/plugins/apm/public/components/app/backend_detail_overview/backend_latency_chart.tsx +++ b/x-pack/plugins/apm/public/components/app/backend_detail_overview/backend_latency_chart.tsx @@ -7,7 +7,6 @@ import React, { useMemo } from 'react'; import { i18n } from '@kbn/i18n'; import { getDurationFormatter } from '../../../../common/utils/formatters'; -import { useComparison } from '../../../hooks/use_comparison'; import { useFetcher } from '../../../hooks/use_fetcher'; import { useTimeRange } from '../../../hooks/use_time_range'; import { Coordinate, TimeSeries } from '../../../../typings/timeseries'; @@ -21,15 +20,33 @@ import { ChartType, getTimeSeriesColor, } from '../../shared/charts/helper/get_timeseries_color'; +import { + getComparisonChartTheme, + getTimeRangeComparison, +} from '../../shared/time_comparison/get_time_range_comparison'; export function BackendLatencyChart({ height }: { height: number }) { const { - query: { backendName, rangeFrom, rangeTo, kuery, environment }, + query: { + backendName, + rangeFrom, + rangeTo, + kuery, + environment, + comparisonEnabled, + comparisonType, + }, } = useApmParams('/backends/overview'); const { start, end } = useTimeRange({ rangeFrom, rangeTo }); - const { offset, comparisonChartTheme } = useComparison(); + const comparisonChartTheme = getComparisonChartTheme(); + const { offset } = getTimeRangeComparison({ + start, + end, + comparisonType, + comparisonEnabled, + }); const { data, status } = useFetcher( (callApmApi) => { diff --git a/x-pack/plugins/apm/public/components/app/backend_detail_overview/backend_throughput_chart.tsx b/x-pack/plugins/apm/public/components/app/backend_detail_overview/backend_throughput_chart.tsx index c293561f780b10..c8a37146d60a49 100644 --- a/x-pack/plugins/apm/public/components/app/backend_detail_overview/backend_throughput_chart.tsx +++ b/x-pack/plugins/apm/public/components/app/backend_detail_overview/backend_throughput_chart.tsx @@ -7,7 +7,6 @@ import React, { useMemo } from 'react'; import { i18n } from '@kbn/i18n'; import { asTransactionRate } from '../../../../common/utils/formatters'; -import { useComparison } from '../../../hooks/use_comparison'; import { useFetcher } from '../../../hooks/use_fetcher'; import { useTimeRange } from '../../../hooks/use_time_range'; import { Coordinate, TimeSeries } from '../../../../typings/timeseries'; @@ -17,15 +16,33 @@ import { ChartType, getTimeSeriesColor, } from '../../shared/charts/helper/get_timeseries_color'; +import { + getComparisonChartTheme, + getTimeRangeComparison, +} from '../../shared/time_comparison/get_time_range_comparison'; export function BackendThroughputChart({ height }: { height: number }) { const { - query: { backendName, rangeFrom, rangeTo, kuery, environment }, + query: { + backendName, + rangeFrom, + rangeTo, + kuery, + environment, + comparisonEnabled, + comparisonType, + }, } = useApmParams('/backends/overview'); const { start, end } = useTimeRange({ rangeFrom, rangeTo }); - const { offset, comparisonChartTheme } = useComparison(); + const comparisonChartTheme = getComparisonChartTheme(); + const { offset } = getTimeRangeComparison({ + start, + end, + comparisonType, + comparisonEnabled, + }); const { data, status } = useFetcher( (callApmApi) => { diff --git a/x-pack/plugins/apm/public/components/app/backend_inventory/backend_inventory_dependencies_table/index.tsx b/x-pack/plugins/apm/public/components/app/backend_inventory/backend_inventory_dependencies_table/index.tsx index 33de388483df9a..fa7cf4a3ba2421 100644 --- a/x-pack/plugins/apm/public/components/app/backend_inventory/backend_inventory_dependencies_table/index.tsx +++ b/x-pack/plugins/apm/public/components/app/backend_inventory/backend_inventory_dependencies_table/index.tsx @@ -11,11 +11,11 @@ import React from 'react'; import { useUiTracker } from '../../../../../../observability/public'; import { getNodeName, NodeType } from '../../../../../common/connections'; import { useApmParams } from '../../../../hooks/use_apm_params'; -import { useComparison } from '../../../../hooks/use_comparison'; import { useFetcher } from '../../../../hooks/use_fetcher'; import { useTimeRange } from '../../../../hooks/use_time_range'; import { BackendLink } from '../../../shared/backend_link'; import { DependenciesTable } from '../../../shared/dependencies_table'; +import { getTimeRangeComparison } from '../../../shared/time_comparison/get_time_range_comparison'; export function BackendInventoryDependenciesTable() { const { @@ -33,7 +33,12 @@ export function BackendInventoryDependenciesTable() { const trackEvent = useUiTracker(); - const { offset } = useComparison(); + const { offset } = getTimeRangeComparison({ + start, + end, + comparisonEnabled, + comparisonType, + }); const { data, status } = useFetcher( (callApmApi) => { diff --git a/x-pack/plugins/apm/public/components/app/error_group_overview/index.tsx b/x-pack/plugins/apm/public/components/app/error_group_overview/index.tsx index 60b32691128e96..7d90ee6824de95 100644 --- a/x-pack/plugins/apm/public/components/app/error_group_overview/index.tsx +++ b/x-pack/plugins/apm/public/components/app/error_group_overview/index.tsx @@ -20,10 +20,10 @@ import { ChartPointerEventContextProvider } from '../../../context/chart_pointer import { useApmParams } from '../../../hooks/use_apm_params'; import { useErrorGroupDistributionFetcher } from '../../../hooks/use_error_group_distribution_fetcher'; import { useFetcher } from '../../../hooks/use_fetcher'; -import { useComparison } from '../../../hooks/use_comparison'; import { useTimeRange } from '../../../hooks/use_time_range'; import { APIReturnType } from '../../../services/rest/create_call_apm_api'; import { FailedTransactionRateChart } from '../../shared/charts/failed_transaction_rate_chart'; +import { getTimeRangeComparison } from '../../shared/time_comparison/get_time_range_comparison'; import { ErrorDistribution } from '../error_group_details/distribution'; import { ErrorGroupList } from './error_group_list'; @@ -56,13 +56,18 @@ export function ErrorGroupOverview() { sortDirection, rangeFrom, rangeTo, + comparisonType, comparisonEnabled, }, } = useApmParams('/services/{serviceName}/errors'); const { start, end } = useTimeRange({ rangeFrom, rangeTo }); - const { comparisonStart, comparisonEnd } = useComparison(); - + const { comparisonStart, comparisonEnd } = getTimeRangeComparison({ + start, + end, + comparisonType, + comparisonEnabled, + }); const { errorDistributionData, status } = useErrorGroupDistributionFetcher({ serviceName, groupId: undefined, diff --git a/x-pack/plugins/apm/public/components/app/service_map/popover/backend_contents.tsx b/x-pack/plugins/apm/public/components/app/service_map/popover/backend_contents.tsx index d10732d98426ff..facc3a9dbc5821 100644 --- a/x-pack/plugins/apm/public/components/app/service_map/popover/backend_contents.tsx +++ b/x-pack/plugins/apm/public/components/app/service_map/popover/backend_contents.tsx @@ -14,10 +14,10 @@ import { useUiTracker } from '../../../../../../observability/public'; import { ContentsProps } from '.'; import { useAnyOfApmParams } from '../../../../hooks/use_apm_params'; import { useApmRouter } from '../../../../hooks/use_apm_router'; -import { useComparison } from '../../../../hooks/use_comparison'; import { FETCH_STATUS, useFetcher } from '../../../../hooks/use_fetcher'; import { ApmRoutes } from '../../../routing/apm_route_config'; import { StatsList } from './stats_list'; +import { getTimeRangeComparison } from '../../../shared/time_comparison/get_time_range_comparison'; import { APIReturnType } from '../../../../services/rest/create_call_apm_api'; type BackendReturn = APIReturnType<'GET /internal/apm/service-map/backend'>; @@ -38,7 +38,14 @@ export function BackendContents({ '/services/{serviceName}/service-map' ); - const { offset } = useComparison(); + const { comparisonEnabled, comparisonType } = query; + + const { offset } = getTimeRangeComparison({ + start, + end, + comparisonEnabled, + comparisonType, + }); const apmRouter = useApmRouter(); diff --git a/x-pack/plugins/apm/public/components/app/service_map/popover/service_contents.tsx b/x-pack/plugins/apm/public/components/app/service_map/popover/service_contents.tsx index b13b4322f4ebc6..1d2b36c840b0be 100644 --- a/x-pack/plugins/apm/public/components/app/service_map/popover/service_contents.tsx +++ b/x-pack/plugins/apm/public/components/app/service_map/popover/service_contents.tsx @@ -22,7 +22,7 @@ import { FETCH_STATUS, useFetcher } from '../../../../hooks/use_fetcher'; import { AnomalyDetection } from './anomaly_detection'; import { StatsList } from './stats_list'; import { useTimeRange } from '../../../../hooks/use_time_range'; -import { useComparison } from '../../../../hooks/use_comparison'; +import { getTimeRangeComparison } from '../../../shared/time_comparison/get_time_range_comparison'; import { APIReturnType } from '../../../../services/rest/create_call_apm_api'; type ServiceNodeReturn = @@ -51,11 +51,16 @@ export function ServiceContents({ throw new Error('Expected rangeFrom and rangeTo to be set'); } - const { rangeFrom, rangeTo, comparisonEnabled } = query; + const { rangeFrom, rangeTo, comparisonEnabled, comparisonType } = query; const { start, end } = useTimeRange({ rangeFrom, rangeTo }); - const { offset } = useComparison(); + const { offset } = getTimeRangeComparison({ + start, + end, + comparisonEnabled, + comparisonType, + }); const serviceName = nodeData.id!; const serviceGroup = ('serviceGroup' in query && query.serviceGroup) || ''; diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_dependencies_table/index.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_dependencies_table/index.tsx index 66cf8973a1c4f7..7bfd9684fb2490 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_dependencies_table/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_dependencies_table/index.tsx @@ -17,7 +17,7 @@ import { useTimeRange } from '../../../../hooks/use_time_range'; import { BackendLink } from '../../../shared/backend_link'; import { DependenciesTable } from '../../../shared/dependencies_table'; import { ServiceLink } from '../../../shared/service_link'; -import { useComparison } from '../../../../hooks/use_comparison'; +import { getTimeRangeComparison } from '../../../shared/time_comparison/get_time_range_comparison'; interface ServiceOverviewDependenciesTableProps { fixedHeight?: boolean; @@ -46,7 +46,12 @@ export function ServiceOverviewDependenciesTable({ const { start, end } = useTimeRange({ rangeFrom, rangeTo }); - const { offset } = useComparison(); + const { offset } = getTimeRangeComparison({ + start, + end, + comparisonEnabled, + comparisonType, + }); const { serviceName, transactionType } = useApmServiceContext(); diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_errors_table/index.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_errors_table/index.tsx index d39c32aa25e9d1..8eb5158f304c5b 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_errors_table/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_errors_table/index.tsx @@ -16,9 +16,9 @@ import { orderBy } from 'lodash'; import React, { useState } from 'react'; import uuid from 'uuid'; import { FETCH_STATUS, useFetcher } from '../../../../hooks/use_fetcher'; -import { useComparison } from '../../../../hooks/use_comparison'; import { APIReturnType } from '../../../../services/rest/create_call_apm_api'; import { ErrorOverviewLink } from '../../../shared/links/apm/error_overview_link'; +import { getTimeRangeComparison } from '../../../shared/time_comparison/get_time_range_comparison'; import { OverviewTableContainer } from '../../../shared/overview_table_container'; import { getColumns } from './get_columns'; import { useApmParams } from '../../../../hooks/use_apm_params'; @@ -81,7 +81,12 @@ export function ServiceOverviewErrorsTable({ serviceName }: Props) { const { start, end } = useTimeRange({ rangeFrom, rangeTo }); - const { comparisonStart, comparisonEnd } = useComparison(); + const { comparisonStart, comparisonEnd } = getTimeRangeComparison({ + start, + end, + comparisonType, + comparisonEnabled, + }); const { pageIndex, sort } = tableOptions; const { direction, field } = sort; diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_chart_and_table.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_chart_and_table.tsx index 338c6ce8a4fc4e..dfea13eaaf476b 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_chart_and_table.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_chart_and_table.tsx @@ -11,11 +11,11 @@ import React, { useState } from 'react'; import uuid from 'uuid'; import { useApmServiceContext } from '../../../context/apm_service/use_apm_service_context'; import { useApmParams } from '../../../hooks/use_apm_params'; -import { useComparison } from '../../../hooks/use_comparison'; import { FETCH_STATUS, useFetcher } from '../../../hooks/use_fetcher'; import { useTimeRange } from '../../../hooks/use_time_range'; import { APIReturnType } from '../../../services/rest/create_call_apm_api'; import { InstancesLatencyDistributionChart } from '../../shared/charts/instances_latency_distribution_chart'; +import { getTimeRangeComparison } from '../../shared/time_comparison/get_time_range_comparison'; import { ServiceOverviewInstancesTable, TableOptions, @@ -86,7 +86,12 @@ export function ServiceOverviewInstancesChartAndTable({ const { start, end } = useTimeRange({ rangeFrom, rangeTo }); - const { comparisonStart, comparisonEnd } = useComparison(); + const { comparisonStart, comparisonEnd } = getTimeRangeComparison({ + start, + end, + comparisonType, + comparisonEnabled, + }); const { data: mainStatsData = INITIAL_STATE_MAIN_STATS, diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx index cae35f6137be22..a0a8f7babe640d 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx @@ -20,10 +20,13 @@ import { useApmServiceContext } from '../../../context/apm_service/use_apm_servi import { useEnvironmentsContext } from '../../../context/environments_context/use_environments_context'; import { useApmParams } from '../../../hooks/use_apm_params'; import { useFetcher } from '../../../hooks/use_fetcher'; -import { useComparison } from '../../../hooks/use_comparison'; import { usePreferredServiceAnomalyTimeseries } from '../../../hooks/use_preferred_service_anomaly_timeseries'; import { useTimeRange } from '../../../hooks/use_time_range'; import { TimeseriesChart } from '../../shared/charts/timeseries_chart'; +import { + getComparisonChartTheme, + getTimeRangeComparison, +} from '../../shared/time_comparison/get_time_range_comparison'; import { ChartType, getTimeSeriesColor, @@ -44,7 +47,7 @@ export function ServiceOverviewThroughputChart({ transactionName?: string; }) { const { - query: { rangeFrom, rangeTo, comparisonEnabled }, + query: { rangeFrom, rangeTo, comparisonEnabled, comparisonType }, } = useApmParams('/services/{serviceName}'); const { environment } = useEnvironmentsContext(); @@ -57,8 +60,13 @@ export function ServiceOverviewThroughputChart({ const { transactionType, serviceName } = useApmServiceContext(); - const { comparisonStart, comparisonEnd, comparisonChartTheme } = - useComparison(); + const comparisonChartTheme = getComparisonChartTheme(); + const { comparisonStart, comparisonEnd } = getTimeRangeComparison({ + start, + end, + comparisonType, + comparisonEnabled, + }); const { data = INITIAL_STATE, status } = useFetcher( (callApmApi) => { diff --git a/x-pack/plugins/apm/public/components/app/transaction_details/index.tsx b/x-pack/plugins/apm/public/components/app/transaction_details/index.tsx index 3f535ae164c511..327664925d5b16 100644 --- a/x-pack/plugins/apm/public/components/app/transaction_details/index.tsx +++ b/x-pack/plugins/apm/public/components/app/transaction_details/index.tsx @@ -30,6 +30,7 @@ export function TransactionDetails() { rangeTo, transactionType: transactionTypeFromUrl, comparisonEnabled, + comparisonType, } = query; const { start, end } = useTimeRange({ rangeFrom, rangeTo }); const apmRouter = useApmRouter(); @@ -73,6 +74,7 @@ export function TransactionDetails() { transactionName={transactionName} isServerlessContext={isServerless} comparisonEnabled={comparisonEnabled} + comparisonType={comparisonType} /> diff --git a/x-pack/plugins/apm/public/components/app/transaction_overview/index.tsx b/x-pack/plugins/apm/public/components/app/transaction_overview/index.tsx index c97f395975c7bd..68315fc3b2b021 100644 --- a/x-pack/plugins/apm/public/components/app/transaction_overview/index.tsx +++ b/x-pack/plugins/apm/public/components/app/transaction_overview/index.tsx @@ -26,6 +26,7 @@ export function TransactionOverview() { rangeTo, transactionType: transactionTypeFromUrl, comparisonEnabled, + comparisonType, }, } = useApmParams('/services/{serviceName}/transactions'); @@ -68,6 +69,7 @@ export function TransactionOverview() { end={end} isServerlessContext={isServerless} comparisonEnabled={comparisonEnabled} + comparisonType={comparisonType} /> diff --git a/x-pack/plugins/apm/public/components/shared/charts/failed_transaction_rate_chart/index.tsx b/x-pack/plugins/apm/public/components/shared/charts/failed_transaction_rate_chart/index.tsx index 53b8bae57c146e..a968bf31860862 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/failed_transaction_rate_chart/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/failed_transaction_rate_chart/index.tsx @@ -16,9 +16,12 @@ import { useFetcher } from '../../../../hooks/use_fetcher'; import { useLegacyUrlParams } from '../../../../context/url_params_context/use_url_params'; import { TimeseriesChart } from '../timeseries_chart'; import { useApmServiceContext } from '../../../../context/apm_service/use_apm_service_context'; +import { + getComparisonChartTheme, + getTimeRangeComparison, +} from '../../time_comparison/get_time_range_comparison'; import { useApmParams } from '../../../../hooks/use_apm_params'; import { useTimeRange } from '../../../../hooks/use_time_range'; -import { useComparison } from '../../../../hooks/use_comparison'; import { useEnvironmentsContext } from '../../../../context/environments_context/use_environments_context'; import { ApmMlDetectorType } from '../../../../../common/anomaly_detection/apm_ml_detectors'; import { usePreferredServiceAnomalyTimeseries } from '../../../../hooks/use_preferred_service_anomaly_timeseries'; @@ -58,7 +61,7 @@ export function FailedTransactionRateChart({ } = useLegacyUrlParams(); const { - query: { rangeFrom, rangeTo, comparisonEnabled }, + query: { rangeFrom, rangeTo, comparisonEnabled, comparisonType }, } = useApmParams('/services/{serviceName}'); const { start, end } = useTimeRange({ rangeFrom, rangeTo }); @@ -71,8 +74,13 @@ export function FailedTransactionRateChart({ const { serviceName, transactionType, alerts } = useApmServiceContext(); - const { comparisonChartTheme, comparisonStart, comparisonEnd } = - useComparison(); + const comparisonChartTheme = getComparisonChartTheme(); + const { comparisonStart, comparisonEnd } = getTimeRangeComparison({ + start, + end, + comparisonType, + comparisonEnabled, + }); const { data = INITIAL_STATE, status } = useFetcher( (callApmApi) => { diff --git a/x-pack/plugins/apm/public/components/shared/charts/transaction_charts/index.tsx b/x-pack/plugins/apm/public/components/shared/charts/transaction_charts/index.tsx index fe4e95de4571c1..a2bfad0175a5f9 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/transaction_charts/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/transaction_charts/index.tsx @@ -14,6 +14,7 @@ import { LatencyChart } from '../latency_chart'; import { TransactionBreakdownChart } from '../transaction_breakdown_chart'; import { TransactionColdstartRateChart } from '../transaction_coldstart_rate_chart'; import { FailedTransactionRateChart } from '../failed_transaction_rate_chart'; +import { TimeRangeComparisonType } from '../../../../../common/runtime_types/comparison_type_rt'; export function TransactionCharts({ kuery, @@ -23,6 +24,7 @@ export function TransactionCharts({ transactionName, isServerlessContext, comparisonEnabled, + comparisonType, }: { kuery: string; environment: string; @@ -31,6 +33,7 @@ export function TransactionCharts({ transactionName?: string; isServerlessContext?: boolean; comparisonEnabled?: boolean; + comparisonType?: TimeRangeComparisonType; }) { return ( <> @@ -68,6 +71,7 @@ export function TransactionCharts({ transactionName={transactionName} environment={environment} comparisonEnabled={comparisonEnabled} + comparisonType={comparisonType} /> ) : ( diff --git a/x-pack/plugins/apm/public/components/shared/charts/transaction_coldstart_rate_chart/index.tsx b/x-pack/plugins/apm/public/components/shared/charts/transaction_coldstart_rate_chart/index.tsx index 557d645083302a..b6558bea79d3ed 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/transaction_coldstart_rate_chart/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/transaction_coldstart_rate_chart/index.tsx @@ -20,9 +20,13 @@ import { useFetcher } from '../../../../hooks/use_fetcher'; import { useTheme } from '../../../../hooks/use_theme'; import { TimeseriesChart } from '../timeseries_chart'; import { useApmServiceContext } from '../../../../context/apm_service/use_apm_service_context'; +import { + getComparisonChartTheme, + getTimeRangeComparison, +} from '../../time_comparison/get_time_range_comparison'; import { useApmParams } from '../../../../hooks/use_apm_params'; import { useTimeRange } from '../../../../hooks/use_time_range'; -import { useComparison } from '../../../../hooks/use_comparison'; +import { TimeRangeComparisonType } from '../../../../../common/runtime_types/comparison_type_rt'; function yLabelFormat(y?: number | null) { return asPercent(y || 0, 1); @@ -35,6 +39,7 @@ interface Props { environment: string; transactionName?: string; comparisonEnabled?: boolean; + comparisonType?: TimeRangeComparisonType; } type ColdstartRate = @@ -58,6 +63,7 @@ export function TransactionColdstartRateChart({ kuery, transactionName, comparisonEnabled, + comparisonType, }: Props) { const theme = useTheme(); @@ -68,8 +74,13 @@ export function TransactionColdstartRateChart({ const { start, end } = useTimeRange({ rangeFrom, rangeTo }); const { serviceName, transactionType } = useApmServiceContext(); - const { comparisonChartTheme, comparisonStart, comparisonEnd } = - useComparison(); + const comparisonChartTheme = getComparisonChartTheme(); + const { comparisonStart, comparisonEnd } = getTimeRangeComparison({ + start, + end, + comparisonType, + comparisonEnabled, + }); const endpoint = transactionName ? ('GET /internal/apm/services/{serviceName}/transactions/charts/coldstart_rate_by_transaction_name' as const) diff --git a/x-pack/plugins/apm/public/hooks/use_comparison.ts b/x-pack/plugins/apm/public/hooks/use_comparison.ts deleted file mode 100644 index d9cb88f483e86f..00000000000000 --- a/x-pack/plugins/apm/public/hooks/use_comparison.ts +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { - getComparisonChartTheme, - getTimeRangeComparison, -} from '../components/shared/time_comparison/get_time_range_comparison'; -import { useLegacyUrlParams } from '../context/url_params_context/use_url_params'; -import { useApmParams } from './use_apm_params'; -import { useTimeRange } from './use_time_range'; - -export function useComparison() { - const comparisonChartTheme = getComparisonChartTheme(); - const { query } = useApmParams('/*'); - - if (!('rangeFrom' in query && 'rangeTo' in query)) { - throw new Error('rangeFrom or rangeTo not defined in query'); - } - - const { start, end } = useTimeRange({ - rangeFrom: query.rangeFrom, - rangeTo: query.rangeTo, - }); - - const { - urlParams: { comparisonType, comparisonEnabled }, - } = useLegacyUrlParams(); - - const { comparisonStart, comparisonEnd, offset } = getTimeRangeComparison({ - start, - end, - comparisonType, - comparisonEnabled, - }); - - return { - comparisonStart, - comparisonEnd, - offset, - comparisonChartTheme, - }; -} diff --git a/x-pack/plugins/apm/public/hooks/use_error_group_distribution_fetcher.tsx b/x-pack/plugins/apm/public/hooks/use_error_group_distribution_fetcher.tsx index ce5d327d5cebfe..62e2ab92c4fcc1 100644 --- a/x-pack/plugins/apm/public/hooks/use_error_group_distribution_fetcher.tsx +++ b/x-pack/plugins/apm/public/hooks/use_error_group_distribution_fetcher.tsx @@ -4,10 +4,10 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import { getTimeRangeComparison } from '../components/shared/time_comparison/get_time_range_comparison'; import { useApmParams } from './use_apm_params'; import { useFetcher } from './use_fetcher'; import { useTimeRange } from './use_time_range'; -import { useComparison } from './use_comparison'; export function useErrorGroupDistributionFetcher({ serviceName, @@ -21,12 +21,16 @@ export function useErrorGroupDistributionFetcher({ environment: string; }) { const { - query: { rangeFrom, rangeTo }, + query: { rangeFrom, rangeTo, comparisonEnabled, comparisonType }, } = useApmParams('/services/{serviceName}/errors'); const { start, end } = useTimeRange({ rangeFrom, rangeTo }); - const { comparisonStart, comparisonEnd } = useComparison(); - + const { comparisonStart, comparisonEnd } = getTimeRangeComparison({ + start, + end, + comparisonType, + comparisonEnabled, + }); const { data, status } = useFetcher( (callApmApi) => { if (start && end) { diff --git a/x-pack/plugins/apm/public/hooks/use_transaction_latency_chart_fetcher.ts b/x-pack/plugins/apm/public/hooks/use_transaction_latency_chart_fetcher.ts index b8d3ed1d8fef9e..8dbc1f3a475052 100644 --- a/x-pack/plugins/apm/public/hooks/use_transaction_latency_chart_fetcher.ts +++ b/x-pack/plugins/apm/public/hooks/use_transaction_latency_chart_fetcher.ts @@ -10,9 +10,9 @@ import { useFetcher } from './use_fetcher'; import { useLegacyUrlParams } from '../context/url_params_context/use_url_params'; import { useApmServiceContext } from '../context/apm_service/use_apm_service_context'; import { getLatencyChartSelector } from '../selectors/latency_chart_selectors'; +import { getTimeRangeComparison } from '../components/shared/time_comparison/get_time_range_comparison'; import { useTimeRange } from './use_time_range'; import { useApmParams } from './use_apm_params'; -import { useComparison } from './use_comparison'; export function useTransactionLatencyChartsFetcher({ kuery, @@ -27,13 +27,17 @@ export function useTransactionLatencyChartsFetcher({ } = useLegacyUrlParams(); const { - query: { rangeFrom, rangeTo }, + query: { rangeFrom, rangeTo, comparisonType, comparisonEnabled }, } = useApmParams('/services/{serviceName}'); const { start, end } = useTimeRange({ rangeFrom, rangeTo }); - const { comparisonStart, comparisonEnd } = useComparison(); - + const { comparisonStart, comparisonEnd } = getTimeRangeComparison({ + start, + end, + comparisonType, + comparisonEnabled, + }); const { data, error, status } = useFetcher( (callApmApi) => { if (