nutrition data cleanup

This commit is contained in:
Dan Elbert 2017-04-14 17:06:43 -05:00
parent 2a5301f5d5
commit fcb827cc77
3 changed files with 42 additions and 36 deletions

View File

@ -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

View File

@ -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

View File

@ -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>