repo: janusweb action: commit revision: path_from: revision_from: ed4065dec39d7c4d8cfe7d07a60a04a29699164a: path_to: revision_to:
commit ed4065dec39d7c4d8cfe7d07a60a04a29699164a Author: James BaicoianuDate: Mon Apr 11 02:29:47 2016 -0700 Added GA tracking event bindings diff --git a/scripts/tracking.js b/scripts/tracking.js new file mode 100644 index 0000000000000000000000000000000000000000..d140a6776e4ebb1d82ba3da14fa715f44a9d2d92 --- /dev/null +++ b/scripts/tracking.js @@ -0,0 +1,124 @@ +elation.require([], function() { + var track = true; + if (elation.env.isBrowser && track) { + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + ga('create', 'UA-49582649-2', 'auto'); + ga('set', 'page', "/"); + ga('send', 'pageview'); + + elation.events.add(null, 'room_change', function(ev) { + console.log('[tracking] room changed', ev.type, ev.data); + setTimeout(function() { + ga('set', 'page', '/#janus.url=' + ev.data); + ga('send', 'pageview'); + }, 100); + }); + elation.events.add(null, 'menu_enable', function(ev) { + console.log('[tracking] menu shown', ev); + ga('send', 'event', 'menu', 'show'); + }); + elation.events.add(null, 'menu_disable', function(ev) { + console.log('[tracking] menu hidden', ev); + ga('send', 'event', 'menu', 'hide'); + }); + elation.events.add(null, 'menuitem_activate', function(ev) { + console.log('[tracking] menu item selected', ev); + ga('send', 'event', 'menu', 'select', ev.element.properties.text); + }); + elation.events.add(null, 'janusweb_chat_send', function(ev) { + console.log('[tracking] chat sent', ev); + ga('send', 'event', 'player', 'chat'); + }); + elation.events.add(null, 'janusweb_portal_click', function(ev) { + console.log('[tracking] portal clicked', ev); + ga('send', 'event', 'player', 'portal_click', ev.element.properties.url); + }); + elation.events.add(null, 'janusweb_load_url', function(ev) { + console.log('[tracking] url loaded', ev); + ga('send', 'event', 'player', 'load_url', ev.data); + }); + elation.events.add(null, 'janusweb_client_connected', function(ev) { + console.log('[tracking] client connected', ev); + ga('send', 'event', 'client', 'connected', ev.data); + }); + elation.events.add(document, 'pointerlockchange,mozpointerlockchange', function(ev) { +var el = document.pointerLockElement || document.mozPointerLockElement + console.log('[tracking] pointer lock!', (el !== null), ev); + ga('send', 'event', 'player', 'pointerlock', (el !== null)); + }); + elation.events.add(null, 'janusweb_client_disconnected', function(ev) { + console.log('[tracking] client disconnected', ev); + ga('send', 'event', 'client', 'disconnected', ev.data); + }); + elation.events.add(null, 'janusweb_user_joined', function(ev) { + console.log('[tracking] user joined', ev); + ga('send', 'event', 'user', 'joined', ev.data.name); + }); + elation.events.add(null, 'janusweb_user_left', function(ev) { + console.log('[tracking] user left', ev); + ga('send', 'event', 'user', 'left', ev.data.name); + }); + elation.events.add(null, 'engine_render_view_vr_detected', function(ev) { + console.log('[tracking] vr display detected', ev); + ga('send', 'event', 'vr', 'detected', ev.data.deviceName); + }); + elation.events.add(null, 'engine_render_view_vr_start', function(ev) { + console.log('[tracking] vr display activated', ev); + ga('send', 'event', 'vr', 'start'); + }); + elation.events.add(null, 'engine_render_view_vr_end', function(ev) { + console.log('[tracking] vr display ended', ev); + ga('send', 'event', 'vr', 'end'); + }); + elation.events.add(null, 'engine_start', function(ev) { + var engine = ev.element; + + ga('send', 'event', 'engine', 'start'); + + elation.events.add(engine, 'engine_stop', function(ev) { + ga('send', 'event', 'engine', 'stop'); + }); + + var fired = { + playerMoved: false, + playerTurned: false, + playerPortaled: false, + playerChatted: false + }; + var player = engine.client.player; + var playerStartPosition = player.properties.position.clone(); + var playerStartOrientation = player.properties.orientation.clone(); + + var doPlayerChange = function(ev) { + var player = ev.element; + var cs = player.controlstate; + + if (!fired.playerMoved && !player.properties.position.equals(playerStartPosition)) { + ga('send', 'event', 'player', 'moved'); + fired['playerMoved'] = true; + } + if (!fired.playerTurned && !player.properties.orientation.equals(playerStartOrientation)) { + ga('send', 'event', 'player', 'turned'); + fired['playerTurned'] = true; + } + } + setTimeout(function() { + elation.events.add(player, 'thing_change', doPlayerChange); + playerStartPosition.copy(player.properties.position); + playerStartOrientation.copy(player.properties.orientation); + }, 1000); + + // report FPS every 15 seconds + setInterval(function() { + var fpstxt = document.getElementById('fpsText').innerHTML; + var fps = fpstxt.substr(0, fpstxt.indexOf(' ')) + ga('send', 'event', 'engine', 'fps', fps); + }, 15000); + + }); + } +});
-----END OF PAGE-----