diff --git a/src/mappers/statsd.js b/src/mappers/statsd.js index 29e0e2f..4b47c8c 100644 --- a/src/mappers/statsd.js +++ b/src/mappers/statsd.js @@ -58,25 +58,25 @@ function map (prefix, data, referer) { } if (data[category]) { - result += mapper(prefix + category + '.', data[category], referer); + result += mapper(prefix, category + '.', data[category], referer); } }); return result; } -function mapRestimingMetrics (prefix, data, referer) { +function mapRestimingMetrics (prefix, category, data, referer) { return data.map(function (resource, index) { if (!resource) { return ''; } return mapMetrics([ - prefix + base36Encode(referer), + prefix + category + base36Encode(referer), index, resource.type, base36Encode(resource.name) - ].join('.') + '.', resource); + ].join('.') + '.', category, resource); }).join(''); } @@ -90,8 +90,27 @@ function base36Encode (string) { }).join(''); } -function mapMetrics (prefix, data) { - return mapEvents(prefix, data) + mapDurations(prefix, data); +function mapMetrics (prefix, category, data) { + if (category === 'clicks.') { + return mapClick(data); + } else if (category === 'restiming.') { + return mapEvents(prefix, data) + mapDurations(prefix, data); + } else { + return mapEvents(prefix + category, data) + mapDurations(prefix + category, data); + } +} + +function mapClick (data) { + var element = data.element; + var id = data.id; + if (id === '') { + id = 'none'; + } + if (element === undefined) { + return ''; + } else { + return 'CLICK - element ' + element + ' id - ' + id + ':' + 1 + '|c' + '\n'; + } } function mapEvents (prefix, data) { diff --git a/src/normalise.js b/src/normalise.js index 8af8c06..175f453 100644 --- a/src/normalise.js +++ b/src/normalise.js @@ -27,10 +27,25 @@ function normalise (data) { return { rt: normaliseRtData(data), navtiming: normaliseNavtimingData(data), - restiming: normaliseRestimingData(data) + restiming: normaliseRestimingData(data), + clicks: normaliseClicksData(data) }; } +function normaliseClicksData (data) { + /*jshint camelcase:false */ + + var element, id; + + element = data.element; + id = data.id; + + return { + element: element, + id: id + }; +} + function normaliseRtData (data) { /*jshint camelcase:false */ diff --git a/test/normalise.js b/test/normalise.js index 93f74b9..dc167a8 100644 --- a/test/normalise.js +++ b/test/normalise.js @@ -84,7 +84,7 @@ suite('filters/normalise:', function () { test('result was correct', function () { assert.isObject(result); - assert.lengthOf(Object.keys(result), 3); + assert.lengthOf(Object.keys(result), 4); assert.isUndefined(result.rt); assert.isUndefined(result.navtiming); assert.isUndefined(result.restiming);