UNPKG

sportsbet-mobile

Version:
280 lines (250 loc) 6.65 kB
/// <reference path=".#ts/client.d.ts" /> var dataLayer = this.dataLayer = []; var userArgs: any = {}; function userArgsReady() { if (Meteor.loggingIn()) { // console.log('logging in...'); return false; } if (Meteor.userId()) { var user = Users.Profile.active(); if (!user) { // if (!Backend.isProduction) { // console.log('logged in and user data not here yet...'); // } return false; } if (Reporting.Tag.db.find().count() !== user.tags.ids.length) { // if (!Backend.isProduction) { // console.log('user tags not here yet...'); // } return false; } if (user.tracker.id && !user.tracker.fetch()) { // if (!Backend.isProduction) { // console.log('user tracker not here yet...'); // } return false; } if (user.affiliate.id && !user.affiliate.fetch()) { // if (!Backend.isProduction) { // console.log('user affiliate not here yet...'); // } return false; } } return true; } var userArgsDep = new Tracker.Dependency(); Tracker.autorun(function () { if (!userArgsReady()) { // if (!Backend.isProduction) { // console.log('user args not ready...'); // } return; } if (Meteor.userId()) { userArgs = { visitorLoginStatus: 'Logged in', visitorId: gtmVisitorId(), visitorAffiliate: gtmAffiliate(), visitorTracker: gtmTracker(), userstagValue: gtmTag('Value'), userstagLifestage: gtmTag('Lifestage'), visitorUsername: Users.Profile.active().username }; } else { userArgs = { visitorLoginStatus: 'Logged out', visitorId: 'Anonymous', visitorAffiliate: undefined, visitorTracker: undefined, userstagValue: undefined, userstagLifestage: undefined, visitorUsername: undefined }; } userArgsDep.changed(); }); googleSend({ eventCategory: 'Main', eventAction: 'Initial page load', event: 'Page Load' }); function googleSend(args, waitUser = false) { // if (!Backend.isProduction) { // console.log('initiating send:', args); // } Tracker.autorun(function () { // if (!Backend.isProduction) { // console.log('trying to send', args); // } userArgsDep.depend(); if (!userArgsReady() || (waitUser && !userArgs.visitorUsername)) { // if (!Backend.isProduction) { // console.log('user args not ready...', args); // } return; } Tracker.currentComputation.stop(); // All GTM parameters. Sending all of them even if empty var gtmArgs = _.extend({ 'event': undefined, 'eventCategory': undefined, 'eventAction': undefined, 'eventLabel': undefined, 'eventValue': undefined, 'pageEventArea': undefined, 'pageModule': undefined, 'pageActiveTab': gtmActiveTab(), 'pageVertical': undefined, 'pageLocale': gtmActiveLang(), 'pageProduct': undefined, 'pageGameName': undefined, 'deviceOrientation': getScreenOrientation(), 'creativeUrl': undefined, 'registrationsStarted': undefined, 'registrationsCompleted': undefined, 'engagementImpressions': undefined, 'engagementClicks': undefined, 'deposits': undefined, 'depositAmount': undefined, 'withdrawals': undefined, 'clickedPlayForFun': undefined, 'clickedPlayForReal': undefined, 'starRating': undefined, 'depositCount': undefined, 'depositTotal': undefined }, userArgs); // if (!Backend.isProduction) { // console.log('sending...', gtmArgs); // } // GTM param name to GA param name map var gaParam = { eventCategory: 'eventCategory', eventAction: 'eventAction', eventLabel: 'eventLabel', visitorId: 'dimension1', pageVertical: 'dimension2', pageModule: 'dimension3', pageActiveTab: 'dimension4', pageGameName: 'dimension5', pageLocale: 'dimension6', pageProduct: 'dimension7', pageEventArea: 'dimension8', visitorLoginStatus: 'dimension9', creativeUrl: 'dimension10', deviceOrientation: 'dimension11', depositAmount: 'metrics1', registrationsStarted: 'metrics2', registrationsCompleted: 'metrics3', engagementImpressions: 'metrics4', engagementClicks: 'metrics5', deposits: 'metrics6', withdrawals: 'metrics7', clickedPlayForFun: 'metrics8', clickedPlayForReal: 'metrics9', starRating: 'metrics10' }; // Converting GTM property names to GA property names var gaArgs = {}; gaArgs['hitType'] = 'event'; gaArgs['dimension1'] = gtmVisitorId(); gaArgs['dimension9'] = gtmLoginStatus(); gaArgs['dimension4'] = gtmActiveTab(); gaArgs['dimension6'] = gtmActiveLang(); gaArgs['dimension11'] = getScreenOrientation(); _.each(args, function (val, key) { if (gaParam[key] && val) { gaArgs[gaParam[key]] = val; } }); // Overriding default GTM values with incoming ones _.each(args, function (val, key) { gtmArgs[key] = val; }); if (gtmArgs['event'] != 'Page Load') { gtmArgs['event'] = gtmArgs['eventCategory'] + '+' + gtmArgs['eventAction']; } // Sending GTM event dataLayer.push(gtmArgs); // Sending GA event if (typeof ga === 'function') { ga('send', gaArgs); } Events.EventClient.add({ type: gtmArgs['event'], tracker: $.cookie('refCode'), reference: location.pathname }); }); } function gtmActiveTab() { if (!Pages.Page.root) { return; } return typeof Pages.active().title == 'function' ? (<any>Pages.active()).title() : Pages.active().title; } function gtmVisitorId() { return Users.Profile.active() ? Users.Profile.active()._id : 'Anonymous'; } function gtmAffiliate() { var user = Users.Profile.active(); if (!user) { return undefined; } var affiliate = user.affiliate; if (!affiliate) { return undefined; } var aff = affiliate.fetch(); if (!aff || !aff.name) { return undefined; } return aff.name; } function gtmTracker() { var user = Users.Profile.active(); if (!user) { return undefined; } var userTracker = user.tracker; if (!userTracker) { return undefined; } var tracker = userTracker.fetch(); if (!tracker || !tracker.name) { return undefined; } return tracker.name; } function gtmTag(name: string) { var user = Users.Profile.active(); if (!user) { return; } var group = Reporting.TagGroup.db.findOne({name}); if (!group) { return; } var tag = user.tags.first({group}); if (!tag) { return; } return tag._id; } function gtmLoginStatus() { return Users.Profile.active() ? 'Logged in' : 'Logged out'; } function gtmActiveLang() { return Session.get('activeLanguage'); } this.googleSend = googleSend; this.gtmActiveTab = gtmActiveTab; this.gtmVisitorId = gtmVisitorId; this.gtmLoginStatus = gtmLoginStatus; this.gtmActiveLang = gtmActiveLang; this.gtmAffiliate = gtmAffiliate; this.gtmTracker = gtmTracker; this.gtmTag = gtmTag;