init/init.js

/**
 * @memberof AnalyticsAdapter
 * @function init
 * @description Initialize Analytics and set up the general configurations.
 * @param {Object} options (see attributes below)
 * @param {boolean} [options.enabled=true] enable/disable tracking on Google Analytics
 * @param {Object} [options.logger=Object()] logging methods to use (see example below),
 * if undefined there will be no logs
 * @param {Object[]} [options.dimensions=Object()]
 * @param options.dimensions[].key - custom dimensions name
 * @param options.dimensions[].value - custom dimensions value
 *
 * @example
 * // Logger
 * // Analytics with console as logger
 *  AnalyticsAdapter.init({
 *      enabled: true,
 *      logger: console,
 *      dimensions: {
 *          'UserStatus': 1,
 *          'AccessType': 2,
 *          'Valuable': 5,
 *          'Action': 8,
 *          'PaymentType': 11
 *      }
 *  });
 *
 * @example
 * // Analytics with no logs
 *  AnalyticsAdapter.init({
 *      enabled: true,
 *      dimensions: {
 *          'UserStatus': 1,
 *          'AccessType': 2,
 *          'Valuable': 5,
 *          'Action': 8,
 *          'PaymentType': 11
 *      }
 *  });
 *
 * @example
 * // Custom Dimensions
 * // In analytics initialization phase, you have to define all custom dimensions
 * // that you will use in your applications.
 *
 * // Init method doesn't set custom dimension on Google Analytics, it only saves
 * // custom dimension for future use (for example in event tracking).
 *
 * // You have to pass a pair (custom dimension name, slot id), where slot id is the slot
 * // of the custom dimension assigned from Google Analytics before.
 *
 * // In this example, I set two custom dimensions ("UserStatus" with slot number 1
 * // and "Valuable" with slot number 5):
 * AnalyticsAdapter.init({
 *     enabled: true,
 *     dimensions: {
 *         'UserStatus' : 1,
 *         'Valuable' : 5
 *     }
 * });
 */
import global from '../global';

export default (options) => {
    if (options) {
        if (options.ga) {
            global.ga = options.ga;
        }

        if (options.dimensions) {
            global.dimensions = options.dimensions;
        }
        if (typeof options.enabled !== 'undefined') {
            global.enabled = (
                options.enabled === true
                || options.enabled === 'true'
                || options.enabled === 1
                || options.enabled === '1'
            );
        }

        if (options.logger) {
            global.logger = options.logger;
        }
    }

    global.logger.log('AnalyticsAdapter', 'init', global);
};