Commit e1ba9a85 by James Ooi

Cleanup code

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