From fe083aa6940c54cb58b9778a9f9b0a26d19e9dbc Mon Sep 17 00:00:00 2001 From: Everett Date: Thu, 13 Feb 2020 14:35:48 -0500 Subject: [PATCH] Add ga dimension for config cookie (#515) * Add ga dimension for config cookie * Update cookiesToDimensions to an array * Move when cookie dimensions are set Signed-off-by: Everett Ross --- packages/jaeger-ui/src/types/config.tsx | 4 ++++ packages/jaeger-ui/src/utils/tracking/index.test.js | 2 +- packages/jaeger-ui/src/utils/tracking/index.tsx | 9 +++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/jaeger-ui/src/types/config.tsx b/packages/jaeger-ui/src/types/config.tsx index 97c0ef3032..b700c8a45e 100644 --- a/packages/jaeger-ui/src/types/config.tsx +++ b/packages/jaeger-ui/src/types/config.tsx @@ -46,6 +46,10 @@ export type Config = { scripts?: TScript[]; topTagPrefixes?: string[]; tracking?: { + cookieToDimension?: { + cookie: string; + dimension: string; + }[]; gaID: string | TNil; trackErrors: boolean | TNil; }; diff --git a/packages/jaeger-ui/src/utils/tracking/index.test.js b/packages/jaeger-ui/src/utils/tracking/index.test.js index 1ca9cdeb79..b0fb289556 100644 --- a/packages/jaeger-ui/src/utils/tracking/index.test.js +++ b/packages/jaeger-ui/src/utils/tracking/index.test.js @@ -29,7 +29,7 @@ import ReactGA from 'react-ga'; import * as tracking from './index'; let longStr = '---'; -function getStr(len: number) { +function getStr(len) { while (longStr.length < len) { longStr += longStr.slice(0, len - longStr.length); } diff --git a/packages/jaeger-ui/src/utils/tracking/index.tsx b/packages/jaeger-ui/src/utils/tracking/index.tsx index 3876517126..d808a66101 100644 --- a/packages/jaeger-ui/src/utils/tracking/index.tsx +++ b/packages/jaeger-ui/src/utils/tracking/index.tsx @@ -153,6 +153,15 @@ if (isGaEnabled) { appName: 'Jaeger UI', appVersion: versionLong, }); + const cookiesToDimensions = _get(config, 'tracking.cookiesToDimensions'); + if (cookiesToDimensions) { + cookiesToDimensions.forEach(({ cookie, dimension }: { cookie: string; dimension: string }) => { + const match = ` ${document.cookie}`.match(new RegExp(`[; ]${cookie}=([^\\s;]*)`)); + if (match) ReactGA.set({ [dimension]: match[1] }); + // eslint-disable-next-line no-console + else console.warn(`${cookie} not present in cookies, could not set dimension: ${dimension}`); + }); + } if (isErrorsEnabled) { const ravenConfig: RavenOptions = { autoBreadcrumbs: {