Sha256: 7e2faacf3a25365b14c045a8cb497dc7a4c4c96da8fe44792db8b53d84baa6ee

Contents?: true

Size: 1.73 KB

Versions: 90

Compression:

Stored size: 1.73 KB

Contents

Spree.Views.Tables.SelectableTable = Backbone.View.extend({
  events: {
    'change .selectable': 'onSelectedItem',
  },

  initialize: function() {
    this.model = new Backbone.Model({
      allSelected: false,
      selectedItems: []
    });

    this.listenTo(this.model, 'change', this.detectChanges)

    this.render();
    Backbone.trigger("selectableTable:init", this)
  },

  onSelectedItem: function(event) {
    var item = event.currentTarget;
    if(item.checked) {
      this.addItem(item)
    }else{
      this.$el.find('input[name="select-all"]').prop('checked', false);
      this.removeItem(item)
    }
  },

  addItem: function(item) {
    var items = _(this.model.get('selectedItems')).clone();
    if(items.indexOf(item) === -1) {
      items.push(item);
      this.model.set('selectedItems', items);
    }
  },

  removeItem: function(item) {
    var items = _(this.model.get('selectedItems')).clone();
    items.splice(items.indexOf(item), 1);
    this.model.set('selectedItems', items);
    this.model.set('allSelected', false);
  },

  maxColumns: function() {
    var max = 0;
    this.$el.find('tr').each(function(){
      var inTr = 0;
      $('td,th', this).each(function() { inTr += parseInt($(this).attr('colspan')) || 1 });
      max = Math.max(max,inTr);
    });

    return max;
  },

  detectChanges: function(model) {
    var selectableTable = this;
    if(model.changed.allSelected == true) {
      $('.selectable').each(function(_, item) { selectableTable.addItem(item) })
    }

    this.render();
  },

  render: function(){
    var model = this.model;

    this.$el.find('.selectable').each(function(_i, checkbox){
      checkbox.checked = model.get('allSelected') || model.get('selectedItems').includes(checkbox);
    })
  }
});

Version data entries

90 entries across 90 versions & 1 rubygems

Version Path
solidus_backend-4.5.1 app/assets/javascripts/spree/backend/views/tables/selectable_table.js
solidus_backend-4.5.0 app/assets/javascripts/spree/backend/views/tables/selectable_table.js
solidus_backend-4.3.6 app/assets/javascripts/spree/backend/views/tables/selectable_table.js
solidus_backend-4.2.5 app/assets/javascripts/spree/backend/views/tables/selectable_table.js
solidus_backend-4.1.6 app/assets/javascripts/spree/backend/views/tables/selectable_table.js
solidus_backend-4.4.2 app/assets/javascripts/spree/backend/views/tables/selectable_table.js
solidus_backend-4.4.1 app/assets/javascripts/spree/backend/views/tables/selectable_table.js
solidus_backend-4.4.0 app/assets/javascripts/spree/backend/views/tables/selectable_table.js
solidus_backend-4.3.4 app/assets/javascripts/spree/backend/views/tables/selectable_table.js
solidus_backend-4.2.4 app/assets/javascripts/spree/backend/views/tables/selectable_table.js
solidus_backend-4.1.5 app/assets/javascripts/spree/backend/views/tables/selectable_table.js
solidus_backend-4.3.3 app/assets/javascripts/spree/backend/views/tables/selectable_table.js
solidus_backend-4.3.2 app/assets/javascripts/spree/backend/views/tables/selectable_table.js
solidus_backend-4.1.4 app/assets/javascripts/spree/backend/views/tables/selectable_table.js
solidus_backend-4.3.1 app/assets/javascripts/spree/backend/views/tables/selectable_table.js
solidus_backend-4.3.0 app/assets/javascripts/spree/backend/views/tables/selectable_table.js
solidus_backend-4.2.3 app/assets/javascripts/spree/backend/views/tables/selectable_table.js
solidus_backend-4.1.3 app/assets/javascripts/spree/backend/views/tables/selectable_table.js
solidus_backend-4.0.4 app/assets/javascripts/spree/backend/views/tables/selectable_table.js
solidus_backend-3.4.6 app/assets/javascripts/spree/backend/views/tables/selectable_table.js