diff --git a/.betterer.results b/.betterer.results
index bc0dd082f2a..26eff410c4f 100644
--- a/.betterer.results
+++ b/.betterer.results
@@ -5021,9 +5021,7 @@ exports[`better eslint`] = {
[0, 0, 0, "Do not use any type assertions.", "1"],
[0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"],
[0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "4"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "5"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "6"]
+ [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "4"]
],
"public/app/features/explore/extensions/ConfirmNavigationModal.tsx:5381": [
[0, 0, 0, "No untranslated strings. Wrap text with ", "0"],
diff --git a/public/app/features/explore/TraceView/components/types/trace.ts b/public/app/features/explore/TraceView/components/types/trace.ts
index 0c38b7ba584..3c7dc4733e5 100644
--- a/public/app/features/explore/TraceView/components/types/trace.ts
+++ b/public/app/features/explore/TraceView/components/types/trace.ts
@@ -29,7 +29,7 @@ export type TraceProcess = {
};
export type TraceSpanReference = {
- refType: 'CHILD_OF' | 'FOLLOWS_FROM';
+ refType: 'CHILD_OF' | 'FOLLOWS_FROM' | 'EXTERNAL';
// eslint-disable-next-line no-use-before-define
span?: TraceSpan | null | undefined;
spanID: string;
diff --git a/public/app/features/explore/TraceView/createSpanLink.tsx b/public/app/features/explore/TraceView/createSpanLink.tsx
index 43024dd7cd7..662876c3b21 100644
--- a/public/app/features/explore/TraceView/createSpanLink.tsx
+++ b/public/app/features/explore/TraceView/createSpanLink.tsx
@@ -29,6 +29,7 @@ import { ExploreFieldLinkModel, getFieldLinksForExplore, getVariableUsageInfo }
import { SpanLinkDef, SpanLinkFunc, Trace, TraceSpan } from './components';
import { SpanLinkType } from './components/types/links';
+import { TraceSpanReference } from './components/types/trace';
/**
* This is a factory for the link creator. It returns the function mainly so it can return undefined in which case
@@ -323,11 +324,12 @@ function legacyCreateSpanLinkFactory(
}
const link = createFocusSpanLink(reference.traceID, reference.spanID);
+ const title = getReferenceTitle(reference);
links!.push({
href: link.href,
- title: reference.span ? reference.span.operationName : 'View linked span',
- content: ,
+ title,
+ content: ,
onClick: link.onClick,
field: link.origin,
type: SpanLinkType.Traces,
@@ -338,11 +340,12 @@ function legacyCreateSpanLinkFactory(
if (span.subsidiarilyReferencedBy && createFocusSpanLink) {
for (const reference of span.subsidiarilyReferencedBy) {
const link = createFocusSpanLink(reference.traceID, reference.spanID);
+ const title = getReferenceTitle(reference);
links!.push({
href: link.href,
- title: reference.span ? reference.span.operationName : 'View linked span',
- content: ,
+ title,
+ content: ,
onClick: link.onClick,
field: link.origin,
type: SpanLinkType.Traces,
@@ -366,6 +369,14 @@ function legacyCreateSpanLinkFactory(
};
}
+const getReferenceTitle = (reference: TraceSpanReference) => {
+ let title = reference.span ? reference.span.operationName : 'View linked span';
+ if (reference.refType === 'EXTERNAL') {
+ title = 'View linked span';
+ }
+ return title;
+};
+
function getQueryForLoki(
span: TraceSpan,
options: TraceToLogsOptionsV2,