CartoDB/cartodb20

View on GitHub
lib/assets/javascripts/cartodb/helpers/map_options.js

Summary

Maintainability
A
50 mins
Test Coverage
var _ = require('underscore-cdb-v3');
var UrlHelper = require('./url');
var MOBILE_DEVICES_REGEX = /Android|webOS|iPad|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i;

var mapOptionsFromUrlParams = {
  search: _isEqualToTrue,
  title: _isEqualToTrue,
  description: _isEqualToTrue,
  shareable: _isEqualToTrue,
  fullscreen: _isEqualToTrue,
  cartodb_logo: _isEqualToTrue,
  scrollwheel: _isEqualToTrue,
  sublayer_options: _layerVisibility,
  layer_selector: _isEqualToTrue,
  legends: _isEqualToTrue
};

module.exports = {
  getMapOptions: function () {
    return UrlHelper.getUrlParams(mapOptionsFromUrlParams);
  },

  isMobileDevice: function () {
    return MOBILE_DEVICES_REGEX.test(navigator.userAgent);
  }
};

function _isEqualToTrue (value) {
  return value === 'true';
}

function _layerVisibility (value) {
  var BASE = 10;

  if (!value || !value.length) {
    return null;
  }

  return _.map(value.split('|'), function (value) {
    return {
      visible: !!parseInt(value, BASE)
    };
  });
}