CartoDB/cartodb20

View on GitHub
lib/assets/javascripts/builder/components/modals/publish/share/user-view.js

Summary

Maintainability
A
2 hrs
Test Coverage
var $ = require('jquery');
var _ = require('underscore');
var CoreView = require('backbone/core-view');
var template = require('./user.tpl');
var TipsyTooltipView = require('builder/components/tipsy-tooltip-view');

var REQUIRED_OPTS = [
  'username',
  'avatar'
];

module.exports = CoreView.extend({

  initialize: function (opts) {
    _.each(REQUIRED_OPTS, function (item) {
      if (opts[item] === undefined) throw new Error(item + ' is required');
      this['_' + item] = opts[item];
    }, this);
  },

  render: function () {
    this.clearSubViews();
    this.$el.html(template({
      avatar: this._avatar,
      username: this._username
    }));

    this._initViews();
    return this;
  },

  _initViews: function () {
    var tooltip = new TipsyTooltipView({
      el: this.$('.js-avatar'),
      title: function () {
        return $(this).attr('data-title');
      }
    });

    this.addView(tooltip);
  }
});