]> _ Git - cubist_gtag.git/commitdiff
wip #2951
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Mon, 2 Sep 2019 16:41:47 +0000 (18:41 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Mon, 2 Sep 2019 16:41:47 +0000 (18:41 +0200)
composer.json
resources/public/js/app.js [new file with mode: 0644]

index cc7e2dd9e3182ca54a9991aee399c08b94a471be..7226ef48b85baa5675f0c9f9b1f2b291d28236d6 100644 (file)
@@ -1,5 +1,5 @@
 {
-    "name": "cubist\/gtag",
+    "name": "cubist/gtag",
     "description": "Google analytics tracking code for Laravel",
     "type": "library",
     "license": "proprietary",
@@ -22,7 +22,7 @@
     ],
     "require": {
         "php": ">=5.5.0",
-        "laravel/framework": "5.8.*"
+        "laravel/framework": "^5.8"
     },
     "repositories": [
         {
diff --git a/resources/public/js/app.js b/resources/public/js/app.js
new file mode 100644 (file)
index 0000000..58dff40
--- /dev/null
@@ -0,0 +1,38 @@
+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)
+    }
+}