Skip to content

Commit 1f8766c

Browse files
committed
Customise trace page title
We make trace pages have a title "<trace short ID>: <operation name> (<service name>)" to improve navigation when the user has many traces open in their browser. Signed-off-by: Anthony Ramine <nox@nox.paris>
1 parent 40e8324 commit 1f8766c

File tree

4 files changed

+15
-3
lines changed

4 files changed

+15
-3
lines changed

packages/jaeger-ui/src/components/TracePage/TracePageHeader/TracePageHeader.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import _values from 'lodash/values';
2020
import { IoArrowBack, IoFileTrayFull, IoChevronForward } from 'react-icons/io5';
2121
import { Link } from 'react-router-dom';
2222

23+
import { Helmet } from 'react-helmet';
2324
import AltViewOptions from './AltViewOptions';
2425
import KeyboardShortcutsHelp from './KeyboardShortcutsHelp';
2526
import SpanGraph from './SpanGraph';
@@ -148,15 +149,17 @@ export function TracePageHeaderFn(props: TracePageHeaderEmbedProps & { forwarded
148149
return { ...rest, value: renderer(trace) };
149150
});
150151

152+
const traceShortID = trace.traceID.slice(0, 7);
153+
151154
const title = (
152155
<h1 className={`TracePageHeader--title ${canCollapse ? 'is-collapsible' : ''}`}>
153-
<TraceName traceName={trace.traceName} />{' '}
154-
<small className="u-tx-muted">{trace.traceID.slice(0, 7)}</small>
156+
<TraceName traceName={trace.traceName} /> <small className="u-tx-muted">{traceShortID}</small>
155157
</h1>
156158
);
157159

158160
return (
159161
<header className="TracePageHeader">
162+
<Helmet title={`${traceShortID}: ${trace.tracePageTitle} — Jaeger UI`} />
160163
<div className="TracePageHeader--titleRow">
161164
{toSearch && (
162165
<Link className="TracePageHeader--back" to={toSearch}>

packages/jaeger-ui/src/model/trace-viewer.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,3 +70,9 @@ export function getTraceName(spans: Span[]): string {
7070

7171
return parts ? `${parts.serviceName}: ${parts.operationName}` : '';
7272
}
73+
74+
export function getTracePageTitle(spans: Span[]): string {
75+
const parts = getTracePageHeaderParts(spans);
76+
77+
return parts ? `${parts.operationName} (${parts.serviceName})` : '';
78+
}

packages/jaeger-ui/src/model/transform-trace-data.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import _isEqual from 'lodash/isEqual';
1616

1717
import { getTraceSpanIdsAsTree, TREE_ROOT_ID } from '../selectors/trace';
1818
import { getConfigValue } from '../utils/config/get-config';
19-
import { getTraceName } from './trace-viewer';
19+
import { getTraceName, getTracePageTitle } from './trace-viewer';
2020
import { KeyValuePair, Span, SpanData, Trace, TraceData } from '../types/trace';
2121
import TreeNode from '../utils/TreeNode';
2222

@@ -170,12 +170,14 @@ export default function transformTraceData(data: TraceData & { spans: SpanData[]
170170
spans.push(span);
171171
});
172172
const traceName = getTraceName(spans);
173+
const tracePageTitle = getTracePageTitle(spans);
173174
const services = Object.keys(svcCounts).map(name => ({ name, numberOfSpans: svcCounts[name] }));
174175
return {
175176
services,
176177
spans,
177178
traceID,
178179
traceName,
180+
tracePageTitle,
179181
// TODO why not store `tree` here for easier access to tree structure?
180182
// ...
181183
// Can't use spread operator for intersection types

packages/jaeger-ui/src/types/trace.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ export type Trace = TraceData & {
8181
spans: Span[];
8282
startTime: number;
8383
traceName: string;
84+
tracePageTitle: string;
8485
services: { name: string; numberOfSpans: number }[];
8586
};
8687

0 commit comments

Comments
 (0)