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.events = [] this.bind() this.trackPageview() }, bind: function () { // window.addEventListener("click", this.trackClick.bind(this), true) }, trackPageview: function(opt){ this.events.push([ "view" ]) }, // // how long they spend in front of each wall trackChangeWall: function(opt){ var duration = this.wallTimer.currentTime() if (this.wall_id && duration > 5000) { this.events.push([ "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){ this.sceneryTimer.start() this.scenery_id = opt.scenery.id }, trackScenery: function(){ var duration = this.sceneryTimer.currentTime() if (this.scenery_id && duration > 5000) { this.events.push([ "scenery", this.scenery_id, duration ]) } this.scenery_id = null this.sceneryTimer.reset() }, // // how long they spend in the room trackChangeRoom: function(opt){ var duration = this.roomTimer.currentTime() if (this.room_id && duration > 5000) { this.events.push([ "room", this.room_id, duration ]) } this.room_id = opt.room.id this.roomTimer.start() }, // // how many clicks per room trackClick: function(opt){ console.log("track click") this.clicks += 1 }, save: function () { }, } 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 }, } })