From 68511b1ba99de68d0dc0250874413d9e066af58d Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Tue, 3 Sep 2019 13:20:00 +0200 Subject: [PATCH] wip #2951 @2 --- resources/public/js/app.js | 38 +------------------------ resources/public/js/gtag.js | 51 ++++++++++++++++++++++++++++++++++ resources/views/head.blade.php | 2 +- 3 files changed, 53 insertions(+), 38 deletions(-) create mode 100644 resources/public/js/gtag.js diff --git a/resources/public/js/app.js b/resources/public/js/app.js index 58dff40..316f2c8 100644 --- a/resources/public/js/app.js +++ b/resources/public/js/app.js @@ -1,38 +1,2 @@ require('element-closest'); - -document.addEventListener('DOMContentLoaded', function () { - Array.prototype.forEach.call(document.querySelectorAll('meta[data-ga]'), function (el, i) { - handleGtag(el) - }); -}); - -document.addEventListener('click', function (e) { - - if (e.target.matches('[data-ga]')) { - handleGtag(e.target); - } - if (e.target.closest('[data-ga]')) { - handleGtag(e.target.closest('[data-ga]')); - } -}, false); - -function handleGtag(el) { - if (el.getAttribute('data-ga') === 'event') { - console.log(el); - let action = el.getAttribute('data-ga-action'); - let category = el.getAttribute('data-ga-category'); - let label = el.getAttribute('data-ga-label'); - let value = el.getAttribute('data-ga-value'); - let options = {non_interaction: el.getAttribute('data-ga-noninteraction') === 1}; - if (null !== category) { - options.event_category = category; - } - if (null !== label) { - options.event_label = label; - } - if (null !== value) { - options.value = value; - } - gtag('event', action, options) - } -} +window.cubistga = require('./gtag'); diff --git a/resources/public/js/gtag.js b/resources/public/js/gtag.js new file mode 100644 index 0000000..43420e0 --- /dev/null +++ b/resources/public/js/gtag.js @@ -0,0 +1,51 @@ +function cubistga() { + this.initEvents(); +} + +cubistga.prototype.initEvents = function () { + var $this = this; + document.addEventListener('DOMContentLoaded', function () { + Array.prototype.forEach.call(document.querySelectorAll('meta[data-ga]'), function (el, i) { + $this.handleGtag(el) + }); + }); + + document.addEventListener('click', function (e) { + if (e.target.matches('[data-ga]')) { + $this.handleGtag(e.target); + } + if (e.target.closest('[data-ga]')) { + $this.handleGtag(e.target.closest('[data-ga]')); + } + }, false); +}; + +cubistga.prototype.event = function (action, category, label, value, noninteraction) { + if (noninteraction === undefined) { + noninteraction = false; + } + let options = {non_interaction: noninteraction}; + if (undefined !== category && null !== category) { + options.event_category = category; + } + if (undefined !== label && null !== label) { + options.event_label = label; + } + if (undefined !== value && null !== value) { + options.value = value; + } + return gtag('event', action, options) +}; + +cubistga.prototype.handleGtag = function (el) { + if (el.getAttribute('data-ga') === 'event') { + let action = el.getAttribute('data-ga-action'); + let category = el.getAttribute('data-ga-category'); + let label = el.getAttribute('data-ga-label'); + let value = el.getAttribute('data-ga-value'); + + return this.event(action, category, label, value, el.getAttribute('data-ga-noninteraction') === 1); + } +}; + +module.exports = new cubistga(); diff --git a/resources/views/head.blade.php b/resources/views/head.blade.php index f2e5548..67b6b22 100644 --- a/resources/views/head.blade.php +++ b/resources/views/head.blade.php @@ -9,6 +9,6 @@ } gtag('js', new Date()); - gtag('config', '{{$id}}'); + gtag('config', '{{$id}}', {'anonymize_ip': true}); @endif -- 2.39.5