app/assets/javascripts/views/observation_matrix_column_item/_select_loan_item.js.erb
/*
!! 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);
}
});