ngx-analytics
Version:
Vendor-agnostic web analytics for Angular2 applications, based on angulartics2
84 lines (79 loc) • 4.11 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('ngx-analytics')) :
typeof define === 'function' && define.amd ? define(['exports', '@angular/core', 'ngx-analytics'], factory) :
(factory((global['ngx-analytics'] = global['ngx-analytics'] || {}, global['ngx-analytics'].gtm = {}),global.ng.core,global['ngx-analytics']));
}(this, (function (exports,core,ngxAnalytics) { 'use strict';
var __assign = (undefined && undefined.__assign) || Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
var GoogleTagManagerDefaults = (function () {
function GoogleTagManagerDefaults() {
this.userId = null;
}
return GoogleTagManagerDefaults;
}());
var NgxAnalyticsGoogleTagManager = (function () {
function NgxAnalyticsGoogleTagManager(ngxAnalytics$$1) {
var _this = this;
this.ngxAnalytics = ngxAnalytics$$1;
if (typeof dataLayer !== 'undefined' && dataLayer) {
dataLayer = window.dataLayer = window.dataLayer || [];
}
var defaults = new GoogleTagManagerDefaults;
this.ngxAnalytics.settings.gtm = __assign({}, defaults, this.ngxAnalytics.settings.gtm);
this.ngxAnalytics.pageTrack.subscribe(function (x) { return _this.pageTrack(x.path); });
this.ngxAnalytics.eventTrack.subscribe(function (x) { return _this.eventTrack(x.action, x.properties); });
this.ngxAnalytics.exceptionTrack.subscribe(function (x) { return _this.exceptionTrack(x); });
this.ngxAnalytics.setUsername.subscribe(function (x) { return _this.setUsername(x); });
}
NgxAnalyticsGoogleTagManager.prototype.pageTrack = function (path) {
if (typeof dataLayer !== 'undefined' && dataLayer) {
dataLayer.push({
'event': 'Page View',
'content-name': path,
'userId': this.ngxAnalytics.settings.gtm.userId
});
}
};
NgxAnalyticsGoogleTagManager.prototype.eventTrack = function (action, properties) {
properties = properties || {};
if (typeof dataLayer !== 'undefined' && dataLayer) {
dataLayer.push(__assign({ event: properties.event || 'interaction', target: properties.category || 'Event', action: action, label: properties.label, value: properties.value, interactionType: properties.noninteraction, userId: this.ngxAnalytics.settings.gtm.userId }, properties.gtmCustom));
}
};
NgxAnalyticsGoogleTagManager.prototype.exceptionTrack = function (properties) {
if (!properties || !properties.appId || !properties.appName || !properties.appVersion) {
console.error('Must be setted appId, appName and appVersion.');
return;
}
if (properties.fatal === undefined) {
console.log('No "fatal" provided, sending with fatal=true');
properties.exFatal = true;
}
properties.exDescription = properties.event ? properties.event.stack : properties.description;
this.eventTrack("Exception thrown for " + properties.appName + " <" + properties.appId + "@" + properties.appVersion + ">", {
'category': 'Exception',
'label': properties.exDescription
});
};
NgxAnalyticsGoogleTagManager.prototype.setUsername = function (userId) {
this.ngxAnalytics.settings.gtm.userId = userId;
};
NgxAnalyticsGoogleTagManager.decorators = [
{ type: core.Injectable },
];
NgxAnalyticsGoogleTagManager.ctorParameters = function () { return [
{ type: ngxAnalytics.NgxAnalytics, },
]; };
return NgxAnalyticsGoogleTagManager;
}());
exports.GoogleTagManagerDefaults = GoogleTagManagerDefaults;
exports.NgxAnalyticsGoogleTagManager = NgxAnalyticsGoogleTagManager;
Object.defineProperty(exports, '__esModule', { value: true });
})));
//# sourceMappingURL=gtm.umd.js.map