nutrition data cleanup
This commit is contained in:
parent
2a5301f5d5
commit
fcb827cc77
@ -1,11 +1,11 @@
|
||||
class NutritionDataDecorator < BaseDecorator
|
||||
|
||||
NutritionData::NUTRIENTS.each do |m|
|
||||
|
||||
def format_number(n)
|
||||
'%.1f' % n
|
||||
end
|
||||
|
||||
NutritionData::NUTRIENTS.keys.each do |m|
|
||||
|
||||
define_method m do
|
||||
format_number(super())
|
||||
end
|
||||
|
@ -1,38 +1,38 @@
|
||||
class NutritionData
|
||||
|
||||
NUTRIENTS = [
|
||||
:protein,
|
||||
:lipids,
|
||||
:kcal,
|
||||
:fiber,
|
||||
:sugar,
|
||||
:carbohydrates,
|
||||
:calcium,
|
||||
:iron,
|
||||
:magnesium,
|
||||
:phosphorus,
|
||||
:potassium,
|
||||
:sodium,
|
||||
:zinc,
|
||||
:copper,
|
||||
:manganese,
|
||||
:vit_c,
|
||||
:vit_b6,
|
||||
:vit_b12,
|
||||
:vit_a,
|
||||
:vit_e,
|
||||
:vit_d,
|
||||
:vit_k,
|
||||
:cholesterol
|
||||
]
|
||||
NUTRIENTS = {
|
||||
protein: 'g Protein',
|
||||
lipids: 'g Fat',
|
||||
kcal: 'Calories',
|
||||
fiber: 'g Fiber',
|
||||
sugar: 'g Sugar',
|
||||
carbohydrates: 'g Carbohydrates',
|
||||
calcium: nil,
|
||||
iron: nil,
|
||||
magnesium: nil,
|
||||
phosphorus: nil,
|
||||
potassium: nil,
|
||||
sodium: 'mg Sodium',
|
||||
zinc: nil,
|
||||
copper: nil,
|
||||
manganese: nil,
|
||||
vit_c: nil,
|
||||
vit_b6: nil,
|
||||
vit_b12: nil,
|
||||
vit_a: nil,
|
||||
vit_e: nil,
|
||||
vit_d: nil,
|
||||
vit_k: 'µg Vitamin K',
|
||||
cholesterol: nil
|
||||
}
|
||||
|
||||
attr_reader :errors
|
||||
attr_reader *NUTRIENTS
|
||||
attr_reader *NUTRIENTS.keys
|
||||
|
||||
def initialize(recipe_ingredients)
|
||||
@errors = []
|
||||
|
||||
NUTRIENTS.each do |n|
|
||||
NUTRIENTS.keys.each do |n|
|
||||
self.instance_variable_set("@#{n}".to_sym, 0.0)
|
||||
end
|
||||
|
||||
@ -50,8 +50,9 @@ class NutritionData
|
||||
|
||||
valid_ingredients.each do |i|
|
||||
grams = i.to_grams
|
||||
missing = []
|
||||
|
||||
NUTRIENTS.each do |k|
|
||||
NUTRIENTS.each do |k, n|
|
||||
value = i.ingredient.send(k)
|
||||
if value.present?
|
||||
value = value.to_f
|
||||
@ -59,12 +60,17 @@ class NutritionData
|
||||
delta = (grams / 100.0) * value
|
||||
self.instance_variable_set("@#{k}".to_sym, running_total + delta)
|
||||
else
|
||||
@errors << "#{i.name} missing #{k} data"
|
||||
end
|
||||
missing << k
|
||||
end
|
||||
end
|
||||
|
||||
NUTRIENTS.each do |k|
|
||||
missing = missing.map { |k| NUTRIENTS[k] }.compact
|
||||
unless missing.empty?
|
||||
@errors << "#{i.name} missing the following nutrients: #{missing.join(', ')}"
|
||||
end
|
||||
end
|
||||
|
||||
NUTRIENTS.each do |k, n|
|
||||
v = self.instance_variable_get("@#{k}".to_sym)
|
||||
self.instance_variable_set("@#{k}".to_sym, v.round(2))
|
||||
end
|
||||
|
@ -83,9 +83,9 @@
|
||||
<div class="col-xs-12">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">Nutrition Data</h3>
|
||||
<h3 class="panel-title"><a href="#nutrition_panel" data-toggle="collapse">Nutrition Data</a></h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div id="nutrition_panel" class="panel-body collapse">
|
||||
<% decorate(@recipe.nutrition_data, NutritionDataDecorator) do |nutrition_data| %>
|
||||
<table class="table">
|
||||
<thead>
|
||||
|
Loading…
Reference in New Issue
Block a user