Commit e1ba9a85 by James Ooi

Cleanup code

parent 5b066770
......@@ -9,7 +9,6 @@
import 'intersection-observer';
import * as Utils from './utils';
declare var gtag: (action: string, ...args: any[]) => any;
......@@ -34,10 +33,10 @@ interface EventData {
}
/**
* Foresight is an analytics library that allows for declarative event tracking
* in your websites.
* @class
*/
class Foresight {
......@@ -71,7 +70,7 @@ class Foresight {
private _observer: IntersectionObserver = null;
/**
* @constructor Foresight
* @constructor
*/
constructor(config: ForesightConfig) {
this.options = { ...Foresight.defaultOptions, ...config };
......@@ -150,8 +149,9 @@ class Foresight {
/**
* Parse an event string and returns a `EventData` object.
* @private
*/
parseEventString(eventString: string): EventData {
private _parseEventString(eventString: string): EventData {
const split = eventString.split(';');
let [ category, action, label ] = split;
......@@ -169,9 +169,9 @@ class Foresight {
* is clicked or middle clicked.
*
* @returns Returns a function to remove the event listener.
* @private
*/
private _trackClicks(element: Element): Function {
// Define listen fucntion
const listener = (e) => {
this._onTrackedClick(element, e);
......@@ -180,13 +180,10 @@ class Foresight {
element.addEventListener('click', listener);
element.addEventListener('auxclick', listener);
// Define unlisten function
const unlisten = () => {
return () => {
element.removeEventListener('click', listener);
element.removeEventListener('auxclick', listener);
}
return unlisten;
};
}
......@@ -195,21 +192,26 @@ class Foresight {
* is in view.
*
* @returns Returns a function that disconnects the view observer.
* @private
*/
private _trackViews(element: Element): Function {
this._observer.observe(element);
return () => this._observer.unobserve(element);
return () => {
this._observer.unobserve(element);
};
}
/**
* @private
* Handles a click event on an element that is being tracked by Foresight.
* @private
*/
private _onTrackedClick(element: Element, event: Event) {
const s = element.getAttribute('data-track');
const data = this.parseEventString(s);
const data = this._parseEventString(s);
data.interaction = !this.options.nonInteractionClicks;
if (element.getAttribute('data-track:non-interaction') !== null) {
data.interaction = false;
}
......@@ -222,17 +224,16 @@ class Foresight {
}
/**
* @private
* Handles a view event on an element that is being tracked by Foresight.
* @private
*/
private _onTrackedView(element: Element, observer) {
const s = element.getAttribute('data-track-view');
const data = this.parseEventString(s);
const data = this._parseEventString(s);
data.interaction = !this.options.nonInteractionViews;
if (element.getAttribute('data-track-view:interaction') !== null) {
data.interaction = true;
} else {
data.interaction = false;
}
gtag('event', data.action, {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment