summaryrefslogtreecommitdiff
path: root/StoneIsland/plugins/cordova-plugin-google-analytics/browser
diff options
context:
space:
mode:
Diffstat (limited to 'StoneIsland/plugins/cordova-plugin-google-analytics/browser')
-rw-r--r--StoneIsland/plugins/cordova-plugin-google-analytics/browser/UniversalAnalyticsProxy.js253
1 files changed, 0 insertions, 253 deletions
diff --git a/StoneIsland/plugins/cordova-plugin-google-analytics/browser/UniversalAnalyticsProxy.js b/StoneIsland/plugins/cordova-plugin-google-analytics/browser/UniversalAnalyticsProxy.js
deleted file mode 100644
index a42eee39..00000000
--- a/StoneIsland/plugins/cordova-plugin-google-analytics/browser/UniversalAnalyticsProxy.js
+++ /dev/null
@@ -1,253 +0,0 @@
-function UniversalAnalyticsProxy() {
- this._isDebug = false;
- this._isEcommerceRequired = false;
- this._trackingId = null;
-
- var namespace = window.GoogleAnalyticsObject || 'nativeGa';
- loadGoogleAnalytics.call(this, namespace);
-
- bindAll(this, [
- '_ensureEcommerce',
- '_uncaughtExceptionHandler',
- 'addCustomDimension',
- 'addTransaction',
- 'addTransactionItem',
- 'debugMode',
- 'enableUncaughtExceptionReporting',
- 'setAllowIDFACollection',
- 'setAnonymizeIp',
- 'setAppVersion',
- 'setOptOut',
- 'setUserId',
- 'getVar',
- 'setVar',
- 'startTrackerWithId',
- 'trackEvent',
- 'trackException',
- 'trackMetric',
- 'trackTiming',
- 'trackView'
- ]);
-}
-
-UniversalAnalyticsProxy.prototype = {
- startTrackerWithId: wrap(function (trackingId) {
- this._trackingId = trackingId;
-
- this._ga('create', {
- trackingId: trackingId,
- cookieDomain: 'auto'
- });
- this._ga('set', 'appName', document.title);
- }),
-
- setUserId: wrap(function (userId) {
- this._ga('set', 'userId', userId);
- }),
-
- setAnonymizeIp: wrap(function (anonymize) {
- this._ga('set', 'anonymizeIp', anonymize);
- }),
-
- setOptOut: wrap(function (optout) {
- if (!this._trackingId) {
- throw new Error('TrackingId not available');
- }
- window['ga-disable-' + this._trackingId] = optout;
- }),
-
- setAppVersion: wrap(function (version) {
- this._ga('set', 'appVersion', version);
- }),
-
- setAllowIDFACollection: wrap(function (enable) {
- // Not supported by browser platofrm
- }),
-
- getVar: function (param, success, error) {
- this._ga(function(tracker){
- success(tracker.get(param));
- });
- },
-
- setVar: wrap(function(param, value){
- this._ga('set', param, value);
- }),
-
- debugMode: wrap(function () {
- this._isDebug = true;
- }),
-
- addCustomDimension: wrap(function (key, value) {
- this._ga('set', 'dimension' + key, value);
- }),
-
- trackMetric: wrap(function (key, value) {
- this._ga('set', 'metric' + key, value);
- }),
-
- trackEvent: send(function (category, action, label, value, newSession) {
- return {
- hitType: 'event',
- eventCategory: category,
- eventAction: action,
- eventLabel: label,
- eventValue: value
- };
- }),
-
- trackView: send(function (screen) {
- return {
- hitType: 'screenview',
- screenName: screen
- };
- }),
-
- trackException: send(function (description, fatal) {
- return {
- hitType: 'exception',
- exDescription: description,
- exFatal: fatal
- };
- }),
-
- trackTiming: send(function (category, intervalInMilliseconds, name, label) {
- return {
- hitType: 'timing',
- timingCategory: category,
- timingVar: name,
- timingValue: intervalInMilliseconds,
- timingLabel: label
- };
- }),
-
- addTransaction: wrap(function (transactionId, affiliation, revenue, tax, shipping, currencyCode) {
- this._ensureEcommerce();
- this._ga('ecommerce:addTransaction', {
- id: transactionId,
- affiliation: affiliation,
- revenue: String(revenue),
- shipping: String(shipping),
- tax: String(tax),
- currency: currencyCode
- });
- }),
-
- addTransactionItem: wrap(function (transactionId, name, sku, category, price, quantity, currencyCode) {
- this._ensureEcommerce();
- this._ga('ecommerce:addItem', {
- id: transactionId,
- name: name,
- sku: sku,
- category: category,
- price: String(price),
- quantity: String(quantity),
- currency: currencyCode
- });
- }),
-
- enableUncaughtExceptionReporting: wrap(function (enable) {
- if (enable) {
- window.addEventListener('error', this._uncaughtExceptionHandler);
- } else {
- window.removeEventListener('error', this._uncaughtExceptionHandler);
- }
- }),
-
- _ga: function () {
- var args = Array.prototype.slice.call(arguments);
- if (this._isDebug) {
- console.debug('UniversalAnalyticsProxy', args);
- }
- this._nativeGa.apply(this._nativeGa, args);
- },
-
- _uncaughtExceptionHandler: function (err) {
- this._ga('send', {
- hitType: 'exception',
- exDescription: err.message,
- exFatal: true
- });
- },
-
- _ensureEcommerce: function() {
- if (this._isEcommerceRequired) return;
- this._ga('require', 'ecommerce');
- this._isEcommerceRequired = true;
- }
-};
-
-function send(fn) {
- return function (success, error, args) {
- var command = fn.apply(this, args);
- var timeout = setTimeout(function () {
- error(new Error('send timeout'));
- }, 3000);
-
- command.hitCallback = function hitCallback(result) {
- clearTimeout(timeout);
- success(result);
- };
-
- try {
- this._ga('send', command);
- } catch (err) {
- clearTimeout(timeout);
- defer(error, err);
- }
- };
-}
-
-function bindAll(that, names) {
- names.forEach(function(name) {
- if (typeof that[name] === 'function') {
- that[name] = that[name].bind(that);
- }
- });
-}
-
-/**
- * Proceed to the asynchronous loading of Google's analytics.js.
- * Initialize `this._nativeGa` once the script is loaded, using
- * the `onload` callback of the `script` DOM node.
- *
- * @param {string} name Reference (global namespace) of the GA object.
- */
-function loadGoogleAnalytics(name) {
- window.GoogleAnalyticsObject = name;
-
- window[name] = window[name] || function () {
- (window[name].q = window[name].q || []).push(arguments);
- };
- window[name].l = 1 * new Date();
- this._nativeGa = window[name];
-
- var script = document.createElement('script');
- var scripts = document.getElementsByTagName('script')[0];
- script.src = 'https://www.google-analytics.com/analytics.js';
- script.async = 1;
- scripts.parentNode.insertBefore(script, scripts);
-
- // analytics.js creates a new object once initialized, update our reference
- script.onload = (function() { this._nativeGa = window[name]; }).bind(this);
-}
-
-function wrap(fn) {
- return function (success, error, args) {
- try {
- fn.apply(this, args);
- setTimeout(success, 0);
- } catch (err) {
- defer(error, err);
- }
- };
-}
-
-function defer(fn) {
- var args = Array.prototype.slice.call(arguments, 1);
- setTimeout(function () {
- fn.apply(null, args);
- }, 0);
-}
-
-require('cordova/exec/proxy').add('UniversalAnalytics', new UniversalAnalyticsProxy());