1
0

Created common contextual menu for ingredient/nutrients views

Restored sidebar for nutrients view
This commit is contained in:
cryptogopher
2019-10-28 19:51:46 +01:00
parent 67efb6c6bc
commit c4e89def0a
7 changed files with 113 additions and 93 deletions

View File

@@ -9,10 +9,31 @@ class IngredientsController < ApplicationController
@ingredient = @project.ingredients.new
# passing attr for Nutrient after_initialize
@ingredient.nutrients.new(ingredient: @ingredient)
@ingredients = @project.ingredients.includes(:ref_unit, :source)
@ingredients << @ingredient
end
def nutrients
@ingredient = @project.ingredients.new
@ingredient.nutrients.new(ingredient: @ingredient)
ingredients = @project.ingredients.includes(:ref_unit, nutrients: [:quantity, :unit])
@header = @project.quantities.where(primary: true)
@nutrients = Hash.new { |h,k| h[k] = {} }
@descriptions = Hash.new { |h,k| h[k] = [] }
ingredients.each do |i|
i.nutrients.sort_by { |n| n.quantity.lft }.each do |n|
if @header.include?(n.quantity)
@nutrients[i.name][n.quantity_id] = "#{n.amount} [#{n.unit.shortname}]"
else
@descriptions[i.name] << "#{n.quantity.name}: #{n.amount} [#{n.unit.shortname}]"
end
end
end
@descriptions.each { |k, v| @descriptions[k] = v.join(", ") }
end
def create
@ingredient = @project.ingredients.new(ingredient_params)
if @ingredient.save
@@ -138,23 +159,6 @@ class IngredientsController < ApplicationController
redirect_to project_ingredients_url(@project)
end
def nutrients
ingredients = @project.ingredients.includes(:ref_unit, nutrients: [:quantity, :unit])
@header = @project.quantities.where(primary: true)
@nutrients = Hash.new { |h,k| h[k] = {} }
@descriptions = Hash.new { |h,k| h[k] = [] }
ingredients.each do |i|
i.nutrients.sort_by { |n| n.quantity.lft }.each do |n|
if @header.include?(n.quantity)
@nutrients[i.name][n.quantity_id] = "#{n.amount} [#{n.unit.shortname}]"
else
@descriptions[i.name] << "#{n.quantity.name}: #{n.amount} [#{n.unit.shortname}]"
end
end
end
@descriptions.each { |k, v| @descriptions[k] = v.join(", ") }
end
private
def ingredient_params