File:LearningAnalyticsPlugin.js
/**
* @module Container
* @namespace springroll
*/
(function()
{
/**
* @class Container
*/
var plugin = new springroll.ContainerPlugin();
plugin.setup = function()
{
// Import classes
var LearningAnalytics = include('springroll.pbskids.LearningAnalytics');
/**
* The Learning Analytics client for sending events
* @property {springroll.pbskids.LearningAnalytics} learning
*/
this.learning = new LearningAnalytics(
this.options.learningDomain,
this.options.learningResource
);
};
plugin.open = function()
{
// Enable the analytics dispatcher if we're in production mode
this.learning.enabled = this.isProduction;
var learningHandler = onLearningEvent.bind(this);
// Client is setup, listen for learning event
this.client.on(
{
learningEvent: learningHandler,
progressEvent: learningHandler // @deprecated
});
};
/**
* Track an event for springroll Learning
* @method onLearningEvent
* @param {event} event The bellhop learningEvent
* @private
*/
var onLearningEvent = function(event)
{
var data = event.data;
// Send to the logging service
this.loggingService.send('pt-event', data);
// Automatically track with analytics
this.learning.pushEvent(data);
/**
* Event when dispatching a Learning Dispatcher event
* @event learningEvent
* @param {object} data The event data
*/
this.trigger('learningEvent', data);
};
plugin.close = function()
{
if (this.learning)
{
this.learning.enabled = false;
this.client.off('learningEvent');
this.client.off('progressEvent'); // @deprecated
}
};
plugin.teardown = function()
{
if (this.learning)
{
this.learning.destroy();
delete this.learning;
}
};
}());