ga-lite
Version:
Small, cacheable subset of Google Analytics JS client
80 lines (75 loc) • 1.83 kB
JavaScript
export default function fieldsToParams(fieldsObject) {
const params = {}
for (const fieldName in fieldsObject) {
const paramValue = fieldsObject[fieldName]
if (paramValue == null || paramValue === '') {
continue
}
if (fieldName in FIELDS_TO_PARAMS_MAP) {
const paramName = FIELDS_TO_PARAMS_MAP[fieldName]
params[paramName] = paramValue
}
// handle dimension1, metric2, etc.
const matchedCustomValue = CUSTOM_VALUES_RE.exec(fieldName)
if (matchedCustomValue) {
const [, type, digits] = matchedCustomValue
const paramName = CUSTOM_VALUES_TO_PARAMS_MAP[type] + digits
params[paramName] = paramValue
}
}
return params
}
const FIELDS_TO_PARAMS_MAP = {
anonymizeIp: 'aip',
dataSource: 'ds',
queueTime: 'qt',
userId: 'uid',
sessionControl: 'sc',
referrer: 'dr',
campaignName: 'cn',
campaignSource: 'cs',
campaignMedium: 'cm',
campaignKeyword: 'ck',
campaignContent: 'cc',
campaignId: 'ci',
screenResolution: 'sr',
viewportSize: 'vp',
encoding: 'de',
screenColors: 'sd',
language: 'ul',
javaEnabled: 'je',
flashVersion: 'fl',
hitType: 't',
nonInteraction: 'ni',
location: 'dl',
hostname: 'dh',
page: 'dp',
title: 'dt',
screenName: 'cd',
linkid: 'linkid',
appName: 'an',
appId: 'aid',
appVersion: 'av',
appInstallerId: 'aiid',
eventCategory: 'ec',
eventAction: 'ea',
eventLabel: 'el',
eventValue: 'ev',
currencyCode: 'cu',
socialNetwork: 'sn',
socialAction: 'sa',
socialTarget: 'st',
timingCategory: 'utc',
timingVar: 'utv',
timingValue: 'utt',
timingLabel: 'utl',
exDescription: 'exd',
exFatal: 'exf',
expId: 'xid',
expVar: 'xvar'
}
const CUSTOM_VALUES_RE = /(dimension|metric)(\d+)/
const CUSTOM_VALUES_TO_PARAMS_MAP = {
dimension: 'cd',
metric: 'cm'
}