/** * The solution to tracking page views and events in a SPA with AngularJS * @version v0.4.0 - 2015-11-30 * @link https://github.com/mgonto/angularytics * @author Martin Gontovnikas * @license MIT License, http://www.opensource.org/licenses/MIT */ !function(){angular.module("angularytics",[]).provider("Angularytics",function(){var a=["Google"];this.setEventHandlers=function(c){angular.isString(c)&&(c=[c]),a=[],angular.forEach(c,function(c){a.push(b(c))})};var b=function(a){return a.charAt(0).toUpperCase()+a.substring(1)},c="$locationChangeSuccess";this.setPageChangeEvent=function(a){c=a};var d=!0;this.disablePageViewTracking=function(){d=!1},this.$get=["$injector","$rootScope","$location",function(b,e,f){var g=[];angular.forEach(a,function(a){g.push(b.get("Angularytics"+a+"Handler"))});var h=function(a){angular.forEach(g,function(b){a(b)})},i={};return i.init=function(){},i.trackEvent=function(a,b,c,d,e){h(function(f){a&&b&&f.trackEvent(a,b,c,d,e)})},i.trackPageView=function(a){h(function(b){a&&b.trackPageView(a)})},i.trackTiming=function(a,b,c,d){h(function(e){a&&b&&c&&e.trackTiming(a,b,c,d)})},d&&e.$on(c,function(){i.trackPageView(f.url())}),i}]})}(),function(){angular.module("angularytics").factory("AngularyticsConsoleHandler",["$log",function(a){var b={};return b.trackPageView=function(b){a.log("URL visited",b)},b.trackEvent=function(b,c,d,e,f){a.log("Event tracked",b,c,d,e,f)},b.trackTiming=function(b,c,d,e){a.log("Timing tracked",b,c,d,e)},b}])}(),function(){angular.module("angularytics").factory("AngularyticsGoogleHandler",function(){var a={};return a.trackPageView=function(a){_gaq.push(["_set","page",a]),_gaq.push(["_trackPageview",a])},a.trackEvent=function(a,b,c,d,e){_gaq.push(["_trackEvent",a,b,c,d,e])},a.trackTiming=function(a,b,c,d){_gaq.push(["_trackTiming",a,b,c,d])},a}).factory("AngularyticsGoogleUniversalHandler",function(){var a={};return a.trackPageView=function(a){ga("set","page",a),ga("send","pageview",a)},a.trackEvent=function(a,b,c,d,e){ga("send","event",a,b,c,d,{nonInteraction:e})},a.trackTiming=function(a,b,c,d){ga("send","timing",a,b,c,d)},a}).factory("AngularyticsGoogleTagManagerHandler",function(){var a={},b=window.dataLayer=window.dataLayer||[];return a.trackPageView=function(a){b.push({event:"virtualPageview",vpPath:a})},a.trackEvent=function(a,c,d,e,f){b.push({eventCategory:a,eventAction:c,eventLabel:d,eventValue:e,event:"analyticsEvent"})},a})}(),function(){angular.module("angularytics").filter("trackEvent",["Angularytics",function(a){return function(b,c,d,e,f,g){return a.trackEvent(c,d,e,f,g),b}}])}();