diff --git a/packages/grafana-ui/src/components/VizTooltip/VizTooltipFooter.tsx b/packages/grafana-ui/src/components/VizTooltip/VizTooltipFooter.tsx index 1a9a3ff4e87..5713748baf1 100644 --- a/packages/grafana-ui/src/components/VizTooltip/VizTooltipFooter.tsx +++ b/packages/grafana-ui/src/components/VizTooltip/VizTooltipFooter.tsx @@ -6,14 +6,14 @@ import { Field, GrafanaTheme2, LinkModel } from '@grafana/data'; import { Button, ButtonProps, DataLinkButton, HorizontalGroup } from '..'; import { useStyles2 } from '../../themes'; -interface Props { +interface VizTooltipFooterProps { dataLinks: Array>; annotate?: () => void; } export const ADD_ANNOTATION_ID = 'add-annotation-button'; -export const VizTooltipFooter = ({ dataLinks, annotate }: Props) => { +export const VizTooltipFooter = ({ dataLinks, annotate }: VizTooltipFooterProps) => { const styles = useStyles2(getStyles); const renderDataLinks = () => { @@ -33,7 +33,7 @@ export const VizTooltipFooter = ({ dataLinks, annotate }: Props) => { return (
{dataLinks.length > 0 &&
{renderDataLinks()}
} - {annotate && ( + {annotate != null && (
))} - {isPinned && } + {(links.length > 0 || isPinned) && ( + + )}
); }; diff --git a/public/app/plugins/panel/state-timeline/StateTimelineTooltip2.tsx b/public/app/plugins/panel/state-timeline/StateTimelineTooltip2.tsx index 98b6a6494d1..686a67331d5 100644 --- a/public/app/plugins/panel/state-timeline/StateTimelineTooltip2.tsx +++ b/public/app/plugins/panel/state-timeline/StateTimelineTooltip2.tsx @@ -83,7 +83,9 @@ export const StateTimelineTooltip2 = ({
- {isPinned && } + {(links.length > 0 || isPinned) && ( + + )}
); diff --git a/public/app/plugins/panel/status-history/utils.ts b/public/app/plugins/panel/status-history/utils.ts index 4f26288ba03..735ef03a5ef 100644 --- a/public/app/plugins/panel/status-history/utils.ts +++ b/public/app/plugins/panel/status-history/utils.ts @@ -1,13 +1,13 @@ import { Field, LinkModel } from '@grafana/data'; -export const getDataLinks = (field: Field, datapointIdx: number) => { +export const getDataLinks = (field: Field, rowIdx: number) => { const links: Array> = []; const linkLookup = new Set(); if (field.getLinks) { - const v = field.values[datapointIdx]; + const v = field.values[rowIdx]; const disp = field.display ? field.display(v) : { text: `${v}`, numeric: +v }; - field.getLinks({ calculatedValue: disp, valueRowIndex: datapointIdx }).forEach((link) => { + field.getLinks({ calculatedValue: disp, valueRowIndex: rowIdx }).forEach((link) => { const key = `${link.title}/${link.href}`; if (!linkLookup.has(key)) { links.push(link); diff --git a/public/app/plugins/panel/timeseries/TimeSeriesTooltip.tsx b/public/app/plugins/panel/timeseries/TimeSeriesTooltip.tsx index 5c3cef5f108..d703ba1719e 100644 --- a/public/app/plugins/panel/timeseries/TimeSeriesTooltip.tsx +++ b/public/app/plugins/panel/timeseries/TimeSeriesTooltip.tsx @@ -77,7 +77,9 @@ export const TimeSeriesTooltip = ({
- {isPinned && } + {(links.length > 0 || isPinned) && ( + + )}
); diff --git a/public/app/plugins/panel/xychart/XYChartTooltip.tsx b/public/app/plugins/panel/xychart/XYChartTooltip.tsx index 2a72c99138b..5494b3a673c 100644 --- a/public/app/plugins/panel/xychart/XYChartTooltip.tsx +++ b/public/app/plugins/panel/xychart/XYChartTooltip.tsx @@ -1,14 +1,14 @@ import React from 'react'; -import { DataFrame, Field, getFieldDisplayName, LinkModel } from '@grafana/data'; +import { DataFrame, Field, getFieldDisplayName } from '@grafana/data'; import { alpha } from '@grafana/data/src/themes/colorManipulator'; import { useStyles2 } from '@grafana/ui'; import { VizTooltipContent } from '@grafana/ui/src/components/VizTooltip/VizTooltipContent'; import { VizTooltipFooter } from '@grafana/ui/src/components/VizTooltip/VizTooltipFooter'; import { VizTooltipHeader } from '@grafana/ui/src/components/VizTooltip/VizTooltipHeader'; import { ColorIndicator, VizTooltipItem } from '@grafana/ui/src/components/VizTooltip/types'; -import { getTitleFromHref } from 'app/features/explore/utils/links'; +import { getDataLinks } from '../status-history/utils'; import { getStyles } from '../timeseries/TimeSeriesTooltip'; import { Options } from './panelcfg.gen'; @@ -83,27 +83,13 @@ export const XYChartTooltip = ({ dataIdxs, seriesIdx, data, allSeries, dismiss, }); } - const getLinks = (): Array> => { - let links: Array> = []; - if (yField.getLinks) { - const v = yField.values[rowIndex]; - const disp = yField.display ? yField.display(v) : { text: `${v}`, numeric: +v }; - links = yField.getLinks({ calculatedValue: disp, valueRowIndex: rowIndex }).map((linkModel) => { - if (!linkModel.title) { - linkModel.title = getTitleFromHref(linkModel.href); - } - - return linkModel; - }); - } - return links; - }; + const links = getDataLinks(yField, rowIndex); return (
- {isPinned && } + {(links.length > 0 || isPinned) && }
); };