Repository: incubator-unomi
Updated Branches:
  refs/heads/master 45b04c2f0 -> ac325f945


http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ac325f94/extensions/web-tracker/javascript/package.json
----------------------------------------------------------------------
diff --git a/extensions/web-tracker/javascript/package.json 
b/extensions/web-tracker/javascript/package.json
index 39698b9..50149ef 100644
--- a/extensions/web-tracker/javascript/package.json
+++ b/extensions/web-tracker/javascript/package.json
@@ -21,7 +21,8 @@
   },
   "dependencies": {
     "@segment/analytics.js-core": "^3.7.2",
-    "@segment/analytics.js-integration": "^2.1.1"
+    "@segment/analytics.js-integration": "^2.1.1",
+    "extend": "^3.0.2"
   },
   "devDependencies": {
     "@segment/eslint-config": "^3.1.1",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ac325f94/extensions/web-tracker/javascript/src/analytics.js-integration-apache-unomi.js
----------------------------------------------------------------------
diff --git 
a/extensions/web-tracker/javascript/src/analytics.js-integration-apache-unomi.js
 
b/extensions/web-tracker/javascript/src/analytics.js-integration-apache-unomi.js
index 2553dfa..a619263 100644
--- 
a/extensions/web-tracker/javascript/src/analytics.js-integration-apache-unomi.js
+++ 
b/extensions/web-tracker/javascript/src/analytics.js-integration-apache-unomi.js
@@ -17,6 +17,7 @@
 'use strict';
 
 var integration = require('@segment/analytics.js-integration');
+var extend  = require('extend');
 
 var Unomi = module.exports = integration('Apache Unomi')
     .assumesPageview()
@@ -111,7 +112,7 @@ Unomi.prototype.fillPageData = function(unomiPage, props) {
     unomiPage.attributes = [];
     unomiPage.consentTypes = [];
     unomiPage.interests = props.interests || {};
-    unomiPage.pageInfo = unomiPage.pageInfo || props.pageInfo || {};
+    unomiPage.pageInfo = extend({}, unomiPage.pageInfo, props.pageInfo);
     unomiPage.pageInfo.pageName = unomiPage.pageInfo.pageName || props.title;
     unomiPage.pageInfo.pageID = unomiPage.pageInfo.pageID || props.path;
     unomiPage.pageInfo.pagePath = unomiPage.pageInfo.pagePath || props.path;
@@ -592,6 +593,8 @@ Unomi.prototype.extractFormData = function (form) {
                         }
                     }
                     break;
+                default:
+                    console.log("unomiTracker: " + e.nodeName + " form element 
type not implemented and will not be tracked.");
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ac325f94/extensions/web-tracker/javascript/yarn.lock
----------------------------------------------------------------------
diff --git a/extensions/web-tracker/javascript/yarn.lock 
b/extensions/web-tracker/javascript/yarn.lock
index 9054ee1..d0362d3 100644
--- a/extensions/web-tracker/javascript/yarn.lock
+++ b/extensions/web-tracker/javascript/yarn.lock
@@ -1055,6 +1055,10 @@ extend@3.0.1:
   version "3.0.1"
   resolved 
"https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444";
 
+extend@^3.0.2:
+  version "3.0.2"
+  resolved 
"https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa";
+
 fast-levenshtein@~2.0.4:
   version "2.0.6"
   resolved 
"https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917";

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ac325f94/extensions/web-tracker/wab/src/main/webapp/index.html
----------------------------------------------------------------------
diff --git a/extensions/web-tracker/wab/src/main/webapp/index.html 
b/extensions/web-tracker/wab/src/main/webapp/index.html
index 85437c7..9809a34 100644
--- a/extensions/web-tracker/wab/src/main/webapp/index.html
+++ b/extensions/web-tracker/wab/src/main/webapp/index.html
@@ -14,10 +14,8 @@
 ~ See the License for the specific language governing permissions and
 ~ limitations under the License.
 -->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
-
-<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<!doctype html>
+<html lang="en">
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
     <title>Apache Unomi Web Tracker Test Page</title>
@@ -43,62 +41,95 @@
     </style>
 
     <script type="text/javascript">
+        var path = location.pathname + location.hash;
         var unomiOption = {
             scope: 'realEstateManager',
-            url: 'http://localhost:8181'
-        };
-        window.unomiTracker || (window.unomiTracker = {}), function () {
-            function e(e) {
-                for (unomiTracker.initialize({"Apache Unomi": unomiOption}); 
n.length > 0;) {
-                    var r = n.shift(), t = r.shift();
-                    unomiTracker[t] && unomiTracker[t].apply(unomiTracker, r)
+            url: '', // we use an empty URL to make it relative to this page.
+            initialPageProperties: {
+                path: path,
+                pageInfo: {
+                    destinationURL: location.href,
+                    tags: ["tag1", "tag2", "tag3"],
+                    categories: ["category1", "category2", "category3"] /*,
+                    language: "en" */
+                },
+                interests: {
+                    "interest1": 1,
+                    "interest2": 2,
+                    "interest3": 3
                 }
             }
+        };
+        window.unomiTracker || (window.unomiTracker = {});
+        (function () {
+            var unomiTracker_queue = [];
+
+            var methods = ['trackSubmit', 'trackClick', 'trackLink', 
'trackForm', 'initialize', 'pageview', 'identify', 'reset', 'group', 'track', 
'ready', 'alias', 'debug', 'page', 'once', 'off', 'on', 'personalize'];
+
+            var factory = function (method) {
+                return function () {
+                    var args = Array.prototype.slice.call(arguments);
+                    args.unshift(method);
+                    unomiTracker_queue.push(args);
+                    return window.unomiTracker;
+                };
+            };
+
+            // For each of our methods, generate a queueing stub.
+            for (var i = 0; i < methods.length; i++) {
+                var method = methods[i];
+                window.unomiTracker[method] = factory(method);
+            }
 
-            for (var n = [], r = ["trackSubmit", "trackClick", "trackLink", 
"trackForm", "initialize", "pageview", "identify", "reset", "group", "track", 
"ready", "alias", "debug", "page", "once", "off", "on", "personalize"], t = 0; 
t < r.length; t++) {
-                var i = r[t];
-                window.unomiTracker[i] = function (e) {
-                    return function () {
-                        var r = Array.prototype.slice.call(arguments);
-                        return r.unshift(e), n.push(r), window.unomiTracker
+            function callback(e) {
+                unomiTracker.initialize({
+                    'Apache Unomi': unomiOption
+                });
+
+                // Loop through the interim analytics queue and reapply the 
calls to their
+                // proper analytics.js method.
+                while (unomiTracker_queue.length > 0) {
+                    var item = unomiTracker_queue.shift();
+                    var method = item.shift();
+                    if (unomiTracker[method]) {
+                        unomiTracker[method].apply(unomiTracker, item);
                     }
-                }(i)
+                }
             }
+
+            // Define a method to load Analytics.js from our CDN,
+            // and that will be sure to only ever load it once.
             unomiTracker.load = function () {
-                var n = document.createElement("script");
-                n.type = "text/javascript", n.async = !0, n.src = 
unomiOption.url + "/tracker/unomi-tracker.js", n.addEventListener ? 
n.addEventListener("load", function (n) {
-                    "function" == typeof e && e(n)
-                }, !1) : n.onreadystatechange = function () {
-                    "complete" !== this.readyState && "loaded" !== 
this.readyState || e(window.event)
-                };
-                var r = document.getElementsByTagName("script")[0];
-                r.parentNode.insertBefore(n, r)
-            }, document.addEventListener("DOMContentLoaded", 
unomiTracker.load), unomiTracker.page()
-        }();
-    </script>
+                // Create an async script element based on your key.
+                var script = document.createElement('script');
+                script.type = 'text/javascript';
+                script.async = true;
+                // TODO we might want to add a check on the url to see if it 
ends with / or not
+                script.src = unomiOption.url + '/tracker/unomi-tracker.js';
+
+                if (script.addEventListener) {
+                    script.addEventListener('load', function (e) {
+                        if (typeof callback === 'function') {
+                            callback(e);
+                        }
+                    }, false);
+                } else {
+                    script.onreadystatechange = function () {
+                        if (this.readyState === 'complete' || this.readyState 
=== 'loaded') {
+                            callback(window.event);
+                        }
+                    };
+                }
 
-    <script type="text/javascript">
-        // This is an example of how to provide more details page properties 
to the view event. This can be useful
-        // in the case of an SPA that wants to provide information about a 
view that has metadata such as categories,
-        // tags or interests.
-        path = location.pathname + location.hash;
-        properties = {
-            path: path,
-            pageInfo: {
-                destinationURL: location.href,
-                tags: ["tag1", "tag2", "tag3"],
-                categories: ["category1", "category2", "category3"],
-                language: "en"
-            },
-            interests: {
-                "interest1": 1,
-                "interest2": 2,
-                "interest3": 3
-            }
-        };
-        console.log(properties);
-        // this will trigger a second page view for the same page (the first 
page view is in the tracker snippet).
-        window.unomiTracker.page(properties);
+                // Insert our script next to the first script element.
+                var first = document.getElementsByTagName('script')[0];
+                first.parentNode.insertBefore(script, first);
+            };
+
+            document.addEventListener('DOMContentLoaded', unomiTracker.load);
+
+            unomiTracker.page(unomiOption.initialPageProperties);
+        })();
     </script>
 </head>
 <body>
@@ -161,5 +192,11 @@
     });
 </script>
 
+<p>
+    You can find more information about how this tracker works and how to 
integrate it into your pages in the
+    <a href="http://unomi.apache.org/manual/latest/index.html#_web_tracker"; 
target="_blank">Apache Unomi manual tracker
+        documentation</a>
+</p>
+
 </body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ac325f94/wab/src/main/webapp/index.html
----------------------------------------------------------------------
diff --git a/wab/src/main/webapp/index.html b/wab/src/main/webapp/index.html
index 9651690..dec81a4 100644
--- a/wab/src/main/webapp/index.html
+++ b/wab/src/main/webapp/index.html
@@ -64,6 +64,9 @@
       <div class="container" id="where-to-go">
           <h2>Where to go from here</h2>
           <ul>
+              <li>
+                  Try Apache Unomi's <a href="/tracker/">integrated tracker</a>
+              </li>
               <li>Checkout some cool <a 
href="http://unomi.apache.org/resources.html"; target="_blank">videos & 
tutorials</a>
               </li>
               <li>Read <a 
href="http://unomi.apache.org/manual/latest/index.html"; target="_blank">Apache 
Unomi's manual</a>

Reply via email to