1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
import { logError } from '~/lib/logger';
const isSupported = () => Boolean(window.dataLayer) && gon.features?.gitlabGtmDatalayer;
const pushEvent = (event, args = {}) => {
if (!window.dataLayer) {
return;
}
try {
window.dataLayer.push({
event,
...args,
});
} catch (e) {
logError('Unexpected error while pushing to dataLayer', e);
}
};
const pushAccountSubmit = (accountType, accountMethod) =>
pushEvent('accountSubmit', { accountType, accountMethod });
const trackFormSubmission = (accountType) => {
const form = document.getElementById('new_new_user');
form.addEventListener('submit', () => {
pushAccountSubmit(accountType, 'form');
});
};
const trackOmniAuthSubmission = (accountType) => {
const links = document.querySelectorAll('.js-oauth-login');
links.forEach((link) => {
const { provider } = link.dataset;
link.addEventListener('click', () => {
pushAccountSubmit(accountType, provider);
});
});
};
export const trackFreeTrialAccountSubmissions = () => {
if (!isSupported()) {
return;
}
trackFormSubmission('freeThirtyDayTrial');
trackOmniAuthSubmission('freeThirtyDayTrial');
};
export const trackNewRegistrations = () => {
if (!isSupported()) {
return;
}
trackFormSubmission('standardSignUp');
trackOmniAuthSubmission('standardSignUp');
};
export const trackSaasTrialSubmit = () => {
if (!isSupported()) {
return;
}
pushEvent('saasTrialSubmit');
};
export const trackSaasTrialSkip = () => {
if (!isSupported()) {
return;
}
const skipLink = document.querySelector('.js-skip-trial');
skipLink.addEventListener('click', () => {
pushEvent('saasTrialSkip');
});
};
export const trackSaasTrialGroup = () => {
if (!isSupported()) {
return;
}
const form = document.querySelector('.js-saas-trial-group');
form.addEventListener('submit', () => {
pushEvent('saasTrialGroup');
});
};
export const trackSaasTrialProject = () => {
if (!isSupported()) {
return;
}
const form = document.getElementById('new_project');
form.addEventListener('submit', () => {
pushEvent('saasTrialProject');
});
};
export const trackSaasTrialProjectImport = () => {
if (!isSupported()) {
return;
}
const importButtons = document.querySelectorAll('.js-import-project-btn');
importButtons.forEach((button) => {
button.addEventListener('click', () => {
const { platform } = button.dataset;
pushEvent('saasTrialProjectImport', { saasProjectImport: platform });
});
});
};
export const trackSaasTrialGetStarted = () => {
if (!isSupported()) {
return;
}
const getStartedButton = document.querySelector('.js-get-started-btn');
getStartedButton.addEventListener('click', () => {
pushEvent('saasTrialGetStarted');
});
};
|