Codeminer42/cm42-central

View on GitHub
app/assets/javascripts/views/column_visibility_button_view.jsx

Summary

Maintainability
A
0 mins
Test Coverage
const ColumnsVisibilityButtonView = Backbone.View.extend({
  events: {
    click: 'toggle',
  },

  tagName: 'a',

  attributes: {
    href: '#',
  },

  initialize: function () {
    _.bindAll(this, 'setClassName');
    this.$el.attr('class', 'sidebar-link hide_' + this.options.columnView.id);
    this.options.columnView.on('visibilityChanged', this.setClassName, this);
  },

  render: function () {
    var icon = '';
    switch (this.options.columnView.id) {
      case 'done':
        icon = '<i class="mi md-18 sidebar-icon">done</i> ';
        break;
      case 'in_progress':
        icon = '<i class="mi md-18 sidebar-icon">inbox</i> ';
        break;
      case 'backlog':
        icon = '<i class="mi md-18 sidebar-icon">list</i> ';
        break;
      case 'chilly_bin':
        icon = '<i class="mi md-18 sidebar-icon">ac_unit</i> ';
        break;
      case 'search_results':
        icon = '<i class="mi md-18 sidebar-icon">search</i> ';
        break;
    }
    this.$el.html(icon + this.options.columnView.name);
    this.setClassName();
    return this;
  },

  // Delegates to toggle() on the associated ColumnView
  toggle: function () {
    this.options.columnView.toggle();
  },

  setClassName: function () {
    if (this.options.columnView.hidden()) {
      this.$el.addClass('pressed');
    } else {
      this.$el.removeClass('pressed');
    }
  },
});

export default ColumnsVisibilityButtonView;