From def449293b5e8aad1eb1a57c528ea255c99e5d61 Mon Sep 17 00:00:00 2001 From: Galen Kistler <109082771+gtk-grafana@users.noreply.github.com> Date: Tue, 21 Oct 2025 21:23:50 +0200 Subject: [PATCH] Annotations: Datalink support in annotation tooltips (#112129) Co-authored-by: Leon Sorokin --- .../timeseries/plugins/AnnotationsPlugin2.tsx | 1 + .../plugins/annotations2/AnnotationMarker2.tsx | 14 +++++++++++++- .../plugins/annotations2/AnnotationTooltip2.tsx | 8 ++++++-- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/public/app/plugins/panel/timeseries/plugins/AnnotationsPlugin2.tsx b/public/app/plugins/panel/timeseries/plugins/AnnotationsPlugin2.tsx index f01152e2f88..b45deb6b626 100644 --- a/public/app/plugins/panel/timeseries/plugins/AnnotationsPlugin2.tsx +++ b/public/app/plugins/panel/timeseries/plugins/AnnotationsPlugin2.tsx @@ -249,6 +249,7 @@ export const AnnotationsPlugin2 = ({ markers.push( ; annoIdx: number; style: React.CSSProperties | null; @@ -28,6 +30,7 @@ const STATE_EDITING = 1; const STATE_HOVERED = 2; export const AnnotationMarker2 = ({ + frame, annoVals, annoIdx, className, @@ -48,6 +51,14 @@ export const AnnotationMarker2 = ({ strategy: 'fixed', }); + const links: LinkModel[] = []; + + if (STATE_HOVERED) { + frame.fields.forEach((field) => { + links.push(...getDataLinks(field, annoIdx)); + }); + } + const contents = state === STATE_HOVERED ? ( setState(STATE_EDITING)} + links={links} /> ) : state === STATE_EDITING ? ( void; + links?: LinkModel[]; } const retFalse = () => false; -export const AnnotationTooltip2 = ({ annoVals, annoIdx, timeZone, onEdit }: Props) => { +export const AnnotationTooltip2 = ({ annoVals, annoIdx, timeZone, onEdit, links = [] }: Props) => { const annoId = annoVals.id?.[annoIdx]; const styles = useStyles2(getStyles); @@ -107,6 +109,8 @@ export const AnnotationTooltip2 = ({ annoVals, annoIdx, timeZone, onEdit }: Prop + + {links.length > 0 && } ); };