Skip to content

Commit 9109e66

Browse files
authored
1 parent 3d1fe27 commit 9109e66

File tree

3 files changed

+37
-5
lines changed

3 files changed

+37
-5
lines changed

static/app/utils/analytics/ddmAnalyticsEvents.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export type DDMEventParameters = {
77
source: 'global' | 'widget';
88
};
99
'ddm.open-onboarding': {
10-
source: 'onboarding_panel' | 'header';
10+
source: 'onboarding_panel' | 'header' | 'banner';
1111
};
1212
'ddm.opt_in_modal_closed': {
1313
source: 'im_in' | 'learn_more' | 'close_button';

static/app/views/metrics/layout.tsx

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import {Fragment, memo, useCallback} from 'react';
2+
import {useTheme} from '@emotion/react';
23
import styled from '@emotion/styled';
34
import * as Sentry from '@sentry/react';
45

56
import emptyStateImg from 'sentry-images/spot/custom-metrics-empty-state.svg';
67

78
import FeatureBadge from 'sentry/components/badge/featureBadge';
9+
import Banner from 'sentry/components/banner';
810
import {Button} from 'sentry/components/button';
911
import ButtonBar from 'sentry/components/buttonBar';
1012
import FloatingFeedbackWidget from 'sentry/components/feedback/widget/floatingFeedbackWidget';
@@ -21,8 +23,11 @@ import {space} from 'sentry/styles/space';
2123
import {trackAnalytics} from 'sentry/utils/analytics';
2224
import {METRICS_DOCS_URL} from 'sentry/utils/metrics/constants';
2325
import useDismissAlert from 'sentry/utils/useDismissAlert';
26+
import {useLocalStorageState} from 'sentry/utils/useLocalStorageState';
27+
import useMedia from 'sentry/utils/useMedia';
2428
import useOrganization from 'sentry/utils/useOrganization';
2529
import usePageFilters from 'sentry/utils/usePageFilters';
30+
import BackgroundSpace from 'sentry/views/discover/backgroundSpace';
2631
import {useMetricsContext} from 'sentry/views/metrics/context';
2732
import {useMetricsOnboardingSidebar} from 'sentry/views/metrics/ddmOnboarding/useMetricsOnboardingSidebar';
2833
import {IntervalSelect} from 'sentry/views/metrics/intervalSelect';
@@ -42,9 +47,12 @@ export const MetricsLayout = memo(() => {
4247
useDismissAlert({
4348
key: `${organization.id}:${selectedProjects}:metrics-empty-state-dismissed`,
4449
});
50+
const theme = useTheme();
51+
const isSmallBanner = useMedia(`(max-width: ${theme.breakpoints.medium})`);
52+
const [isBannerDismissed] = useLocalStorageState('metrics-banner-dismissed', false);
4553

4654
const addCustomMetric = useCallback(
47-
(referrer: 'header' | 'onboarding_panel') => {
55+
(referrer: 'header' | 'onboarding_panel' | 'banner') => {
4856
Sentry.metrics.increment('ddm.add_custom_metric', 1, {
4957
tags: {
5058
referrer,
@@ -84,14 +92,35 @@ export const MetricsLayout = memo(() => {
8492
</Layout.HeaderContent>
8593
<Layout.HeaderActions>
8694
<PageHeaderActions
87-
showCustomMetricButton={hasCustomMetrics || isEmptyStateDismissed}
95+
showCustomMetricButton={
96+
hasCustomMetrics || (isEmptyStateDismissed && isBannerDismissed)
97+
}
8898
addCustomMetric={() => addCustomMetric('header')}
8999
/>
90100
</Layout.HeaderActions>
91101
</Layout.Header>
92102
<Layout.Body>
93103
<FloatingFeedbackWidget />
94104
<Layout.Main fullWidth>
105+
{isEmptyStateDismissed && !hasCustomMetrics && (
106+
<Banner
107+
title={t('Custom Metrics')}
108+
subtitle={t(
109+
"Track your system's behaviour and profit from the same powerful features as you do with errors, like alerting and dashboards."
110+
)}
111+
backgroundComponent={<BackgroundSpace />}
112+
dismissKey="metrics"
113+
>
114+
<Button
115+
size={isSmallBanner ? 'xs' : undefined}
116+
translucentBorder
117+
onClick={() => addCustomMetric('banner')}
118+
>
119+
{t('Set Up')}
120+
</Button>
121+
</Banner>
122+
)}
123+
95124
<FilterContainer>
96125
<PageFilterBar condensed>
97126
<ProjectPageFilter />
@@ -122,7 +151,10 @@ export const MetricsLayout = memo(() => {
122151
priority="primary"
123152
onClick={() => addCustomMetric('onboarding_panel')}
124153
>
125-
{t('Add Custom Metric')}
154+
{t('Set Up Custom Metric')}
155+
</Button>
156+
<Button href={METRICS_DOCS_URL} external>
157+
{t('Read Docs')}
126158
</Button>
127159
{hasPerformanceMetrics && (
128160
<Button onClick={viewPerformanceMetrics}>

static/app/views/metrics/pageHeaderActions.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ export function PageHeaderActions({showCustomMetricButton, addCustomMetric}: Pro
148148
<ButtonBar gap={1}>
149149
{showCustomMetricButton && (
150150
<Button priority="primary" onClick={() => addCustomMetric()} size="sm">
151-
{t('Set Up Custom Metrics')}
151+
{t('Add Custom Metrics')}
152152
</Button>
153153
)}
154154
<Button

0 commit comments

Comments
 (0)