setDimension/setDimension.js

/**
 * @memberof AnalyticsAdapter
 * @function setDimension
 * @description Set a user/session (not hit) custom dimension.
 * @param {Object[]} dimensions
 * @param dimensions[].key - custom dimensions name
 * @param dimensions[].value - custom dimensions value
 *
 * @example
 * // The custom dimension has to be defined in init method before
 * // and, after, you have to use the same custom dimension name.
 *
 * // For example, in the following code, I set UserStatus on slot number 1 and
 * // assign it the logged value:
 *
 * // before, I save UserStatus custom dimension with slot "1"
 * Analytics.init({
 *     dimensions: {
 *         'UserStatus' : 1
 *     }
 * });
 *
 * // after, I set custom dimension with the logged value:
 * AnalyticsAdapter.setDimension({
 *     'UserStatus' : 'logged'
 * });
 */
import global from '../global';

export default (dimensionObj) => {
    let slot, value;
    if (dimensionObj) {
        Object.keys(dimensionObj).forEach((key) => {
            slot = global.dimensions[key];
            value = dimensionObj[key];

            global.logger.log('AnalyticsAdapter', 'set dimension', slot, value);

            if (global.enabled) {
                global.ga('set', `dimension${slot}`, value);
            }
        });
    }
};