CartoDB/cartodb20

View on GitHub
lib/assets/javascripts/builder/dataset/dataset-view.js

Summary

Maintainability
B
6 hrs
Test Coverage
var CoreView = require('backbone/core-view');
var template = require('./dataset.tpl');
var HeaderView = require('./dataset-header/dataset-header-view');
var DatasetContentView = require('./dataset-content/dataset-content-view');
var DatasetOptionsView = require('./dataset-options/dataset-options-view');
var TipsyTooltipView = require('builder/components/tipsy-tooltip-view');
var checkAndBuildOpts = require('builder/helpers/required-opts');

var REQUIRED_OPTS = [
  'router',
  'modals',
  'editorModel',
  'configModel',
  'userModel',
  'visModel',
  'analysisDefinitionNodeModel',
  'layerDefinitionModel'
];

/**
 *  Remove confirmation dialog
 */
module.exports = CoreView.extend({
  className: 'Editor js-editor',

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

  render: function () {
    this.clearSubViews();
    this.$el.html(
      template({
        url: this._configModel.get('base_url')
      })
    );
    this._initViews();
    return this;
  },

  _initViews: function () {
    var datasetHeaderView = new HeaderView({
      router: this._router,
      modals: this._modals,
      configModel: this._configModel,
      userModel: this._userModel,
      visModel: this._visModel,
      analysisDefinitionNodeModel: this._analysisDefinitionNodeModel,
      layerDefinitionModel: this._layerDefinitionModel
    });
    this.$('.js-info').append(datasetHeaderView.render().el);
    this.addView(datasetHeaderView);

    var datasetContentView = new DatasetContentView({
      modals: this._modals,
      userModel: this._userModel,
      visModel: this._visModel,
      analysisDefinitionNodeModel: this._analysisDefinitionNodeModel,
      configModel: this._configModel
    });
    this.$('.js-table').append(datasetContentView.render().el);
    this.addView(datasetContentView);

    var datasetOptionsView = new DatasetOptionsView({
      onToggleEdition: this._onToggleEdition.bind(this),
      editorModel: this._editorModel,
      router: this._router,
      modals: this._modals,
      configModel: this._configModel,
      userModel: this._userModel,
      visModel: this._visModel,
      analysisDefinitionNodeModel: this._analysisDefinitionNodeModel,
      layerDefinitionModel: this._layerDefinitionModel
    });
    this._getDatasetOptionsElement().append(datasetOptionsView.render().el);
    this.addView(datasetOptionsView);

    var tooltip = new TipsyTooltipView({
      el: this.$('.js-editor-logo'),
      title: function () {
        return _t('back-to-dashboard');
      },
      gravity: 'w'
    });
    this.addView(tooltip);
  },

  _getDatasetOptionsElement: function () {
    return this.$('.js-datasetOptions');
  },

  _onToggleEdition: function () {
    this._getDatasetOptionsElement().toggleClass('is-dark', this._editorModel.isEditing());
  }
});