CartoDB/cartodb20

View on GitHub
lib/assets/javascripts/builder/components/modals/add-layer/content/datasets/content-result-view.js

Summary

Maintainability
A
2 hrs
Test Coverage
var CoreView = require('backbone/core-view');
var randomQuote = require('builder/components/loading/random-quote');

/*
 *  Content result default view
 */

module.exports = CoreView.extend({
  events: {
    'click .js-connect': '_onConnectClick'
  },

  initialize: function (opts) {
    if (!opts.routerModel) throw new Error('routerModel is required');
    if (!opts.tablesCollection) throw new Error('tablesCollection is required');
    if (!opts.userModel) throw new Error('userModel is required');
    if (!opts.template) throw new Error('template is required');

    this._userModel = opts.userModel;
    this._routerModel = opts.routerModel;
    this._tablesCollection = opts.tablesCollection;
    this.template = opts.template;

    this._initBinds();
  },

  render: function () {
    var type = this._routerModel.get('content_type');

    this.$el.html(this.template({
      page: this._routerModel.get('page'),
      tag: this._routerModel.get('tag'),
      q: this._routerModel.get('q'),
      shared: this._routerModel.get('shared'),
      locked: this._routerModel.get('locked'),
      library: this._routerModel.get('library'),
      quote: randomQuote(),
      type: type,
      totalItems: this._tablesCollection.size(),
      totalEntries: this._tablesCollection.getTotalStat('total_entries')
    }));

    return this;
  },

  _initBinds: function () {
    this._routerModel.bind('change', this.render, this);
    this._tablesCollection.bind('sync', this.render, this);
    this.add_related_model(this._routerModel);
    this.add_related_model(this._tablesCollection);
  },

  _onConnectClick: function () {
    this.trigger('connectDataset', this);
  }

});