From 714c3239d916dba286fa8ce2596d83d5011c01fd Mon Sep 17 00:00:00 2001 From: Erik Wiffin Date: Tue, 4 Mar 2014 16:17:18 +0000 Subject: [PATCH 1/2] Add support for named trackers (Google Tag Manager) --- ember-google-analytics.js | 9 +++++++-- lib/tracking_mixin.js | 9 +++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/ember-google-analytics.js b/ember-google-analytics.js index 14ad855..3ea9a85 100644 --- a/ember-google-analytics.js +++ b/ember-google-analytics.js @@ -3,6 +3,11 @@ Ember.GoogleAnalyticsTrackingMixin = Ember.Mixin.create({ return window.ga && typeof window.ga === "function"; }, + getTrackerPrefix: function () { + var tracker = (ga.getAll() || []).pop(); + return tracker ? tracker.get('name') + '.' : ''; + }, + trackPageView: function(page) { if (this.pageHasGa()) { if (!page) { @@ -10,13 +15,13 @@ Ember.GoogleAnalyticsTrackingMixin = Ember.Mixin.create({ page = loc.hash ? loc.hash.substring(1) : loc.pathname + loc.search; } - ga('send', 'pageview', page); + ga(this.getTrackerPrefix() + 'send', 'pageview', page); } }, trackEvent: function(category, action, label, value) { if (this.pageHasGa()) { - ga('send', 'event', category, action, label, value); + ga(this.getTrackerPrefix() + 'send', 'event', category, action, label, value); } } }); diff --git a/lib/tracking_mixin.js b/lib/tracking_mixin.js index 4de9e80..556c227 100644 --- a/lib/tracking_mixin.js +++ b/lib/tracking_mixin.js @@ -3,6 +3,11 @@ Ember.GoogleAnalyticsTrackingMixin = Ember.Mixin.create({ return window.ga && typeof window.ga === "function"; }, + getTrackerPrefix: function () { + var tracker = (ga.getAll() || []).pop(); + return tracker ? tracker.get('name') + '.' : ''; + }, + trackPageView: function(page) { if (this.pageHasGa()) { if (!page) { @@ -10,13 +15,13 @@ Ember.GoogleAnalyticsTrackingMixin = Ember.Mixin.create({ page = loc.hash ? loc.hash.substring(1) : loc.pathname + loc.search; } - ga('send', 'pageview', page); + ga(this.getTrackerPrefix() + 'send', 'pageview', page); } }, trackEvent: function(category, action, label, value) { if (this.pageHasGa()) { - ga('send', 'event', category, action, label, value); + ga(this.getTrackerPrefix() + 'send', 'event', category, action, label, value); } } }); From f3556346c72f3db9bc11140cd3bad2b8f149b12f Mon Sep 17 00:00:00 2001 From: Erik Wiffin Date: Sun, 16 Mar 2014 21:42:37 +0000 Subject: [PATCH 2/2] Fix GTM/getTrackerPrefix race condition --- ember-google-analytics.js | 2 +- lib/tracking_mixin.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ember-google-analytics.js b/ember-google-analytics.js index 3ea9a85..dd943e0 100644 --- a/ember-google-analytics.js +++ b/ember-google-analytics.js @@ -4,7 +4,7 @@ Ember.GoogleAnalyticsTrackingMixin = Ember.Mixin.create({ }, getTrackerPrefix: function () { - var tracker = (ga.getAll() || []).pop(); + var tracker = (ga.getAll && typeof ga.getAll === "function" && ga.getAll() || []).pop(); return tracker ? tracker.get('name') + '.' : ''; }, diff --git a/lib/tracking_mixin.js b/lib/tracking_mixin.js index 556c227..1caf4f9 100644 --- a/lib/tracking_mixin.js +++ b/lib/tracking_mixin.js @@ -4,7 +4,7 @@ Ember.GoogleAnalyticsTrackingMixin = Ember.Mixin.create({ }, getTrackerPrefix: function () { - var tracker = (ga.getAll() || []).pop(); + var tracker = (ga.getAll && typeof ga.getAll === "function" && ga.getAll() || []).pop(); return tracker ? tracker.get('name') + '.' : ''; },