From 77d96032bf66ecd26f2af3f797874b0efd588688 Mon Sep 17 00:00:00 2001 From: Chris Hill-Scott Date: Thu, 2 Aug 2018 12:15:21 +0100 Subject: [PATCH 1/2] Track event when someone previews basic view MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We’re interested to know which services are looking at the basic view preview (even if they’re not turning it on). This commit logs their service IDs as events into Google Analytics. --- app/assets/javascripts/analytics.js | 32 +++++++++++++++++++++++++ app/assets/javascripts/errorTracking.js | 22 ----------------- app/templates/withnav_template.html | 8 ++++++- gulpfile.babel.js | 2 +- 4 files changed, 40 insertions(+), 24 deletions(-) create mode 100644 app/assets/javascripts/analytics.js delete mode 100644 app/assets/javascripts/errorTracking.js diff --git a/app/assets/javascripts/analytics.js b/app/assets/javascripts/analytics.js new file mode 100644 index 000000000..7ad7402cd --- /dev/null +++ b/app/assets/javascripts/analytics.js @@ -0,0 +1,32 @@ +(function(Modules) { + "use strict"; + + if (!ga) return; + + function sendEvent(category, action, label) { + + ga('send', 'event', category, action, label); + + } + + Modules.TrackError = function() { + + this.start = component => sendEvent( + 'Error', + $(component).data('error-type'), + $(component).data('error-label') + ); + + }; + + Modules.TrackEvent = function() { + + this.start = component => sendEvent( + $(component).data('event-category'), + $(component).data('event-action'), + $(component).data('event-label') + ); + + }; + +})(window.GOVUK.Modules); diff --git a/app/assets/javascripts/errorTracking.js b/app/assets/javascripts/errorTracking.js deleted file mode 100644 index 3b7053841..000000000 --- a/app/assets/javascripts/errorTracking.js +++ /dev/null @@ -1,22 +0,0 @@ -(function(Modules) { - "use strict"; - - Modules.TrackError = function() { - - this.start = function(component) { - - if (!ga) return; - - ga( - 'send', - 'event', - 'Error', - $(component).data('error-type'), - $(component).data('error-label') - ); - - }; - - }; - -})(window.GOVUK.Modules); diff --git a/app/templates/withnav_template.html b/app/templates/withnav_template.html index c03b77803..da950a60d 100644 --- a/app/templates/withnav_template.html +++ b/app/templates/withnav_template.html @@ -10,7 +10,13 @@ diff --git a/gulpfile.babel.js b/gulpfile.babel.js index b1a6ab92e..60b66f28a 100644 --- a/gulpfile.babel.js +++ b/gulpfile.babel.js @@ -70,7 +70,7 @@ gulp.task('javascripts', () => gulp paths.src + 'javascripts/updateContent.js', paths.src + 'javascripts/listEntry.js', paths.src + 'javascripts/liveSearch.js', - paths.src + 'javascripts/errorTracking.js', + paths.src + 'javascripts/analytics.js', paths.src + 'javascripts/preventDuplicateFormSubmissions.js', paths.src + 'javascripts/fullscreenTable.js', paths.src + 'javascripts/conditionalRadios.js', From 8e6efadb235cae195be203574008a86899ea5131 Mon Sep 17 00:00:00 2001 From: Chris Hill-Scott Date: Thu, 2 Aug 2018 12:33:13 +0100 Subject: [PATCH 2/2] Track virtual page view when enabling basic view So we can see what pages people go to after turning it on. --- app/assets/javascripts/analytics.js | 28 +++++++++++++++++-- app/templates/admin_template.html | 7 ++--- .../service-settings/set-basic-view.html | 6 +++- 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/app/assets/javascripts/analytics.js b/app/assets/javascripts/analytics.js index 7ad7402cd..e1b871cf8 100644 --- a/app/assets/javascripts/analytics.js +++ b/app/assets/javascripts/analytics.js @@ -1,14 +1,24 @@ +let stripUUIDs = string => string.replace( + /[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}/g, '…' +); + (function(Modules) { "use strict"; - if (!ga) return; - function sendEvent(category, action, label) { + if (!ga) return; ga('send', 'event', category, action, label); } + function sendVirtualPageView(path) { + + if (!ga) return; + ga('send', 'pageview', stripUUIDs('/virtual' + path)); + + } + Modules.TrackError = function() { this.start = component => sendEvent( @@ -29,4 +39,18 @@ }; + Modules.TrackFormSubmission = function() { + + this.start = component => { + + $(component).on('submit', function() { + + let formData = $('input[name!=csrf_token]', this).serialize(); + sendVirtualPageView(window.location.pathname + '?' + formData); + + }); + }; + + }; + })(window.GOVUK.Modules); diff --git a/app/templates/admin_template.html b/app/templates/admin_template.html index a78581cfd..d1d51df89 100644 --- a/app/templates/admin_template.html +++ b/app/templates/admin_template.html @@ -128,10 +128,7 @@ ga('set', 'anonymizeIp', true); ga('set', 'displayFeaturesTask', null); ga('set', 'transport', 'beacon'); - // strip UUIDs - page = (window.location.pathname + window.location.search).replace( - /[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}/g, '…' - ) - ga('send', 'pageview', page); + page = window.location.pathname + window.location.search; + ga('send', 'pageview', stripUUIDs(page)); {% endblock %} diff --git a/app/templates/views/service-settings/set-basic-view.html b/app/templates/views/service-settings/set-basic-view.html index 535d9b70c..118e13f39 100644 --- a/app/templates/views/service-settings/set-basic-view.html +++ b/app/templates/views/service-settings/set-basic-view.html @@ -9,7 +9,11 @@ {% block maincolumn_content %}
-
+

Basic view

Basic view lets you restrict a team member to only: