From 606753ac58b862cf934708c4865433f8432a4acd Mon Sep 17 00:00:00 2001 From: Stefano Borini Date: Tue, 28 Mar 2017 19:10:20 +0100 Subject: [PATCH 1/5] Migrating and isolating google analytics to tolerate failure to load --- remoteappmanager/static/js/analytics.js | 15 +++------------ remoteappmanager/templates/page.html | 12 ++++++++++++ 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/remoteappmanager/static/js/analytics.js b/remoteappmanager/static/js/analytics.js index 597f3a9a2..475b3d38a 100644 --- a/remoteappmanager/static/js/analytics.js +++ b/remoteappmanager/static/js/analytics.js @@ -7,23 +7,14 @@ define([ var module; if (window.apidata.analytics !== undefined) { - window.GoogleAnalyticsObject = "ga"; - window.ga = function () { - (window.ga.q = window.ga.q || []).push(arguments); - }; - window.ga.l = 1 * new Date(); - module = function () { - window.ga.apply(this, arguments); - }; - require(["//www.google-analytics.com/analytics.js"]); window.ga('create', window.apidata.analytics.tracking_id, 'auto'); } else { window.ga = function () { }; - module = function () { - window.ga.apply(this, arguments); - }; } + module = function () { + window.ga.apply(this, arguments); + }; return module; } diff --git a/remoteappmanager/templates/page.html b/remoteappmanager/templates/page.html index 9304f76bb..e4500d086 100644 --- a/remoteappmanager/templates/page.html +++ b/remoteappmanager/templates/page.html @@ -41,6 +41,18 @@ {% endblock %} {% block script %} + + {% if analytics %} + + {% endif %} {% endblock %} From 66aa363297fe3308dbf7fbe5a813fa87b8ddd83f Mon Sep 17 00:00:00 2001 From: Stefano Borini Date: Tue, 28 Mar 2017 23:23:40 +0100 Subject: [PATCH 2/5] Removed unused require --- remoteappmanager/static/js/analytics.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/remoteappmanager/static/js/analytics.js b/remoteappmanager/static/js/analytics.js index 475b3d38a..eccc69964 100644 --- a/remoteappmanager/static/js/analytics.js +++ b/remoteappmanager/static/js/analytics.js @@ -1,6 +1,5 @@ define([ - "require" -], function (require) { +], function () { "use strict"; function init() { From 0e8ae01f3b31a791c19497dcc8a91975cafc481e Mon Sep 17 00:00:00 2001 From: Stefano Borini Date: Wed, 29 Mar 2017 08:37:44 +0100 Subject: [PATCH 3/5] Fixed tests --- jstests/tests/test_analytics.js | 14 ++++++++++++-- remoteappmanager/static/js/analytics.js | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/jstests/tests/test_analytics.js b/jstests/tests/test_analytics.js index d1614cd26..9016bfa0f 100644 --- a/jstests/tests/test_analytics.js +++ b/jstests/tests/test_analytics.js @@ -4,14 +4,24 @@ define(function(require) { QUnit.module("Google Analytics"); QUnit.test("test without analytics", function (assert) { + var result=[]; + window.ga = function(cmd, id, auto) { + result[0] = [cmd, id, auto]; + }; window.apidata.analytics = undefined; var ga = analytics.init(); - assert.equal(window.ga.l, undefined); + assert.equal(result.length, 0); }); QUnit.test("test with analytics", function (assert) { + var result=[]; + window.ga = function(cmd, id, auto) { + result[0] = [cmd, id, auto]; + }; window.apidata.analytics = {"tracking_id": "X"}; var ga = analytics.init(); - assert.notEqual(window.ga.l, undefined); + assert.equal(result[0][0], "create"); + assert.equal(result[0][1], "X"); + assert.equal(result[0][2], "auto"); }); }); diff --git a/remoteappmanager/static/js/analytics.js b/remoteappmanager/static/js/analytics.js index eccc69964..709631e47 100644 --- a/remoteappmanager/static/js/analytics.js +++ b/remoteappmanager/static/js/analytics.js @@ -1,7 +1,7 @@ define([ ], function () { "use strict"; - + function init() { var module; From ca22499664d5e73688c4b3ee9451697ca6b6d11a Mon Sep 17 00:00:00 2001 From: Stefano Borini Date: Wed, 29 Mar 2017 13:55:49 +0100 Subject: [PATCH 4/5] Renamed module to fight against broken paranoia modules. --- remoteappmanager/static/js/{analytics.js => gamodule.js} | 3 +++ remoteappmanager/static/js/home/controller.js | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) rename remoteappmanager/static/js/{analytics.js => gamodule.js} (75%) diff --git a/remoteappmanager/static/js/analytics.js b/remoteappmanager/static/js/gamodule.js similarity index 75% rename from remoteappmanager/static/js/analytics.js rename to remoteappmanager/static/js/gamodule.js index 709631e47..0795f53b9 100644 --- a/remoteappmanager/static/js/analytics.js +++ b/remoteappmanager/static/js/gamodule.js @@ -1,3 +1,6 @@ +// This module contains the setup for google analytics. +// MUST not be renamed to analytics. Some blockers rely on name +// matching to prevent loading. define([ ], function () { "use strict"; diff --git a/remoteappmanager/static/js/home/controller.js b/remoteappmanager/static/js/home/controller.js index eabb38f1c..1c68bdbe4 100644 --- a/remoteappmanager/static/js/home/controller.js +++ b/remoteappmanager/static/js/home/controller.js @@ -3,7 +3,7 @@ require([ "jquery", "urlutils", "dialogs", - "analytics", + "gamodule", "home/models", "home/views/application_list_view", "home/views/application_view", @@ -14,7 +14,7 @@ require([ $, urlutils, dialogs, - analytics, + gamodule, models, application_list_view, application_view, @@ -23,7 +23,7 @@ require([ init) { "use strict"; - var ga = analytics.init(); + var ga = gamodule.init(); init.handlebars(); // This model keeps the retrieved content from the REST query locally. From 59fc997882762f492f3a1914b97bbf4f3dcc82f0 Mon Sep 17 00:00:00 2001 From: Stefano Borini Date: Thu, 30 Mar 2017 10:09:56 +0100 Subject: [PATCH 5/5] Review --- jstests/tests/test_analytics.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/jstests/tests/test_analytics.js b/jstests/tests/test_analytics.js index 9016bfa0f..3d44b9fd3 100644 --- a/jstests/tests/test_analytics.js +++ b/jstests/tests/test_analytics.js @@ -1,6 +1,6 @@ define(function(require) { "use strict"; - var analytics = require("analytics"); + var gamodule = require("gamodule"); QUnit.module("Google Analytics"); QUnit.test("test without analytics", function (assert) { @@ -9,7 +9,8 @@ define(function(require) { result[0] = [cmd, id, auto]; }; window.apidata.analytics = undefined; - var ga = analytics.init(); + var ga = gamodule.init(); + assert.notEqual(ga, undefined); assert.equal(result.length, 0); }); @@ -19,7 +20,8 @@ define(function(require) { result[0] = [cmd, id, auto]; }; window.apidata.analytics = {"tracking_id": "X"}; - var ga = analytics.init(); + var ga = gamodule.init(); + assert.notEqual(ga, undefined); assert.equal(result[0][0], "create"); assert.equal(result[0][1], "X"); assert.equal(result[0][2], "auto");