diff --git a/public/app/plugins/panel/state-timeline/StateTimelinePanel.tsx b/public/app/plugins/panel/state-timeline/StateTimelinePanel.tsx index 7e5c54b0c45..6c2fb9100e9 100755 --- a/public/app/plugins/panel/state-timeline/StateTimelinePanel.tsx +++ b/public/app/plugins/panel/state-timeline/StateTimelinePanel.tsx @@ -1,5 +1,5 @@ import React, { useCallback, useMemo } from 'react'; -import { DataFrame, PanelProps } from '@grafana/data'; +import { DataFrame, FieldType, PanelProps } from '@grafana/data'; import { TooltipPlugin, useTheme2, ZoomPlugin, usePanelContext } from '@grafana/ui'; import { TimelineMode, TimelineOptions } from './types'; import { TimelineChart } from './TimelineChart'; @@ -39,6 +39,12 @@ export const StateTimelinePanel: React.FC = ({ const renderCustomTooltip = useCallback( (alignedData: DataFrame, seriesIdx: number | null, datapointIdx: number | null) => { const data = frames ?? []; + // Count value fields in the state-timeline-ready frame + const valueFieldsCount = data.reduce( + (acc, frame) => acc + frame.fields.filter((field) => field.type !== FieldType.time).length, + 0 + ); + // Not caring about multi mode in StateTimeline if (seriesIdx === null || datapointIdx === null) { return null; @@ -51,7 +57,7 @@ export const StateTimelinePanel: React.FC = ({ * See https://github.com/grafana/support-escalations/issues/932 */ if ( - (!alignedData.meta?.transformations?.length && alignedData.fields.length - 1 !== data.length) || + (!alignedData.meta?.transformations?.length && alignedData.fields.length - 1 !== valueFieldsCount) || !alignedData.fields[seriesIdx] ) { return null;