API Docs for: 1.0.0
Show:

File: LADS/telemetry/telemetry.js

var LADS.Telemetry = (function() {

	var requests  = [],
		sendFreq  = 5,  // telemetry data is sent once every sendFreq-th log
	    bversion  = browserVersion(),
	    platform  = navigator.platform;


	/**
	 * Get the current browser version
	 * Borrowed from http://stackoverflow.com/questions/5916900/detect-version-of-browser
	 * @method browserVersion
	 */
	function browserVersion() {
	    var ua= navigator.userAgent, tem, 
	    M= ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*([\d\.]+)/i) || [];
	    if(/trident/i.test(M[1])){
	        tem=  /\brv[ :]+(\d+(\.\d+)?)/g.exec(ua) || [];
	        return 'IE '+(tem[1] || '');
	    }
	    M= M[2]? [M[1], M[2]]:[navigator.appName, navigator.appVersion, '-?'];
	    if((tem= ua.match(/version\/([\.\d]+)/i))!= null) M[2]= tem[1];
	    return M.join(' ');
	}

	/**
	 * Register an element with the telemetry module
	 * @method registerTelemetry
	 * @param {jQuery Obj} element    the element to which we'll attach a telemetry event handler
	 * @param {String} etype          the type of event (e.g., 'mousedown') for which we'll create the handler
	 * @param {String} ttype          the type of telemetry request to log
	 */
	function registerTelemetry(element, etype, ttype) {
		element = $(element); // ensure we are using a jQuery object

		element.on(etype+'.tag_telemetry', function() {
			requests.push({
				ttype:      ttype,
				tagserver:  localStorage.ip || '',
				browser:    bversion,
				platform:   platform
			});

			if(requests.length % sendFreq == 0) { // tweak this later
				postTelemetryRequests();
			} 
		});
	}

	/**
	 * Make a request to the telemetry server using the requests variable
	 * @method telemetryRequests
	 */
	function postTelemetryRequests() {
		var data = JSON.stringify(requests);

		requests.length = 0;

		$.ajax({
			type: 'POST',
			url: 'http://127.0.0.1:9999/',
			data: data,
			async: true, // this is the default, but just make it explicit
			success: function() {
				console.log('POST request to server worked');
			},
			error: function(e) {
				console.log('telemetry error! look at node output...');
			}
		});
	}

	return {
		registerTelemetry: registerTelemetry
	}
})();