SpeciesFileGroup/taxonworks

View on GitHub
app/assets/javascripts/views/observation_matrix_column_item/_select_loan_item.js.erb

Summary

Maintainability
Test Coverage
/*

 !! Initialized in parent.
 Code behind selecting a loan item.  

*/

var TW = TW || {};
TW.views = TW.views || {};
TW.views.loan_items = TW.views.loan_items || {};
TW.views.loan_items.select_loan_item = TW.views.select_loan_item || {};

Object.assign(TW.views.loan_items.select_loan_item, { 

  base_name: 'loan[loan_items_attributes]',

  get_autocomplete_path: function(element) {
    return('/' +  element.find('input[type=radio][name=autocomplete_type]:checked').val() + '/autocomplete');
  },

  initialize_autocomplete: function(element, select_function) {
    var autocomplete_input = element.find("#loan_item_autocomplete");
    var autocomplete_source = this.get_autocomplete_path(element);

    autocomplete_input.autocomplete({
      source: autocomplete_source,
      
      // bind select: action in page specific usages 

      response: function(event, ui) {
        // ui.content is the array that's about to be sent to the response callback.
        if (ui.content.length === 0) {
          $("#loan_item_not_found").text("No results found.");
        } else {
          $("#loan_item_not_found").empty();
        }
      }

    }).autocomplete("instance")._renderItem = function (ul, item) {
      return $("<li class='autocomplete'>")
        .append("<a>" + item.label + "</a>")
        .appendTo(ul);
    };
  },

  bind_autocomplete_source_to_radio_buttons: function(element) {
    $('input[type=radio][name=autocomplete_type]').on('change', function() { 
      element.find("#loan_item_autocomplete").autocomplete({
        source: TW.views.loan_items.select_loan_item.get_autocomplete_path(element)
      });
      $("#loan_item_not_found").empty();
      $("#loan_item_autocomplete").val('');
    }
    );
  },

  initialize_select_loan_items: function() {
    var div = $( "#select_loan_item" );
    this.initialize_autocomplete(div);
    this.bind_autocomplete_source_to_radio_buttons(div);
  } 
});