Skip to content

Instantly share code, notes, and snippets.

@dhigginbotham
Last active January 8, 2016 01:46
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save dhigginbotham/cc58c84dac6e33c517b6 to your computer and use it in GitHub Desktop.
Save dhigginbotham/cc58c84dac6e33c517b6 to your computer and use it in GitHub Desktop.
sometimes I need to know what vars/events/props are getting sent off to omniture / sitecatalyst / adobe analytics or whatever they renamed themselves to again :neckbeard: I got the awesome list of params from http://www.cheatography.com/dmpg-tom/cheat-sheets/adobe-analytics-omniture-sitecatalyst-parameters/pdf/
var getOmnitureModules = (function(w,d,pub){
var imgArr = [];
var getOmnitureImages = function() {
for (var o in w) {
if (o.substr(0,4) == 's_i_') {
imgArr.push(util.parseHref(w[o].getAttribute('src')).params);
}
}
};
var translationProcessor = function() {
var translatedArr = [];
for(var i=0;i<imgArr.length;++i) {
var img = imgArr[i];
var curObj = {};
for(var k in img) {
// wish i could make the switch evaluate truthy
if (/(^c\d{1,2}$)/.test(k)) {
if (!curObj['customMetrics']) curObj['customMetrics'] = {};
curObj['customMetrics'][k] = img[k];
continue;
}
if (/(^h\d{1,2}$)/.test(k)) {
if (!curObj['heirarchy']) curObj['heirarchy'] = {};
curObj['heirarchy'][k] = img[k];
continue;
}
if (/(^l\d{1,2}$)/.test(k)) {
if (!curObj['listVariables']) curObj['listVariables'] = {};
curObj['listVariables'][k] = img[k];
continue;
}
if (/(^v\d{1,2}$)/.test(k) && k != 'v0') {
if (!curObj['customDimensions']) curObj['customDimensions'] = {};
curObj['customDimensions'][k] = img[k];
continue;
}
switch(k) {
// pe params
case 'm_s':
curObj['mediaStart'] = img[k];
break;
case 'm_i':
curObj['mediaInstance'] = img[k];
break;
case 'lnk_o':
curObj['otherLink'] = img[k];
break;
case 'lnk_e':
curObj['exitLink'] = img[k];
break;
case 'lnk_d':
curObj['linkDownload'] = img[k];
break;
// clickmap params
case 'pid':
curObj['pageIdentifier'] = img[k];
break;
case 'pidt':
curObj['pageIdentifierType'] = img[k];
break;
case 'oid':
curObj['objectIdentifier'] = img[k];
break;
case 'oidt':
curObj['objectIdentifierType'] = img[k];
break;
case 'ot':
curObj['objectTagName'] = img[k];
break;
case 'oi':
curObj['sourceIndex'] = img[k];
break;
// configuration params
case 'ns':
curObj['nameSpace'] = img[k];
break;
case 'vmf':
curObj['domainBeingMigratedFrom'] = img[k];
break;
case 'vmf':
curObj['externalCookieMigratedKey'] = img[k];
break;
case 'cdp':
curObj['cookieDomainPeriods'] = img[k];
break;
// basic params
case 'AQB':
case 'AQE':
break;
case 'bh':
curObj['browserHeight'] = img[k];
break;
case 'bw':
curObj['browserWidth'] = img[k];
break;
case 'c':
curObj['colorDepth'] = img[k];
break;
case 'ce':
curObj['contentEncoding'] = img[k];
break;
case 'fid':
curObj['fallbackId'] = img[k];
break;
case 'pageName':
curObj['pageName'] = img[k];
break;
case 'r':
curObj['referringUrl'] = img[k];
break;
case 'g':
curObj['currentUrl'] = img[k];
break;
case 'gn':
curObj['shortUrl'] = img[k];
break;
case 'j':
curObj['javaVersion'] = img[k];
break;
case 'k':
curObj['cookiesEnabled'] = img[k];
break;
case 'ndh':
curObj['originatesFromJSRequest'] = img[k];
break;
case 'p':
curObj['browserPlugins'] = img[k].split(';').filter(function(item) { return item != '';});
break;
case 's':
curObj['screenResolution'] = img[k];
break;
case 't':
curObj['timeStamp'] = img[k];
break;
case 'v':
curObj['jsEnabled'] = img[k];
break;
// custom params
case 'server':
curObj[k] = img[k];
break;
case 'events':
curObj['events'] = img[k].split(',');
break;
case 'ch':
case 'section':
case 'channel':
curObj['channel'] = img[k];
break;
case 'v0':
curObj['campaign'] = img[k];
break;
// custom links
case 'pe':
curObj['customLinkType'] = img[k];
break;
case 'pev1':
curObj['linkClickedUrl'] = img[k];
break;
case 'pev2':
curObj['customLinkName'] = img[k];
break;
case 'pev3':
curObj['mediaParams'] = img[k];
break;
// ecommerce params
case 'products':
curObj[k] = img[k].split(',');
break;
case 'cc':
curObj['currencyCode'] = img[k];
break;
case 'pruchaseId':
case 'state':
case 'zip':
curObj[k] = img[k];
break;
// unmapped or not related params
default:
if (!curObj.hasOwnProperty('_unmapped')) {
curObj['_unmapped'] = {};
}
curObj['_unmapped'][k] = img[k];
break;
}
}
translatedArr.push(curObj);
}
return pub.translatedArr = translatedArr;
};
getOmnitureImages();
pub.getOmnitureImages = getOmnitureImages;
pub.translationProcessor = translationProcessor;
pub.imgArr = imgArr;
return pub;
})(window,document,{});
var util = (function(w,d,$,pub) {
var state;
state = {
current: null,
previous: []
};
// http schema/protocol
pub.getProtocol = function(str) {
var re = /https?:\/\//;
if (str) return str.match(re);
};
// strip off trailing slashes
pub.stripTrailing = function(str) {
if (str[str.length-1] == '/') str = str.substr(0, str.length-1);
return str;
};
// get querystring params
pub.parseParams = function(str) {
var params = {}, queries, temp, i, l;
var query = str;
var queryString = query.substring(query.indexOf('?')+1);
queries = queryString.split("&");
for ( i = 0, l = queries.length; i < l; i++ ) {
temp = queries[i].split('=');
params[temp[0]] = decodeURIComponent(temp[1]);
}
return params;
};
// accepts an array of paths and joins
// them back into a str
pub.serializePaths = function(arr) {
if (arr && arr.length) return '/' + arr.join('/');
};
// serializes param obj, only works single
// level
pub.serializeParams = function(obj) {
var param = null;
for (var k in obj) {
if (!param) param = [];
param.push(k + '=' + obj[k]);
}
return param.join('&');
};
pub.parseHref = function(str) {
// check for existing state objects and
// push them into previous array
if (typeof state.current == 'object') {
state.previous.push(state.current);
}
var pieces, paramIndex, protocol, url;
// base url obj values
url = {
$base: null,
host: null,
params: null,
path: null,
protocol: null
};
if (!str) return url;
// reset/set current obj
url.$base = str;
// match/strip protocol
protocol = pub.getProtocol(str);
if (protocol) {
url.protocol = protocol[0];
str = str.replace(protocol[0], '');
}
// process params
paramIndex = str.indexOf('?');
if (paramIndex != -1) {
url.params = pub.parseParams(str);
str = str.substr(0, paramIndex);
}
// strip any trailing slashes
str = pub.stripTrailing(str);
// break pieces into array
pieces = str.split('/');
if (pieces.length) {
url.host = pieces[0];
if (pieces.length > 1) {
url.path = pieces.splice(1, pieces.length-1);
}
}
pub.current = state.current = url;
return url;
};
return pub;
})(window,document,jQuery, util || {});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment