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' ? ( + + + + ) : (