Sha256: d232f983f0e474a4338361f2ca2dd06dfd9911a54411d425215bd0f9bce20e75

Contents?: true

Size: 1.55 KB

Versions: 6

Compression:

Stored size: 1.55 KB

Contents

pageflow.SelectInputView = Backbone.Marionette.ItemView.extend({
  mixins: [pageflow.inputView],

  template: 'templates/inputs/select_input',

  events: {
    'change': 'save'
  },

  ui: {
    select: 'select'
  },

  initialize: function() {
    if (this.options.collection) {
      this.options.values = _.pluck(this.options.collection, this.options.valueProperty);

      if (this.options.textProperty) {
        this.options.texts = _.pluck(this.options.collection, this.options.textProperty);
      }
      else if (this.options.translationKeyProperty) {
        this.options.translationKeys = _.pluck(this.options.collection, this.options.translationKeyProperty);
      }
    }

    if (!this.options.texts) {
      if (!this.options.translationKeys) {
        this.options.translationKeys = _.map(this.options.values, function(value) {
          return 'activerecord.values.' + this.model.modelName + '.' + this.options.propertyName + '.' + value;
        }, this);
      }

      this.options.texts = _.map(this.options.translationKeys, function(key) {
        return I18n.t(key);
      });
    }
  },

  onRender: function() {
    _.each(this.options.values, function(value, index) {
      var option = document.createElement('option');

      option.value = value;
      option.text = this.options.texts[index];

      this.ui.select.append(option);
    }, this);

    this.load();
  },

  save: function() {
    this.model.set(this.options.propertyName, this.ui.select.val());
  },

  load: function() {
    this.ui.select.val(this.model.get(this.options.propertyName));
  }
});

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
pageflow-0.1.0 app/assets/javascripts/pageflow/editor/views/inputs/select_input_view.js
pageflow-0.0.5 app/assets/javascripts/pageflow/editor/views/inputs/select_input_view.js
pageflow-0.0.4 app/assets/javascripts/pageflow/editor/views/inputs/select_input_view.js
pageflow-0.0.3 app/assets/javascripts/pageflow/editor/views/inputs/select_input_view.js
pageflow-0.0.2 app/assets/javascripts/pageflow/editor/views/inputs/select_input_view.js
pageflow-0.0.1 app/assets/javascripts/pageflow/editor/views/inputs/select_input_view.js