Skip to content

Commit b7e06e0

Browse files
committed
enhancements on ga events
1 parent 4947b56 commit b7e06e0

1 file changed

Lines changed: 79 additions & 30 deletions

File tree

main.js

Lines changed: 79 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -462,7 +462,9 @@ class ModalHandler {
462462
}
463463

464464
// Track speaker view
465-
Analytics.trackSpeakerView(speaker.name);
465+
const isJavaChampion = speaker.title?.toLowerCase().includes('java champion') ||
466+
speaker.bio?.toLowerCase().includes('java champion');
467+
Analytics.trackSpeakerProfileView(speaker.name, isJavaChampion);
466468

467469
this.populateSpeakerContent(speaker);
468470
this.showModal(this.speakerModal);
@@ -967,7 +969,9 @@ class ScheduleRenderer {
967969
// Track session view when expanding
968970
if (!isExpanded) {
969971
const sessionTitle = sessionElement.querySelector('.session-title')?.textContent || 'Unknown Session';
970-
Analytics.trackSessionView(sessionTitle);
972+
const topicsElements = sessionElement.querySelectorAll('.badge-topic');
973+
const topics = Array.from(topicsElements).map(el => el.textContent.trim());
974+
Analytics.trackSessionDetailsView(sessionTitle, topics);
971975
}
972976

973977
if (isExpanded) {
@@ -1344,56 +1348,59 @@ class AnimationController {
13441348
}
13451349
}
13461350

1347-
// Analytics Helper
1351+
// Analytics Helper with Specific Event Names
13481352
const Analytics = {
13491353
track(eventName, parameters = {}) {
13501354
if (typeof gtag !== 'undefined') {
13511355
gtag('event', eventName, parameters);
13521356
}
13531357
},
13541358

1355-
// Track external link clicks
1356-
trackExternalLink(label, url) {
1357-
this.track('click', {
1358-
event_category: 'External Link',
1359-
event_label: label,
1360-
transport_type: 'beacon',
1361-
value: url
1359+
// Track registration button clicks
1360+
trackRegistrationClick() {
1361+
this.track('registration_click', {
1362+
link_location: 'header',
1363+
transport_type: 'beacon'
13621364
});
13631365
},
13641366

1365-
// Track session interactions
1366-
trackSessionView(sessionTitle) {
1367-
this.track('view_item', {
1368-
event_category: 'Session',
1369-
event_label: sessionTitle,
1370-
items: [{ item_name: sessionTitle }]
1367+
// Track CFP clicks
1368+
trackCFPClick() {
1369+
this.track('cfp_click', {
1370+
link_location: 'navigation',
1371+
transport_type: 'beacon'
1372+
});
1373+
},
1374+
1375+
// Track session detail views
1376+
trackSessionDetailsView(sessionTitle, sessionTopics = []) {
1377+
this.track('view_session_details', {
1378+
session_title: sessionTitle,
1379+
session_topics: sessionTopics.join(', '),
1380+
topics_count: sessionTopics.length
13711381
});
13721382
},
13731383

13741384
// Track speaker profile views
1375-
trackSpeakerView(speakerName) {
1376-
this.track('view_item', {
1377-
event_category: 'Speaker',
1378-
event_label: speakerName,
1379-
items: [{ item_name: speakerName }]
1385+
trackSpeakerProfileView(speakerName, isJavaChampion = false) {
1386+
this.track('view_speaker_profile', {
1387+
speaker_name: speakerName,
1388+
is_java_champion: isJavaChampion
13801389
});
13811390
},
13821391

13831392
// Track filter usage
13841393
trackFilterUse(filterType, filterValue) {
1385-
this.track('search', {
1386-
search_term: filterValue,
1387-
event_category: 'Filter',
1388-
event_label: filterType
1394+
this.track('filter_used', {
1395+
filter_type: filterType,
1396+
filter_value: filterValue
13891397
});
13901398
},
13911399

13921400
// Track timezone changes
13931401
trackTimezoneChange(timezone) {
1394-
this.track('select_content', {
1395-
content_type: 'timezone',
1396-
item_id: timezone
1402+
this.track('change_timezone', {
1403+
timezone: timezone
13971404
});
13981405
}
13991406
};
@@ -1417,16 +1424,58 @@ class App {
14171424
// Track registration button clicks
14181425
document.querySelectorAll('a[href*="soujava.dev/30y-celebration-week"]').forEach(link => {
14191426
link.addEventListener('click', () => {
1420-
Analytics.trackExternalLink('Registration', link.href);
1427+
Analytics.trackRegistrationClick();
14211428
});
14221429
});
14231430

14241431
// Track CFP link clicks
14251432
document.querySelectorAll('a[href*="sessionize.com"]').forEach(link => {
14261433
link.addEventListener('click', () => {
1427-
Analytics.trackExternalLink('Call for Papers', link.href);
1434+
Analytics.trackCFPClick();
1435+
});
1436+
});
1437+
1438+
// Track supporter/partner clicks - Aletyx
1439+
document.querySelectorAll('a[href*="aletyx.com"]').forEach(link => {
1440+
link.addEventListener('click', () => {
1441+
Analytics.track('supporter_click', {
1442+
event_category: 'Supporter Engagement',
1443+
event_label: 'Aletyx',
1444+
supporter_name: 'Aletyx',
1445+
supporter_type: 'partner',
1446+
link_location: 'footer'
1447+
});
1448+
});
1449+
});
1450+
1451+
// Track organizer clicks - SouJava
1452+
document.querySelectorAll('a[href*="soujava.org"]').forEach(link => {
1453+
link.addEventListener('click', () => {
1454+
Analytics.track('organizer_click', {
1455+
event_category: 'Organizer Engagement',
1456+
event_label: 'SouJava',
1457+
organizer_name: 'SouJava',
1458+
link_location: 'footer'
1459+
});
14281460
});
14291461
});
1462+
1463+
// Track speaker social media clicks
1464+
document.addEventListener('click', (e) => {
1465+
const socialLink = e.target.closest('.social-link, .speaker-social-link');
1466+
if (socialLink) {
1467+
const platform = socialLink.href.includes('linkedin') ? 'LinkedIn' : 'Twitter';
1468+
const speakerCard = socialLink.closest('.speaker-profile, .speaker-card');
1469+
const speakerName = speakerCard?.querySelector('.speaker-name, .speaker-profile-name')?.textContent || 'Unknown';
1470+
1471+
Analytics.track('speaker_social_click', {
1472+
event_category: 'Speaker Social',
1473+
event_label: `${speakerName} - ${platform}`,
1474+
social_platform: platform,
1475+
speaker_name: speakerName
1476+
});
1477+
}
1478+
});
14301479
}
14311480

14321481
initMobileNav() {

0 commit comments

Comments
 (0)