diff --git a/public/app/plugins/panel/canvas/ConnectionSVG.tsx b/public/app/plugins/panel/canvas/ConnectionSVG.tsx index d1c1e5f7e6b..6c54415f3f7 100644 --- a/public/app/plugins/panel/canvas/ConnectionSVG.tsx +++ b/public/app/plugins/panel/canvas/ConnectionSVG.tsx @@ -1,5 +1,5 @@ import { css } from '@emotion/css'; -import React, { useCallback, useEffect, useRef, useState } from 'react'; +import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { useStyles2 } from '@grafana/ui'; @@ -19,11 +19,14 @@ interface ConnectionInfo { info: CanvasConnection; } +let idCounter = 0; export const ConnectionSVG = ({ setSVGRef, setLineRef, scene }: Props) => { const styles = useStyles2(getStyles); + const headId = Date.now() + '_' + idCounter++; const CONNECTION_LINE_ID = 'connectionLineId'; - const CONNECTION_HEAD_ID = 'head'; + const CONNECTION_HEAD_ID = useMemo(() => `head-${headId}`, [headId]); + const EDITOR_HEAD_ID = useMemo(() => `editorHead-${headId}`, [headId]); const [selectedConnection, setSelectedConnection] = useState(undefined); @@ -117,7 +120,6 @@ export const ConnectionSVG = ({ setSVGRef, setLineRef, scene }: Props) => { } const parentBorderWidth = parseFloat(getComputedStyle(parent).borderWidth); - const sourceHorizontalCenter = sourceRect.left - parentRect.left - parentBorderWidth + sourceRect.width / 2; const sourceVerticalCenter = sourceRect.top - parentRect.top - parentBorderWidth + sourceRect.height / 2; @@ -200,7 +202,7 @@ export const ConnectionSVG = ({ setSVGRef, setLineRef, scene }: Props) => { { - + {renderConnections()}