From f0a4da71817cb322760356cbc1db6cb3254e7a72 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/6] 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 fd4000b45af884a6ad71155696bb333d7c312f0b 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/6] 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 4ccfb9054cc422b5bb1ddaa4b95e730a579f1c49 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/6] 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 44421ee41b99bb5fd36ddc6558a836dd208d00ef 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/6] 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]; } From 9f70475c0ab2e174b0d43f6f8f4f088712a99ba5 Mon Sep 17 00:00:00 2001 From: George Gritsouk <989898+gggritso@users.noreply.github.com> Date: Sun, 5 Oct 2025 20:26:33 -0400 Subject: [PATCH 5/6] Remove unused import --- static/app/views/insights/common/queries/useSortedTimeSeries.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/static/app/views/insights/common/queries/useSortedTimeSeries.tsx b/static/app/views/insights/common/queries/useSortedTimeSeries.tsx index f4958a5b75e643..185f09723e7ff5 100644 --- a/static/app/views/insights/common/queries/useSortedTimeSeries.tsx +++ b/static/app/views/insights/common/queries/useSortedTimeSeries.tsx @@ -29,7 +29,6 @@ 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'; From d74cc70fac53200af0b76f7270f0ad456f66af00 Mon Sep 17 00:00:00 2001 From: George Gritsouk <989898+gggritso@users.noreply.github.com> Date: Sun, 5 Oct 2025 20:28:41 -0400 Subject: [PATCH 6/6] 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 185f09723e7ff5..9ea96dd1e4187c 100644 --- a/static/app/views/insights/common/queries/useSortedTimeSeries.tsx +++ b/static/app/views/insights/common/queries/useSortedTimeSeries.tsx @@ -291,5 +291,5 @@ export function convertEventsStatsToTimeSeriesData( delayedTimeSeries.meta.order = order; } - return [timeSeries.meta.order ?? 0, delayedTimeSeries]; + return [delayedTimeSeries.meta.order ?? 0, delayedTimeSeries]; }