diff --git a/packages/jaeger-ui/index.html b/packages/jaeger-ui/index.html
index 30a2c16e6a..580592276c 100644
--- a/packages/jaeger-ui/index.html
+++ b/packages/jaeger-ui/index.html
@@ -45,6 +45,7 @@
window.isUserDefinedJaegerQueryURL;
window.staticPath;
window.enableZoomControls;
+ window.platform;
diff --git a/packages/jaeger-ui/src/api/digma/actions.ts b/packages/jaeger-ui/src/api/digma/actions.ts
index 72aea78508..ec97641f76 100644
--- a/packages/jaeger-ui/src/api/digma/actions.ts
+++ b/packages/jaeger-ui/src/api/digma/actions.ts
@@ -1,3 +1,5 @@
+import { addActionPrefix } from './addActionPrefix';
+
export const actions = {
GO_TO_SPAN: 'GO_TO_SPAN',
GO_TO_INSIGHTS: 'GO_TO_INSIGHTS',
@@ -5,3 +7,9 @@ export const actions = {
SET_SPANS_DATA: 'SET_SPANS_DATA',
CLEAR: 'CLEAR',
};
+
+const GLOBAL_ACTION_PREFIX = 'GLOBAL';
+
+export const globalActions = addActionPrefix(GLOBAL_ACTION_PREFIX, {
+ OPEN_URL_IN_DEFAULT_BROWSER: 'OPEN_URL_IN_DEFAULT_BROWSER',
+});
diff --git a/packages/jaeger-ui/src/api/digma/addActionPrefix.ts b/packages/jaeger-ui/src/api/digma/addActionPrefix.ts
new file mode 100644
index 0000000000..dccd2cab9d
--- /dev/null
+++ b/packages/jaeger-ui/src/api/digma/addActionPrefix.ts
@@ -0,0 +1,19 @@
+import { isString } from '../../utils/ts/typeGuards/isString';
+
+type PrefixedMap = Record;
+
+export const addActionPrefix = >(
+ prefix: string,
+ actions: T,
+ separator?: string
+): PrefixedMap => {
+ const res = {} as PrefixedMap;
+
+ Object.entries(actions).forEach(([key, value]) => {
+ const prop = key as keyof T;
+
+ res[prop] = `${prefix}${isString(separator) ? separator : '/'}${value}`;
+ });
+
+ return res;
+};
diff --git a/packages/jaeger-ui/src/components/TracePage/TracePageHeader/TracePageHeader.tsx b/packages/jaeger-ui/src/components/TracePage/TracePageHeader/TracePageHeader.tsx
index 7cf7f9471f..bcfcd54987 100644
--- a/packages/jaeger-ui/src/components/TracePage/TracePageHeader/TracePageHeader.tsx
+++ b/packages/jaeger-ui/src/components/TracePage/TracePageHeader/TracePageHeader.tsx
@@ -39,6 +39,7 @@ import { getTraceLinks } from '../../../model/link-patterns';
import './TracePageHeader.css';
import ExternalLinks from '../../common/ExternalLinks';
import ZoomControls from './ZoomControls';
+import { globalActions } from '../../../api/digma/actions';
type TracePageHeaderEmbedProps = {
canCollapse: boolean;
@@ -156,6 +157,16 @@ export function TracePageHeaderFn(props: TracePageHeaderEmbedProps & { forwarded
);
+ const handleStandaloneLinkClick = (e: React.MouseEvent) => {
+ e.preventDefault();
+ window.sendMessageToDigma({
+ action: globalActions.OPEN_URL_IN_DEFAULT_BROWSER,
+ payload: {
+ url: `${window.apiBaseUrl}${window.location.pathname}${window.location.search}`,
+ },
+ });
+ };
+
return (
@@ -201,7 +212,11 @@ export function TracePageHeaderFn(props: TracePageHeaderEmbedProps & { forwarded
)}
{window.enableZoomControls && }
- {showStandaloneLink && (
+ {showStandaloneLink && window.platform === 'JetBrains' ? (
+
+
+
+ ) : (