UNPKG

angular-analyzer

Version:

A slightly differnet take on angular analytics

1 lines 4.64 kB
!function(){"use strict";angular.module("analyzer",[])}(),function(){"use strict";function e(){function e(e,t){n.indexOf(e)!==-1&&(l[e].indexOf(t)>-1||l[e].push(t))}function t(e,t){if(t){var n=l[e].indexOf(t)||-1;n>-1&&l[e].splice(n)}else l[e]=[]}function o(e,t){(l[e]||[]).forEach(function(e){e(t)})}function a(e,t){o("setCustomData",{name:e,value:t})}function i(e){o("setUser",e)}function r(e,t,n){o("timing",{category:e,label:t,milliseconds:n})}function c(){var e={on:u.on,off:u.off,emit:u.emit,trackPageViews:u.trackPageViews,setCustomData:u.setCustomData,setUser:u.setUser,sendTiming:u.sendTiming};return e}var l={};n.forEach(function(e){l[e]=[]});var u={trackPageViews:!0,on:e,off:t,emit:o,setUser:i,setCustomData:a,sendTiming:r,$get:c};return u}function t(e,t){e.trackPageViews!==!1&&t.$on("$locationChangeSuccess",function(t,n){var o=n.replace(window.location.origin,"");e.emit("url",{origin:window.location.origin,relative:o,absolute:n})})}t.$inject=["$analyzer","$rootScope"],angular.module("analyzer").provider("$analyzer",e).run(t);var n=["click","url","onComplete","onCompleteError","setCustomData","setUser","timing"]}(),function(){"use strict";function e(){function e(e){return void 0!==o[e]}function a(e){var a;e.attr("role");if(a=o[a],!a&&(a=n[a],!a&&(a=t[a],!a))){var i=e[0].nodeName.toLowerCase();return a=t[i],a?a:"input"===i?(a=n[e.attr("type")],a?a:(a=e.attr("type"),a?"input:"+e.attr("type"):"input")):void 0}}function i(e){var t,n;if("input"===e[0].nodeName.toLowerCase()){var o=e.attr("type");if("button"===o||"submit"===o)return r(e.attr("value"));var a=e.attr("name");if(a&&(n=e.parent()[0].querySelector("[for="+a+"]"),n&&"label"===n.nodeName.toLowerCase()))return r(n.textContent);if(!n){if(n=c(e[0]),n&&"label"===n.nodeName.toLowerCase())return r(n.textContent);if(n=l(e[0]),n&&"label"===n.nodeName.toLowerCase())return r(n.textContent);if(n=e.parent(),"label"===n[0].nodeName.toLowerCase())return r(n.text())}}if(Array.prototype.slice.call(e[0].children).forEach(function(e){3===e.nodeType&&(t=r(e.textContent))}),!t){var i=e[0].querySelector("span");i&&i.textContent&&(t=r(i.textContent))}return t}function r(e){return e=e.replace(/^\s+|\s+$/g,""),""===e?void 0:e}function c(e){do e=e.previousSibling;while(e&&1!==e.nodeType);return e}function l(e){do e=e.nextSibling;while(e&&1!==e.nodeType);return e}var u={getElementType:a,isClickType:e,getLabel:i};return u}angular.module("analyzer").factory("$analyzerUtil",e);var t={a:"anchor",button:"button"},n={checkbox:"checkbox",button:"button",submit:"submit-button"},o={anchor:"anchor",button:"button",checkbox:"checkbox","submit-button":"submit-button"}}(),function(){"use strict";function e(e,t,n,o,a){function i(i,r){var c,l=void 0!==r.analyzerOnComplete,u=void 0!==r.analyzerOnResolve,s=void 0!==r.analyzerOnReject;return(l||u||s)&&void 0!==r.ngClick&&(c=n(r.ngClick),r.$set("ngClick",void 0)),function(n,i,f){function m(){i.on("click",function(e){var o=function(){y(c(n,{$event:e}),v,p)};a.$$phase?n.$evalAsync(o):n.$apply(o),t.emit("click",{clickEvent:e,type:v,label:p,category:v,action:g})})}function y(e,n,a){o.when(e).then(function(){(l||u)&&t.emit("onComplete",{type:n,label:a,category:n,action:"onComplete"})})["catch"](function(){(l||s)&&t.emit("onCompleteError",{type:n,label:a,category:n,action:"onCompleteError"})})}var p=r.analyzerLabel||e.getLabel(i),g=r.analyzerAction||"click",v=r.analyzerCategory||e.getElementType(i);e.isClickType(v)&&m()}}var r={restrict:"A",compile:i};return r}e.$inject=["$analyzerUtil","$analyzer","$parse","$q","$rootScope"],angular.module("analyzer").directive("analyzer",e)}(),function(){"use strict";function e(e){var n=t();e.on("url",function(t){e.trackPageViews!==!1&&(n({command:"set",page:t.relative}),n({hitType:"pageview",page:t.relative}))}),e.on("click",function(e){n({hitType:"event",eventCategory:e.type,eventAction:e.action,eventLabel:e.label})}),e.on("onComplete",function(e){n({hitType:"event",eventCategory:e.type,eventAction:e.action,eventLabel:e.label})}),e.on("onCompleteError",function(e){n({hitType:"event",eventCategory:e.type,eventAction:e.action,eventLabel:e.label})}),e.on("setCustomData",function(e){var t={};t[e.name]=e.value.toString(),n(angular.extend({command:"set"},t))}),e.on("setUser",function(e){n(angular.extend({command:"set"},{userId:e.toString()}))}),e.on("timing",function(e){n({hitType:"timing",timingCategory:e.category,timingVar:e.label,timingValue:e.milliseconds})})}function t(){return"function"!=typeof ga?angular.noop:function(e){var t=e.command||"send";delete e.command,ga(t,e)}}e.$inject=["$analyzerProvider"],angular.module("analyzer.ga",["analyzer"]).config(e)}();