diff --git a/app/controllers/meals_controller.rb b/app/controllers/meals_controller.rb index 26b91f9..572f76c 100644 --- a/app/controllers/meals_controller.rb +++ b/app/controllers/meals_controller.rb @@ -82,6 +82,18 @@ class MealsController < ApplicationController def prepare_meals @quantities = @project.meal_quantities.includes(:formula) - @foods = @project.meal_foods.compute_quantities(@quantities) + foods = @project.meal_foods.compute_quantities(@quantities) + ingredients = @project.meal_ingredients + + @nutrients = {} + ingredients.each do |i| + @nutrients[i] = foods[i.food].map do |q, v| + [q, v && [v[0]*i.amount/i.food.ref_amount, v[1]]] + end.to_h + end + + @meals_by_date = ingredients.group_by { |i| i.composition }.reject { |m,*| m.new_record? } + .sort_by { |m,*| m.eaten_at || m.created_at } + .group_by { |m,*| m.eaten_at ? m.eaten_at.to_date : Date.current } end end diff --git a/app/views/meals/_index.html.erb b/app/views/meals/_index.html.erb index 96b6043..26a101f 100644 --- a/app/views/meals/_index.html.erb +++ b/app/views/meals/_index.html.erb @@ -1,21 +1,16 @@ -<% if @meals.any? { |m| m.persisted? } %> +<% if @meals_by_date.any? %> <%= render partial: 'meals/options' %> - <% @meals.group_by { |m| m.eaten_at ? m.eaten_at.to_date : Date.current } - .sort_by {|k,v| k }.reverse.each do |date, meals| %> - + <% @meals_by_date.reverse_each do |date, meals| %> + - <% eaten, not_eaten = meals.partition { |m| m.eaten_at } - eaten.sort_by! { |m| m.eaten_at } - not_eaten.sort_by! { |m| m.created_at } - (eaten + not_eaten).each_with_index do |m, index| %> - <% next if m.new_record? %> + <% meals.each_with_index do |m, index| %> <%= render partial: 'meals/show', locals: {m: m, index: index} %> <% end %> <% end %> diff --git a/app/views/meals/_show.html.erb b/app/views/meals/_show.html.erb index 93d8ae4..773786e 100644 --- a/app/views/meals/_show.html.erb +++ b/app/views/meals/_show.html.erb @@ -10,6 +10,7 @@ {remote: true, method: :post, class: "icon icon-time"} %> <% end %> + +

<%= date == Date.current ? 'Today' : date.strftime('%F') %>

<%= notes(m) %>