CartoDB/cartodb20

View on GitHub
lib/assets/javascripts/builder/components/modals/add-layer/footer/guessing-toggler-view.js

Summary

Maintainability
A
2 hrs
Test Coverage
var CoreView = require('backbone/core-view');
var template = require('./guessing-toggler.tpl');
var checkAndBuildOpts = require('builder/helpers/required-opts');

var REQUIRED_OPTS = [
  'createModel',
  'guessingModel',
  'configModel',
  'userModel'
];

/**
* Manages if upcoming import should guess or not.
 * Expected to be rendered in the footer of a create dialog.
 */

module.exports = CoreView.extend({

  events: {
    'click .js-toggle': '_toggle'
  },

  initialize: function (opts) {
    checkAndBuildOpts(opts, REQUIRED_OPTS, this);

    this._initBinds();
  },

  render: function () {
    var htmlStr = '';
    if (this._createModel.showGuessingToggler()) {
      var uploadModel = this._createModel.getUploadModel();
      htmlStr = template({
        isGuessingEnabled: this._guessingModel.get('guessing'),
        importState: this._createModel.getImportState(),
        isUploadValid: uploadModel.isValidToUpload(),
        customHosted: this._configModel.get('cartodb_com_hosted'),
        isTwitterDeprecatedForUser: !this._userModel.hasOwnTwitterCredentials()
      });
    }
    this.$el.html(htmlStr);
    return this;
  },

  _initBinds: function () {
    this._createModel.bind('change', this.render, this);
    this._guessingModel.bind('change', this.render, this);
    this.add_related_model(this._createModel);
  },

  _toggle: function () {
    var value = !this._guessingModel.get('guessing');
    this._guessingModel.set('guessing', value);
  }
});