]> _ Git - fluidbook-html5.git/commitdiff
wip #4978 @1
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 22 Dec 2021 11:06:54 +0000 (12:06 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 22 Dec 2021 11:06:54 +0000 (12:06 +0100)
js/libs/fluidbook/fluidbook.stats.js
js/libs/fluidbook/workers/stats.js

index 31303cfe090c05bdea69e77668da8cb0b3f05964..8d87da2e9d647e9fb9da29aa40ff7dffe8db10ab 100644 (file)
@@ -9,6 +9,21 @@ function FluidbookStats(fluidbook) {
     if (this.fluidbook.settings.stats) {\r
         this.worker = new Worker('js/libs/fluidbook/workers/stats.js');\r
     }\r
+    if (this.fluidbook.settings.statsMatomo) {\r
+        window._paq = window._paq || [];\r
+        window._paq.push(["setDoNotTrack", true]);\r
+        window._paq.push(['enableHeartBeatTimer']);\r
+        window._paq.push(['enableLinkTracking']);\r
+        (function (siteId) {\r
+            var u = "https://v3.stats.fluidbook.com/";\r
+            window._paq.push(['setTrackerUrl', u + 'matomo.php']);\r
+            window._paq.push(['setSiteId', siteId]);\r
+            var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0];\r
+            g.async = true;\r
+            g.src = u + 'matomo.js';\r
+            s.parentNode.insertBefore(g, s);\r
+        })(this.fluidbook.settings.statsMatomo);\r
+    }\r
     if (this.fluidbook.settings.googleTagManager !== undefined && this.fluidbook.settings.googleTagManager !== '') {\r
         this.ga = 'gtm';\r
     } else if (this.fluidbook.settings.googleAnalytics !== '') {\r
@@ -104,6 +119,9 @@ FluidbookStats.prototype = {
         if (this.fluidbook.settings.stats) {\r
             this.trackFluidbook(type, page, extra);\r
         }\r
+        if (this.fluidbook.settings.statsMatomo) {\r
+            this.trackMatomo(type, page, extra);\r
+        }\r
         this.trackGoogleAnalytics(type, page, extra);\r
     },\r
 \r
@@ -128,6 +146,58 @@ FluidbookStats.prototype = {
         }\r
     },\r
 \r
+    trackMatomo(type, page, extra, url) {\r
+        console.log('track matomo', type, page, extra, url);\r
+        if (url === undefined) {\r
+            url = window.location;\r
+        }\r
+        switch (type) {\r
+            case 0: // Change page\r
+\r
+                window._paq.push(['setCustomUrl', url]);\r
+                window._paq.push(['trackPageView']);\r
+                break;\r
+            case 10: // Open Book\r
+                window._paq.push(['trackPageView']);\r
+                break;\r
+            case 14: // Open chapters menu\r
+                window._paq.push(['trackEvent', 'menu', 'click', 'chapters']);\r
+                break;\r
+            case 6: // Click a link in a page\r
+                window._paq.push(['trackEvent', 'link', 'click', extra]);\r
+                break;\r
+            case 1: // Search\r
+                window._paq.push(['trackSiteSearch', extra]);\r
+                break;\r
+            case 3: // Print\r
+                window._paq.push(['trackEvent', 'menu', 'click', 'print']);\r
+                break;\r
+            case 5: // Share\r
+            case 12: // Facebook\r
+            case 13: // Twitter\r
+                window._paq.push(['trackEvent', 'share', 'send', type]);\r
+                break;\r
+            case 7: // PDF\r
+            case 8: // Partial PDF\r
+                window._paq.push(['trackEvent', 'menu', 'click', 'download']);\r
+                break;\r
+            case 4: // Bookmarks\r
+                window._paq.push(['trackEvent', 'bookmark', 'page', 'page ' + page]);\r
+                break;\r
+            case 9: // Extras\r
+                window._paq.push(['trackEvent', 'extra', 'click', extra]);\r
+                break;\r
+            case 2:// Zoom\r
+                window._paq.push(['trackEvent', 'zoom', 'page', page]);\r
+                break;\r
+            case 11:// Video\r
+                window._paq.push(['trackEvent', 'video', 'view', extra]);\r
+                break;\r
+            case 15://\r
+                window._paq.push(['trackEvent', 'cart', 'addproduct', extra]);\r
+        }\r
+    },\r
+\r
     trackGoogleAnalytics: function (type, page, extra, url) {\r
         this.checkGoogleAnalytics();\r
 \r
@@ -256,12 +326,7 @@ FluidbookStats.prototype = {
 \r
 \r
         var data = {\r
-            id: $this.id,\r
-            vid: $this.vid,\r
-            type: type,\r
-            page: page,\r
-            str: extra,\r
-            time: new Date().getTime()\r
+            id: $this.id, vid: $this.vid, type: type, page: page, str: extra, time: new Date().getTime()\r
         };\r
 \r
         setTimeout(function () {\r
index 9d7f3a6a5acddc09c38b805a6607728ad60c5599..16797335dc119da7052bcc787924bee75fca36d3 100644 (file)
@@ -2,6 +2,7 @@ importScripts('../../stand/axios.min.js', '../../polyfills/promise.min.js');
 
 onmessage = function (e) {
     var time = new Date().getTime();
+    e.data.matomo=1;
     e.data.offset = Math.round((time - e.data.time) / 1000);
     var url = 'https://stats.fluidbook.com/stats2.php?' + Object.keys(e.data).reduce(function (a, k) {
         a.push(k + '=' + encodeURIComponent(e.data[k]));