From 36b5a302163b219b173e6a7d9f938918206a6674 Mon Sep 17 00:00:00 2001 From: akhuoa Date: Fri, 22 Aug 2025 10:15:39 +1200 Subject: [PATCH 01/15] Add event tracking for pagination change --- src/components/ConnectivityExplorer.vue | 5 +++++ src/components/DatasetExplorer.vue | 5 +++++ src/components/SideBar.vue | 18 ++++++++++++++++++ 3 files changed, 28 insertions(+) diff --git a/src/components/ConnectivityExplorer.vue b/src/components/ConnectivityExplorer.vue index 85f5fdd5..96f05016 100644 --- a/src/components/ConnectivityExplorer.vue +++ b/src/components/ConnectivityExplorer.vue @@ -518,6 +518,11 @@ export default { this.expandedData = null; this.scrollToTop(); // this.searchKnowledge(this.filter, this.searchInput); + + EventBus.emit('trackEvent', { + 'event_name': `portal_maps_connectivity_pagination`, + 'category': `page_${this.page}`, + }); }, scrollToTop: function () { if (this.$refs.content) { diff --git a/src/components/DatasetExplorer.vue b/src/components/DatasetExplorer.vue index ebdb9a54..7d64ca0a 100644 --- a/src/components/DatasetExplorer.vue +++ b/src/components/DatasetExplorer.vue @@ -341,6 +341,11 @@ export default { this.numberPerPage, this.page ) + + EventBus.emit('trackEvent', { + 'event_name': `portal_maps_dataset_pagination`, + 'category': `page_${this.page}`, + }); }, handleMissingData: function (doi) { let i = this.results.findIndex((res) => res.doi === doi) diff --git a/src/components/SideBar.vue b/src/components/SideBar.vue index bbad139b..648df69f 100644 --- a/src/components/SideBar.vue +++ b/src/components/SideBar.vue @@ -464,6 +464,19 @@ export default { }); } }, + /** + * @public + * Track an event for analytics + * @param {Object} `data` - The event data + */ + trackEvent: function (data) { + const taggingData = { + 'event': 'interaction_event', + 'location': 'map_sidebar', + ...data, + }; + this.$emit('trackEvent', taggingData); + } }, computed: { // This should respect the information provided by the property @@ -536,6 +549,11 @@ export default { this.availableAnatomyFacets = payLoad.find((facet) => facet.label === 'Anatomical Structure').children this.storeAvailableAnatomyFacets(this.availableAnatomyFacets); }) + + // Event tracking + EventBus.on('trackEvent', (data) => { + this.trackEvent(data); + }); }, } From 2faa8d66d0b8aa5639250a34ae5c341cb44ab25e Mon Sep 17 00:00:00 2001 From: akhuoa Date: Fri, 22 Aug 2025 12:14:36 +1200 Subject: [PATCH 02/15] Add event tracking for paginations --- src/components/ConnectivityExplorer.vue | 21 +++++++++++++++------ src/components/DatasetExplorer.vue | 21 +++++++++++++++------ 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/src/components/ConnectivityExplorer.vue b/src/components/ConnectivityExplorer.vue index 96f05016..5d29fce7 100644 --- a/src/components/ConnectivityExplorer.vue +++ b/src/components/ConnectivityExplorer.vue @@ -509,9 +509,16 @@ export default { }, numberPerPageUpdate: function (val) { this.numberPerPage = val; - this.pageChange(1); + + EventBus.emit('trackEvent', { + 'event_name': `portal_maps_connectivity_perPage`, + 'category': val, + }); + + const preventPaginationTracking = this.page === 1; + this.pageChange(1, preventPaginationTracking); }, - pageChange: function (page) { + pageChange: function (page, preventPaginationTracking = false) { this.start = (page - 1) * this.numberPerPage; this.page = page; this.expanded = ""; @@ -519,10 +526,12 @@ export default { this.scrollToTop(); // this.searchKnowledge(this.filter, this.searchInput); - EventBus.emit('trackEvent', { - 'event_name': `portal_maps_connectivity_pagination`, - 'category': `page_${this.page}`, - }); + if (!preventPaginationTracking) { + EventBus.emit('trackEvent', { + 'event_name': `portal_maps_connectivity_pagination`, + 'category': `page_${this.page}`, + }); + } }, scrollToTop: function () { if (this.$refs.content) { diff --git a/src/components/DatasetExplorer.vue b/src/components/DatasetExplorer.vue index 7d64ca0a..3abb65c6 100644 --- a/src/components/DatasetExplorer.vue +++ b/src/components/DatasetExplorer.vue @@ -330,9 +330,16 @@ export default { }, numberPerPageUpdate: function (val) { this.numberPerPage = val - this.pageChange(1) + + EventBus.emit('trackEvent', { + 'event_name': `portal_maps_dataset_perPage`, + 'category': val, + }); + + const preventPaginationTracking = this.page === 1; + this.pageChange(1, preventPaginationTracking) }, - pageChange: function (page) { + pageChange: function (page, preventPaginationTracking = false) { this.start = (page - 1) * this.numberPerPage this.page = page this.searchAlgolia( @@ -342,10 +349,12 @@ export default { this.page ) - EventBus.emit('trackEvent', { - 'event_name': `portal_maps_dataset_pagination`, - 'category': `page_${this.page}`, - }); + if (!preventPaginationTracking) { + EventBus.emit('trackEvent', { + 'event_name': `portal_maps_dataset_pagination`, + 'category': `page_${this.page}`, + }); + } }, handleMissingData: function (doi) { let i = this.results.findIndex((res) => res.doi === doi) From e2b084eabe4fcee86f3f98f6b680fc2e22ba98c0 Mon Sep 17 00:00:00 2001 From: akhuoa Date: Fri, 22 Aug 2025 12:59:21 +1200 Subject: [PATCH 03/15] Add event tracking for search history click --- src/components/SearchHistory.vue | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/components/SearchHistory.vue b/src/components/SearchHistory.vue index c3e809e6..e4390233 100644 --- a/src/components/SearchHistory.vue +++ b/src/components/SearchHistory.vue @@ -346,6 +346,16 @@ export default { }, search: function (item) { this.$emit('search', item) + + // Event tracking + const isConnectivity = this.localStorageKey?.indexOf('connectivity') !== -1; + const isDataset = this.localStorageKey?.indexOf('dataset') !== -1; + const location = isConnectivity ? 'connectivity' : isDataset ? 'dataset' : ''; + EventBus.emit('trackEvent', { + 'event_name': `portal_maps_search_history_click`, + 'category': item.longLabel || item.label, + 'location': `map_sidebar_${location}`, + }); }, searchHistoryItemLabel: function (search, filters) { let label = search ? `"${search.trim()}"` : ''; From c4a9b46c9421c8e203289f294139ef8c06eb8e90 Mon Sep 17 00:00:00 2001 From: akhuoa Date: Fri, 22 Aug 2025 15:21:36 +1200 Subject: [PATCH 04/15] Add event tracking for search history save toggle --- src/components/SearchHistory.vue | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/components/SearchHistory.vue b/src/components/SearchHistory.vue index e4390233..0448a3a5 100644 --- a/src/components/SearchHistory.vue +++ b/src/components/SearchHistory.vue @@ -344,13 +344,17 @@ export default { // Save updated data localStorage.setItem(this.localStorageKey, JSON.stringify(this.searchHistory)) }, + getParentComponentName: function () { + const isConnectivity = this.localStorageKey?.indexOf('connectivity') !== -1; + const isDataset = this.localStorageKey?.indexOf('dataset') !== -1; + const location = isConnectivity ? 'connectivity' : isDataset ? 'dataset' : ''; + return location; + }, search: function (item) { this.$emit('search', item) // Event tracking - const isConnectivity = this.localStorageKey?.indexOf('connectivity') !== -1; - const isDataset = this.localStorageKey?.indexOf('dataset') !== -1; - const location = isConnectivity ? 'connectivity' : isDataset ? 'dataset' : ''; + const location = this.getParentComponentName(); EventBus.emit('trackEvent', { 'event_name': `portal_maps_search_history_click`, 'category': item.longLabel || item.label, @@ -399,6 +403,14 @@ export default { }); this.savedSearchHistory = this.searchHistory.filter((item) => item.saved); this.updateSearchHistory(); + + const eventName = item.saved ? 'portal_maps_search_history_saved' : 'portal_maps_search_history_unsaved'; + const location = this.getParentComponentName(); + EventBus.emit('trackEvent', { + 'event_name': eventName, + 'category': item.longLabel || item.label, + 'location': `map_sidebar_${location}`, + }); }, removeFromSavedSearch: function (item) { const itemIndex = this.searchHistory.findIndex((_item) => _item.id === item.id); From 494bc20f471bf22c114d7f2de2c4683ff6cf13ca Mon Sep 17 00:00:00 2001 From: akhuoa Date: Fri, 22 Aug 2025 15:23:29 +1200 Subject: [PATCH 05/15] Add event tracking for search history item remove --- src/components/SearchHistory.vue | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/components/SearchHistory.vue b/src/components/SearchHistory.vue index 0448a3a5..5996e00c 100644 --- a/src/components/SearchHistory.vue +++ b/src/components/SearchHistory.vue @@ -417,6 +417,13 @@ export default { this.searchHistory.splice(itemIndex, 1); this.savedSearchHistory = this.searchHistory.filter((item) => item.saved); this.updateSearchHistory(); + + const location = this.getParentComponentName(); + EventBus.emit('trackEvent', { + 'event_name': 'portal_maps_search_history_removed', + 'category': item.longLabel || item.label, + 'location': `map_sidebar_${location}`, + }); }, }, } From d8cd66ceeb71cd503a15815fdcd48e21ae7d47c6 Mon Sep 17 00:00:00 2001 From: akhuoa Date: Fri, 22 Aug 2025 15:37:42 +1200 Subject: [PATCH 06/15] Add event tracking for annotation copy --- src/components/AnnotationTool.vue | 1 + src/components/SideBar.vue | 1 + 2 files changed, 2 insertions(+) diff --git a/src/components/AnnotationTool.vue b/src/components/AnnotationTool.vue index 7658e159..20039afd 100644 --- a/src/components/AnnotationTool.vue +++ b/src/components/AnnotationTool.vue @@ -13,6 +13,7 @@ :annotationEntry="annotationEntry" @annotation="$emit('annotation', $event)" @hover-changed="$emit('hover-changed', $event)" + @trackEvent="$emit('trackEvent', $event)" />
diff --git a/src/components/SideBar.vue b/src/components/SideBar.vue index 648df69f..2022f19d 100644 --- a/src/components/SideBar.vue +++ b/src/components/SideBar.vue @@ -40,6 +40,7 @@ @cancel-create="$emit('cancel-create')" @confirm-delete="$emit('confirm-delete', $event)" @hover-changed="hoverChanged(tab.id, $event)" + @trackEvent="$emit('trackEvent', $event)" />