From 3b48a2bf61f5459e196205e0fefa0a9a9013557d Mon Sep 17 00:00:00 2001 From: George Gritsouk <989898+gggritso@users.noreply.github.com> Date: Fri, 3 Oct 2025 16:57:26 -0400 Subject: [PATCH 1/4] Always assign `isOther` It should always be present for `groupBy` queries. --- .../views/insights/common/queries/useSortedTimeSeries.tsx | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/static/app/views/insights/common/queries/useSortedTimeSeries.tsx b/static/app/views/insights/common/queries/useSortedTimeSeries.tsx index 48d0a4a9285d66..6f77c349175a32 100644 --- a/static/app/views/insights/common/queries/useSortedTimeSeries.tsx +++ b/static/app/views/insights/common/queries/useSortedTimeSeries.tsx @@ -199,9 +199,7 @@ export function transformToSeriesMap( const groupByFields = fields.filter(field => !yAxis.includes(field)); const groupBy = parseGroupBy(groupName, groupByFields); timeSeries.groupBy = groupBy; - if (groupName === 'Other') { - timeSeries.meta.isOther = true; - } + timeSeries.meta.isOther = groupName === 'Other'; } allTimeSeries.push(timeSeries); @@ -231,9 +229,7 @@ export function transformToSeriesMap( const groupByFields = fields.filter(field => !yAxis.includes(field)); const groupBy = parseGroupBy(groupName, groupByFields); timeSeries.groupBy = groupBy; - if (groupName === 'Other') { - timeSeries.meta.isOther = true; - } + timeSeries.meta.isOther = groupName === 'Other'; } allTimeSeries.push(timeSeries); From f58ffff31a20538c6206cff7a1f2b8cc4270637e Mon Sep 17 00:00:00 2001 From: George Gritsouk <989898+gggritso@users.noreply.github.com> Date: Fri, 3 Oct 2025 16:58:28 -0400 Subject: [PATCH 2/4] Use `groupData` for order --- .../app/views/insights/common/queries/useSortedTimeSeries.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/app/views/insights/common/queries/useSortedTimeSeries.tsx b/static/app/views/insights/common/queries/useSortedTimeSeries.tsx index 6f77c349175a32..81e4c3e35013c2 100644 --- a/static/app/views/insights/common/queries/useSortedTimeSeries.tsx +++ b/static/app/views/insights/common/queries/useSortedTimeSeries.tsx @@ -222,7 +222,7 @@ export function transformToSeriesMap( const [, timeSeries] = convertEventsStatsToTimeSeriesData( axis, seriesData, - seriesData.order + groupData.order as unknown as number // `order` is always present ); if (fields) { From 7a55614edea3bbc032d74d6c1efbf5c76d4d1bb3 Mon Sep 17 00:00:00 2001 From: George Gritsouk <989898+gggritso@users.noreply.github.com> Date: Fri, 3 Oct 2025 17:15:04 -0400 Subject: [PATCH 3/4] Mark delayed data --- .../common/queries/useSortedTimeSeries.tsx | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/static/app/views/insights/common/queries/useSortedTimeSeries.tsx b/static/app/views/insights/common/queries/useSortedTimeSeries.tsx index 81e4c3e35013c2..ad942001165f15 100644 --- a/static/app/views/insights/common/queries/useSortedTimeSeries.tsx +++ b/static/app/views/insights/common/queries/useSortedTimeSeries.tsx @@ -15,6 +15,7 @@ import { import {DiscoverDatasets} from 'sentry/utils/discover/types'; import {intervalToMilliseconds} from 'sentry/utils/duration/intervalToMilliseconds'; import {getTimeSeriesInterval} from 'sentry/utils/timeSeries/getTimeSeriesInterval'; +import {markDelayedData} from 'sentry/utils/timeSeries/markDelayedData'; import {parseGroupBy} from 'sentry/utils/timeSeries/parseGroupBy'; import type {MutableSearch} from 'sentry/utils/tokenizeSearch'; import {useLocation} from 'sentry/utils/useLocation'; @@ -28,6 +29,7 @@ import { import type { TimeSeries, TimeSeriesItem, + TimeSeriesMeta, } from 'sentry/views/dashboards/widgets/common/types'; import type {SamplingMode} from 'sentry/views/explore/hooks/useProgressiveQuery'; import {FALLBACK_SERIES_NAME} from 'sentry/views/explore/settings'; @@ -273,22 +275,22 @@ export function convertEventsStatsToTimeSeriesData( } ); - const interval = getTimeSeriesInterval(values); - - const serie: TimeSeries = { - yAxis: yAxis ?? FALLBACK_SERIES_NAME, + const timeSeries: TimeSeries = { values, + yAxis: yAxis ?? FALLBACK_SERIES_NAME, meta: { valueType: seriesData.meta?.fields?.[yAxis]!, valueUnit: seriesData.meta?.units?.[yAxis] as DataUnit, - interval, + interval: getTimeSeriesInterval(values), dataScanned: seriesData.meta?.dataScanned, }, }; + const delayedTimeSeries = markDelayedData(timeSeries, 90); + if (defined(order)) { - serie.meta.order = order; + delayedTimeSeries.meta.order = order; } - return [serie.meta.order ?? 0, serie]; + return [timeSeries.meta.order ?? 0, timeSeries]; } From 1721cc93f7459924a0ec2d3cec493ef0175709e3 Mon Sep 17 00:00:00 2001 From: George Gritsouk <989898+gggritso@users.noreply.github.com> Date: Fri, 3 Oct 2025 17:17:12 -0400 Subject: [PATCH 4/4] Whoops --- .../app/views/insights/common/queries/useSortedTimeSeries.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/app/views/insights/common/queries/useSortedTimeSeries.tsx b/static/app/views/insights/common/queries/useSortedTimeSeries.tsx index ad942001165f15..f4958a5b75e643 100644 --- a/static/app/views/insights/common/queries/useSortedTimeSeries.tsx +++ b/static/app/views/insights/common/queries/useSortedTimeSeries.tsx @@ -292,5 +292,5 @@ export function convertEventsStatsToTimeSeriesData( delayedTimeSeries.meta.order = order; } - return [timeSeries.meta.order ?? 0, timeSeries]; + return [timeSeries.meta.order ?? 0, delayedTimeSeries]; }