1
0

Updated Ingredients to use ItemsWithQuantities

This commit is contained in:
cryptogopher
2019-12-29 15:12:05 +01:00
parent 61bd34fdc5
commit 20deb944c3
19 changed files with 125 additions and 226 deletions

View File

@@ -1,5 +1,14 @@
module BodyTracking
module ItemsWithQuantities
QUANTITY_DOMAINS = {
Measurement => :measurement,
Ingredient => :diet
}
VALUE_COLUMNS = {
Measurement => :value,
Ingredient => :amount
}
def filter(filters, requested_q = nil)
items = all.where(filters[:scope])
@@ -12,7 +21,7 @@ module BodyTracking
end
project = proxy_association.owner
domain = {Measurement => :measurement, Ingredient => :diet}[proxy_association.klass]
domain = QUANTITY_DOMAINS[proxy_association.klass]
formula_q = if filters[:formula].present?
project.quantities.new(name: '__internal_q',
formula: filters[:formula],
@@ -45,7 +54,8 @@ module BodyTracking
item_foreign_key = subitem_reflection.foreign_key
subitems_scope.includes(:quantity, :unit)
.order('quantities.lft')
.pluck(item_foreign_key, 'quantities.name', :value, 'units.shortname')
.pluck(item_foreign_key, 'quantities.name', VALUE_COLUMNS[item_class],
'units.shortname')
.each { |item_id, q_name, a, u_id| subitems[q_name][item_id] = [a, u_id] }
extra_q = subitems.keys - requested_q.pluck(:name)

View File

@@ -1,8 +1,10 @@
module BodyTracking
module ProjectPatch
Project.class_eval do
has_many :measurements, -> { order "taken_at DESC" }, dependent: :destroy, extend: ItemsWithQuantities
has_many :ingredients, -> { order "name" }, dependent: :destroy
has_many :measurements, -> { order "taken_at DESC" }, dependent: :destroy,
extend: ItemsWithQuantities
has_many :ingredients, -> { order "name" }, dependent: :destroy,
extend: ItemsWithQuantities
has_many :sources, dependent: :destroy
has_many :column_views, dependent: :destroy