/**
* @license Angulartics v0.15.19 * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics * License: MIT */
(function(angular) { 'use strict';
/**
* @ngdoc overview * @name angulartics.google.analytics * Enables analytics support for Google Analytics (http://google.com/analytics) */
angular.module('angulartics.google.analytics.cordova', ['angulartics'])
.provider('googleAnalyticsCordova', function () {
var GoogleAnalyticsCordova = [ '$q', '$log', 'ready', 'debug', 'trackingId', 'period', function ($q, $log, ready, debug, trackingId, period) { var deferred = $q.defer(); var deviceReady = false; window.addEventListener('deviceReady', function () { deviceReady = true; deferred.resolve(); }); setTimeout(function () { if (!deviceReady) { deferred.resolve(); } }, 3000); function success() { if (debug) { $log.info(arguments); } } function failure(err) { if (debug) { $log.error(err); } } this.init = function () { return deferred.promise.then(function () { var analytics = window.plugins && window.plugins.gaPlugin; if (analytics) { analytics.init(function onInit() { ready(analytics, success, failure); }, failure, trackingId, period || 10); } else if (debug) { $log.error('Google Analytics for Cordova is not available'); } }); }; }]; return { $get: ['$injector', function ($injector) { return $injector.instantiate(GoogleAnalyticsCordova, { ready: this._ready || angular.noop, debug: this.debug, trackingId: this.trackingId, period: this.period }); }], ready: function (fn) { this._ready = fn; } };
})
.config(['$analyticsProvider', 'googleAnalyticsCordovaProvider', function ($analyticsProvider, googleAnalyticsCordovaProvider) {
googleAnalyticsCordovaProvider.ready(function (analytics, success, failure) { $analyticsProvider.registerPageTrack(function (path) { analytics.trackPage(success, failure, path); }); $analyticsProvider.registerEventTrack(function (action, properties) { analytics.trackEvent(success, failure, properties.category, action, properties.label, properties.value); }); });
}])
.run(['googleAnalyticsCordova', function (googleAnalyticsCordova) {
googleAnalyticsCordova.init();
}]);
})(angular);