(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-56883705-1', 'auto'); ga('send', 'pageview'); var Tracker = Fiber.extend(function(base){ var exports = { init: function(opt){ this.wall_id = null this.scenery_id = null this.clicks = 0 this.wallTimer = new Timer () this.roomTimer = new Timer () this.sceneryTimer = new Timer () this.bind() // this.trackPageview(opt) }, bind: function () { window.addEventListener("click", this.trackClick.bind(this), true) app.on("change-wall", this.changeWall.bind(this)) app.on("pick-scenery", this.pickScenery.bind(this)) app.on("close-scenery", this.trackScenery.bind(this)) app.on("change-room", this.changeRoom.bind(this)) }, pushEvent: function(event){ // this.events.push(event) event.unshift("send") ga.apply( ga, event ) }, trackPageview: function(opt){ // this.pushEvent([ "view", opt.mode ]) }, // // how long they spend in front of each wall changeWall: function(opt){ var duration = this.wallTimer.currentTime() if (this.wall_id && duration > 5000) { this.pushEvent([ "wall", this.wall_id, duration ]) } this.wall_id = opt.wall.id this.wallTimer.start() }, // // how long the user spends on each item they click pickScenery: function(opt){ if (this.scenery_id && opt.scenery.id !== this.scenery_id) { this.trackScenery() } else { this.sceneryTimer.start() } this.scenery_id = opt.scenery.id }, trackScenery: function(){ var duration = this.sceneryTimer.currentTime() if (this.scenery_id && duration > 1000) { this.pushEvent([ "scenery", this.scenery_id, duration ]) } this.scenery_id = null this.sceneryTimer.reset() }, // // how long they spend in the room changeRoom: function(opt){ var duration = this.roomTimer.currentTime() if (this.room_id !== opt.room.id) { if (this.room_id && duration > 5000) { this.pushEvent([ "room", this.room_id, duration ]) } this.roomTimer.start() this.room_id = opt.room.id } }, // // how many clicks per room trackClick: function(opt){ this.clicks += 1 }, save: function () { // possibly just push to google analytics }, } return exports }) var Timer = Fiber.extend(function(base){ var exports = { init: function(opt){ this.time = 0 }, reset: function(){ this.time = 0 }, start: function(){ this.time = Date.now() }, currentTime: function(){ return this.time ? Date.now() - this.time : 0 }, } return exports })