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;
		}
	};

}());