From 2acb434381b9182f391a5b9e5779de425eded757 Mon Sep 17 00:00:00 2001 From: Nicholas Albion Date: Thu, 14 Jan 2016 23:50:59 +1100 Subject: [PATCH] expanded upon event API --- google.analytics/ga-tests.ts | 10 ++++++++++ google.analytics/ga.d.ts | 35 ++++++++++++++++++++++++++++++++++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/google.analytics/ga-tests.ts b/google.analytics/ga-tests.ts index ba4f80dea..226d1432b 100644 --- a/google.analytics/ga-tests.ts +++ b/google.analytics/ga-tests.ts @@ -23,6 +23,16 @@ describe('UniversalAnalytics', () => { ga('create', 'UA-65432-1', 'auto', {some: 'config'}); ga('send', 'pageview'); ga('send', 'pageview', {some: 'details'}); + ga('send', 'event', 'Videos', 'play', 'Fall Campaign'); + ga('send', {hitType: 'event', eventCategory: 'Videos', eventAction: 'play', eventLabel: 'Fall Campaign'}); + ga('send', 'event', 'Videos', 'play', 'Fall Campaign', {nonInteraction: true}); + ga('send', 'pageview', '/page'); + ga('send', 'social', {'socialNetwork': 'facebook', 'socialAction': 'like', 'socialTarget': 'http://foo.com'}); + ga('send', 'social', {'socialNetwork': 'google+', 'socialAction': 'plus', 'socialTarget': 'http://foo.com'}); + ga('send', 'timing', {'timingCategory': 'category', 'timingVar': 'lookup', 'timingValue': 123}); + ga('send', 'timing', {'timingCategory': 'category', 'timingVar': 'lookup', 'timingValue': 123, 'timingLabel': 'label'}); + ga('trackerName.send', 'event', 'load'); + ga.create('UA-65432-1', 'auto'); ga.create('UA-65432-1', {some: 'config'}); ga.create('UA-65432-1', 'auto', {some: 'config'}); diff --git a/google.analytics/ga.d.ts b/google.analytics/ga.d.ts index a8e1b1e25..9fc9d34cc 100644 --- a/google.analytics/ga.d.ts +++ b/google.analytics/ga.d.ts @@ -36,15 +36,48 @@ interface GoogleAnalytics { async: boolean; } +enum HitType { + 'pageview', 'screenview', 'event', 'transaction', 'item', 'social', 'exception', 'timing' +} + declare module UniversalAnalytics { // https://developers.google.com/analytics/devguides/collection/analyticsjs/method-reference interface ga { l: number; q: any[]; + + (command: 'send', hitType: 'event', eventCategory: string, eventAction: string, + eventLabel?: string, eventValue?: number, fieldsObject?: {} ): void; + (command: 'send', hitType: 'event', fieldsObject: { + eventCategory: string + eventAction: string, + eventLabel?: string, + eventValue?: number, + nonInteraction?: boolean}): void; + (command: 'send', fieldsObject: { + hitType: 'event', + eventCategory: string + eventAction: string, + eventLabel?: string, + eventValue?: number, + nonInteraction?: boolean}): void; + (command: 'send', hitType: 'pageview', page: string): void; + (command: 'send', hitType: 'social', + socialNetwork: string, socialAction: string, socialTarget: string): void; + (command: 'send', hitType: 'social', + fieldsObject: {socialNetwork: string, socialAction: string, socialTarget: string}): void; + (command: 'send', hitType: 'timing', + timingCategory: string, timingVar: string, timingValue: number): void; + (command: 'send', hitType: 'timing', + fieldsObject: {timingCategory: string, timingVar: string, timingValue: number}): void; + (command: 'send', hitType: HitType, ...fields): void; + (command: 'send', fieldsObject: {}): void; + + (command: string, hitDetails: {}): void; (command: string, poly: string, opt_poly?: {}): UniversalAnalytics.Tracker; (command: string, trackingId: string, auto: string, opt_configObject?: {}): UniversalAnalytics.Tracker; - (command: string, hitDetails: {}): void; + create(trackingId: string, opt_configObject?: {}): UniversalAnalytics.Tracker; create(trackingId: string, auto: string, opt_configObject?: {}): UniversalAnalytics.Tracker; getAll(): UniversalAnalytics.Tracker[];