Skip to content

Commit 678aa10

Browse files
committed
added the rest of analytics
1 parent b7d285d commit 678aa10

File tree

8 files changed

+72
-6
lines changed

8 files changed

+72
-6
lines changed

packages/compass-components/src/components/accordion.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,14 @@ interface AccordionProps extends React.HTMLProps<HTMLButtonElement> {
5252
hintText?: string;
5353
open?: boolean;
5454
setOpen?: (newValue: boolean) => void;
55+
onOpenCallback?: () => void;
5556
}
5657
function Accordion({
5758
text,
5859
hintText,
5960
open: _open,
6061
setOpen: _setOpen,
62+
onOpenCallback,
6163
...props
6264
}: React.PropsWithChildren<AccordionProps>): React.ReactElement {
6365
const darkMode = useDarkMode();
@@ -70,6 +72,9 @@ function Accordion({
7072
setOpenRef.current?.(newValue);
7173
return newValue;
7274
});
75+
if (typeof onOpenCallback === 'function') {
76+
onOpenCallback();
77+
}
7378
}, []);
7479
const regionId = useId();
7580
const labelId = useId();

packages/compass-indexes/src/components/create-index-actions/create-index-actions.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { connect } from 'react-redux';
44
import { areAllFieldsFilledIn } from '../../utils/create-index-modal-validation';
55
import type { Field, Tab } from '../../modules/create-index';
66
import type { RootState } from '../../modules';
7+
import { useTelemetry } from '@mongodb-js/compass-telemetry/provider';
78

89
const containerStyles = css({
910
display: 'flex',
@@ -45,6 +46,8 @@ function CreateIndexActions({
4546
showIndexesGuidanceVariant: boolean;
4647
indexSuggestions: Record<string, number> | null;
4748
}) {
49+
const track = useTelemetry();
50+
4851
let isCreateIndexButtonDisabled = false;
4952

5053
if (showIndexesGuidanceVariant) {
@@ -81,7 +84,12 @@ function CreateIndexActions({
8184

8285
<Button
8386
data-testid="create-index-actions-cancel-button"
84-
onClick={onCancelCreateIndexClick}
87+
onClick={() => {
88+
onCancelCreateIndexClick();
89+
track('Cancel Button Clicked', {
90+
context: 'Create Index Modal',
91+
});
92+
}}
8593
>
8694
Cancel
8795
</Button>

packages/compass-indexes/src/components/create-index-fields.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ function CreateIndexFields({
6464
onSelectFieldNameClick,
6565
onSelectFieldTypeClick,
6666
}: CreateIndexFieldsProps): React.ReactElement {
67+
const track = useTelemetry();
68+
6769
const [indexTypes, selectorWidth] = useMemo(() => {
6870
const serverSupportsColumnStoreIndex =
6971
hasColumnstoreIndexesSupport(serverVersion);
@@ -89,15 +91,15 @@ function CreateIndexFields({
8991
[onSelectFieldNameClick]
9092
);
9193

92-
const comboboxOptions = schemaFields.map((value) => ({ value }));
93-
const track = useTelemetry();
9494
const handleOnAddFieldClick = useCallback(() => {
9595
onAddFieldClick();
9696
track('New Index Field Added', {
9797
context: 'Create Index Modal',
9898
});
9999
}, []);
100100

101+
const comboboxOptions = schemaFields.map((value) => ({ value }));
102+
101103
return (
102104
<ListEditor
103105
items={fields}

packages/compass-indexes/src/components/create-index-form/create-index-form.tsx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import IndexFlowSection from './index-flow-section';
2222
import QueryFlowSection from './query-flow-section';
2323
import toNS from 'mongodb-ns';
2424
import type { Document } from 'mongodb';
25+
import { useTelemetry } from '@mongodb-js/compass-telemetry/provider';
2526

2627
const createIndexModalFieldsStyles = css({
2728
margin: `${spacing[600]}px 0 ${spacing[800]}px 0`,
@@ -74,6 +75,9 @@ function CreateIndexForm({
7475
);
7576
const showRollingIndexOption =
7677
rollingIndexesFeatureEnabled && supportsRollingIndexes;
78+
79+
const track = useTelemetry();
80+
7781
const schemaFields = useAutocompleteFields(namespace);
7882
const schemaFieldNames = useMemo(() => {
7983
return schemaFields
@@ -108,6 +112,13 @@ function CreateIndexForm({
108112
data-testid="create-index-form-flows"
109113
id="create-index-form-flows"
110114
onChange={(e) => {
115+
const tabName =
116+
e.target.value === 'IndexFlow'
117+
? 'Start with an Index'
118+
: 'Start with a Query';
119+
track(`${tabName} Tab Clicked`, {
120+
context: 'Create Index Modal',
121+
});
111122
onTabClick(e.target.value as Tab);
112123
}}
113124
value={currentTab}
@@ -173,6 +184,11 @@ function CreateIndexForm({
173184
<Accordion
174185
data-testid="create-index-modal-toggle-options"
175186
text={showIndexesGuidanceVariant ? 'Index Options' : 'Options'}
187+
onOpenCallback={() => {
188+
track('Options Clicked', {
189+
context: 'Create Index Modal',
190+
});
191+
}}
176192
>
177193
<div
178194
data-testid="create-index-modal-options"

packages/compass-indexes/src/components/create-index-form/index-flow-section.tsx

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,10 @@ const IndexFlowSection = ({
210210
return { [field.name]: index + 1 };
211211
});
212212

213+
track('Covered Queries Button Clicked', {
214+
context: 'Create Index Modal',
215+
});
216+
213217
try {
214218
setCoveredQueriesObj({
215219
coveredQueries: generateCoveredQueries(coveredQueriesArr, track),
@@ -251,7 +255,12 @@ const IndexFlowSection = ({
251255
size="xsmall"
252256
id="code-equivalent-toggle"
253257
aria-label="Toggle Code Equivalent"
254-
onChange={(value) => setIsCodeEquivalentToggleChecked(value)}
258+
onChange={(value) => {
259+
setIsCodeEquivalentToggleChecked(value);
260+
track('Code Equivalent Toggled', {
261+
context: 'Create Index Modal',
262+
});
263+
}}
255264
checked={isCodeEquivalentToggleChecked}
256265
disabled={!areAllFieldsFilledIn}
257266
/>
@@ -336,7 +345,14 @@ const IndexFlowSection = ({
336345
{optimalQueries}
337346
</Body>
338347
</p>
339-
<Link href="https://www.mongodb.com/docs/manual/core/query-optimization/">
348+
<Link
349+
href="https://www.mongodb.com/docs/manual/core/query-optimization/"
350+
onClick={() => {
351+
track('Covered Queries Learn More Clicked', {
352+
context: 'Create Index Modal',
353+
});
354+
}}
355+
>
340356
Learn More
341357
</Link>
342358
</>

packages/compass-indexes/src/components/create-index-form/mdb-code-viewer.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { Code, Link, css, spacing } from '@mongodb-js/compass-components';
2+
import { useTelemetry } from '@mongodb-js/compass-telemetry/provider';
23
import React from 'react';
34

45
const containerStyles = css({
@@ -62,6 +63,7 @@ const MDBCodeViewer = ({
6263
indexNameTypeMap: Record<string, string | number>;
6364
dataTestId?: string;
6465
}) => {
66+
const track = useTelemetry();
6567
const GeneratedCode = generateCode({
6668
dbName,
6769
collectionName,
@@ -79,6 +81,11 @@ const MDBCodeViewer = ({
7981
href="https://www.mongodb.com/docs/manual/core/indexes/create-index/"
8082
target="_blank"
8183
rel="noreferrer noopener"
84+
onClick={() => {
85+
track('View Programming Language Syntax Clicked', {
86+
context: 'Create Index Modal',
87+
});
88+
}}
8289
>
8390
here
8491
</Link>

packages/compass-indexes/src/components/create-index-form/query-flow-section.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import type {
2323
} from '../../modules/create-index';
2424
import { connect } from 'react-redux';
2525
import { parseFilter } from 'mongodb-query-parser';
26+
import { useTelemetry } from '@mongodb-js/compass-telemetry/provider';
2627

2728
const inputQueryContainerStyles = css({
2829
display: 'flex',
@@ -109,8 +110,9 @@ const QueryFlowSection = ({
109110
fetchingSuggestionsState: IndexSuggestionState;
110111
initialQuery: Document | null;
111112
}) => {
113+
const track = useTelemetry();
112114
const [inputQuery, setInputQuery] = React.useState(
113-
JSON.stringify(initialQuery ?? '', null, 2)
115+
initialQuery ? JSON.stringify(initialQuery, null, 2) : ''
114116
);
115117
const [hasNewChanges, setHasNewChanges] = React.useState(
116118
initialQuery !== null
@@ -143,6 +145,10 @@ const QueryFlowSection = ({
143145
inputQuery: sanitizedInputQuery,
144146
});
145147

148+
track('Suggested Index Button Clicked', {
149+
context: 'Create Index Modal',
150+
});
151+
146152
setHasNewChanges(false);
147153
}, [inputQuery, dbName, collectionName, onSuggestedIndexButtonClick]);
148154

packages/compass-indexes/src/components/create-index-modal/create-index-modal.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import {
2525
type TrackFunction,
2626
useFireExperimentViewed,
2727
TestName,
28+
useTelemetry,
2829
} from '@mongodb-js/compass-telemetry/provider';
2930
import { useConnectionInfoRef } from '@mongodb-js/compass-connections/provider';
3031
import { usePreference } from 'compass-preferences-model/provider';
@@ -55,10 +56,15 @@ function CreateIndexModal({
5556
...props
5657
}: CreateIndexModalProps) {
5758
const connectionInfoRef = useConnectionInfoRef();
59+
const track = useTelemetry();
60+
5861
const onSetOpen = useCallback(
5962
(open) => {
6063
if (!open) {
6164
onCancelCreateIndexClick();
65+
track('Create Index Modal Closed', {
66+
context: 'Create Index Modal',
67+
});
6268
}
6369
},
6470
[onCancelCreateIndexClick]

0 commit comments

Comments
 (0)