Skip to content

Commit 635c5c3

Browse files
committed
breadcrumbs: add breadcrumb events
1 parent 7bfb714 commit 635c5c3

File tree

4 files changed

+34
-12
lines changed

4 files changed

+34
-12
lines changed

static/app/components/breadcrumbs.tsx

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,13 @@ import {Chevron} from 'sentry/components/chevron';
77
import type {LinkProps} from 'sentry/components/core/link';
88
import {Link} from 'sentry/components/core/link';
99
import GlobalSelectionLink from 'sentry/components/globalSelectionLink';
10+
import {trackAnalytics} from 'sentry/utils/analytics';
1011

1112
export interface Crumb {
1213
/**
1314
* Label of the crumb
1415
*/
15-
label: React.ReactNode;
16-
17-
/**
18-
* Component will try to come up with unique key, but you can provide your own
19-
* (used when mapping over crumbs)
20-
*/
21-
key?: string;
16+
label: NonNullable<React.ReactNode>;
2217

2318
/**
2419
* It will keep the page filter values (projects, environments, time) in the
@@ -77,12 +72,19 @@ interface BreadCrumbItemProps {
7772
}
7873

7974
function BreadCrumbItem(props: BreadCrumbItemProps) {
75+
function onBreadcrumbLinkClick() {
76+
if (props.crumb.to) {
77+
trackAnalytics('breadcrumbs.link.clicked', {organization: null});
78+
}
79+
}
80+
8081
if (props.crumb.to) {
8182
return (
8283
<BreadcrumbLink
8384
to={props.crumb.to}
8485
preservePageFilters={props.crumb.preservePageFilters}
8586
data-test-id="breadcrumb-link"
87+
onClick={onBreadcrumbLinkClick}
8688
>
8789
<Text as="span" variant="muted">
8890
{props.crumb.label}
@@ -91,16 +93,20 @@ function BreadCrumbItem(props: BreadCrumbItemProps) {
9193
);
9294
}
9395
return (
94-
<Flex data-test-id="breadcrumb-item" maxWidth="400px" align="center">
96+
<Flex
97+
data-test-id="breadcrumb-item"
98+
maxWidth="400px"
99+
align="center"
100+
onClick={onBreadcrumbLinkClick}
101+
>
95102
<Text as="span" ellipsis variant={props.variant}>
96103
{props.crumb.label}
97104
</Text>
98105
</Flex>
99106
);
100107
}
101108

102-
interface BreadcrumbLinkProps {
103-
to: LinkProps['to'];
109+
interface BreadcrumbLinkProps extends LinkProps {
104110
children?: React.ReactNode;
105111
preservePageFilters?: boolean;
106112
}

static/app/utils/analytics.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ import {
4040

4141
import type {AgentMonitoringEventParameters} from './analytics/agentMonitoringAnalyticsEvents';
4242
import {agentMonitoringEventMap} from './analytics/agentMonitoringAnalyticsEvents';
43+
import type {BreadcrumbsAnalyticsEventParameters} from './analytics/breadcrumbsAnalyticsEvents';
44+
import {breadcrumbsAnalyticsEventMap} from './analytics/breadcrumbsAnalyticsEvents';
4345
import type {CoreUIEventParameters} from './analytics/coreuiAnalyticsEvents';
4446
import {coreUIEventMap} from './analytics/coreuiAnalyticsEvents';
4547
import type {DashboardsEventParameters} from './analytics/dashboardsAnalyticsEvents';
@@ -98,6 +100,7 @@ interface EventParameters
98100
extends GrowthEventParameters,
99101
AgentMonitoringEventParameters,
100102
AlertsEventParameters,
103+
BreadcrumbsAnalyticsEventParameters,
101104
CoreUIEventParameters,
102105
DashboardsEventParameters,
103106
DiscoverEventParameters,
@@ -135,6 +138,7 @@ interface EventParameters
135138
const allEventMap: Record<string, string | null> = {
136139
...agentMonitoringEventMap,
137140
...alertsEventMap,
141+
...breadcrumbsAnalyticsEventMap,
138142
...coreUIEventMap,
139143
...dashboardsEventMap,
140144
...discoverEventMap,
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
export type BreadcrumbsAnalyticsEventParameters = {
2+
'breadcrumbs.link.clicked': {organization: null};
3+
'breadcrumbs.menu.clicked': {organization: null};
4+
};
5+
6+
export type BreadcrumbsAnalyticsKey = keyof BreadcrumbsAnalyticsEventParameters;
7+
8+
export const breadcrumbsAnalyticsEventMap: Record<
9+
BreadcrumbsAnalyticsKey,
10+
string | null
11+
> = {
12+
'breadcrumbs.link.clicked': 'Breadcrumbs: Link Clicked',
13+
'breadcrumbs.menu.clicked': 'Breadcrumbs: Menu Clicked',
14+
};

static/app/views/discover/landing.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,12 +187,10 @@ function DiscoverLanding() {
187187
<Breadcrumbs
188188
crumbs={[
189189
{
190-
key: 'discover-homepage',
191190
label: t('Discover'),
192191
to: getDiscoverLandingUrl(organization),
193192
},
194193
{
195-
key: 'discover-saved-queries',
196194
label: t('Saved Queries'),
197195
},
198196
]}

0 commit comments

Comments
 (0)