1
0
This repository has been archived on 2023-12-07. You can view files and clone it, but cannot push or open issues or pull requests.
body_tracking/app/views/meals/_form.html.erb
cryptogopher e78803e474 Added MealsController#new and form autocomplete for Food
Renamed QuantityColumn -> Exposure
2020-04-15 23:42:58 +02:00

80 lines
2.8 KiB
Plaintext

<%= error_messages_for @meal %>
<div class="box">
<div class="tabular">
<% @meal.ingredients.each_with_index do |i, index| %>
<table style="width:95%;">
<%= f.fields_for 'ingredients_attributes', i, index: '' do |ff| %>
<tr class="ingredient">
<td style="width:90%;">
<p>
<%= ff.hidden_field :id %>
<%= ff.text_field :food_id, {class: "autocomplete food-autocomplete",
style: "width: 80%;",
required: true,
label: (index > 0 ? '' : :field_ingredients)} %>
<%= ff.number_field :amount, {style: "width: 8%", step: :any, label: ''} %>
<%= i.food.ref_unit.shortname if i.food %>
<%= ff.hidden_field :_destroy %>
</p>
</td>
<td style="width:10%;">
<%= link_to t(".button_delete_ingredient"), '#',
class: 'icon icon-del',
style: (@meal.ingredients.length > 1 ? "" : "display:none"),
onclick: "deleteIngredient(); return false;" %>
</td>
</tr>
<% end %>
</table>
<% end %>
<p>
<%= link_to t(".button_new_ingredient"), '#', class: 'icon icon-add',
onclick: 'newIngredient(); return false;' %>
</p>
</div>
</div>
<%= javascript_tag do %>
function autocompleteFood($row) {
$row.find('.food-autocomplete').autocomplete({
source: '<%= j autocomplete_project_foods_path(@project) %>',
minLength: 2,
position: {collision: 'flipfit'},
search: function(event){
$(event.target).closest('.food-autocomplete').addClass('ajax-loading');
},
response: function(event){
$(event.target).closest('.food-autocomplete').removeClass('ajax-loading');
}
});
}
autocompleteFood($('tr.ingredient:visible'));
function newIngredient() {
var form = $(event.target).closest('form');
var row = form.find('tr.ingredient:visible:last');
var new_row = row.clone().insertAfter(row);
new_row.find('input[id$=__id], input[id$=__amount], input[id$=__food_id]').val('');
new_row.find('input[id$=__destroy]').val('');
new_row.find('label:first').hide();
form.find('tr.ingredient:visible a.icon-del').show();
autocompleteFood(new_row);
}
function deleteIngredient() {
var form = $(event.target).closest('form');
var row = $(event.target).closest('tr.ingredient');
if (row.find('input[id$=__id]').val()) {
row.hide();
row.find('input[id$=__destroy]').val('1');
} else {
row.remove();
}
form.find('tr.ingredient:visible:first label:first').show();
if (form.find('tr.ingredient:visible').length <= 1) {
form.find('tr.ingredient:visible a.icon-del').hide();
}
}
<% end %>