From c24bdd6f45fbabaab39a3d79fc34080f67cfd5a8 Mon Sep 17 00:00:00 2001 From: cryptogopher Date: Sat, 25 Apr 2020 22:49:48 +0200 Subject: [PATCH] Renamed: formula_q -> filter_q Added Meal related associations to Project --- app/controllers/foods_controller.rb | 4 ++-- app/controllers/meals_controller.rb | 3 ++- app/controllers/measurements_controller.rb | 4 ++-- app/views/foods/_filters.html.erb | 4 ++-- app/views/foods/_index.html.erb | 2 +- app/views/foods/_nutrients.html.erb | 2 +- app/views/measurements/_filters.html.erb | 4 ++-- app/views/measurements/_index.html.erb | 2 +- app/views/measurements/_readouts.html.erb | 2 +- lib/body_tracking/items_with_quantities.rb | 12 ++++++------ lib/body_tracking/project_patch.rb | 3 +++ 11 files changed, 23 insertions(+), 19 deletions(-) diff --git a/app/controllers/foods_controller.rb b/app/controllers/foods_controller.rb index e8bd51d..d2cba5e 100644 --- a/app/controllers/foods_controller.rb +++ b/app/controllers/foods_controller.rb @@ -209,14 +209,14 @@ class FoodsController < ApplicationController end def prepare_foods - @foods, @formula_q = @project.foods + @foods, @filter_q = @project.foods .includes(:ref_unit, :source) .filter(session[:f_filters]) end def prepare_nutrients @quantities = @project.nutrient_quantities.includes(:formula) - @foods, @requested_n, @extra_n, @formula_q = @project.foods + @foods, @requested_n, @extra_n, @filter_q = @project.foods .filter(session[:f_filters], @quantities) end end diff --git a/app/controllers/meals_controller.rb b/app/controllers/meals_controller.rb index 105a9f5..fb3849e 100644 --- a/app/controllers/meals_controller.rb +++ b/app/controllers/meals_controller.rb @@ -81,6 +81,7 @@ class MealsController < ApplicationController end def prepare_meals - @meals = @project.meals.includes(:foods) + @quantities = @project.meal_quantities.includes(:formula) + @foods, @requested_n, * = @project.meal_foods.compute_quantities(@quantities) end end diff --git a/app/controllers/measurements_controller.rb b/app/controllers/measurements_controller.rb index 6e1e9cb..5951a1e 100644 --- a/app/controllers/measurements_controller.rb +++ b/app/controllers/measurements_controller.rb @@ -130,14 +130,14 @@ class MeasurementsController < ApplicationController end def prepare_measurements - @measurements, @formula_q = @project.measurements + @measurements, @filter_q = @project.measurements .includes(:routine, :source, :readouts) .filter(session[:m_filters]) end def prepare_readouts @quantities = @routine.quantities.includes(:formula) - @measurements, @requested_r, @extra_r, @formula_q = @routine.measurements + @measurements, @requested_r, @extra_r, @filter_q = @routine.measurements .includes(:routine, :source) .filter(session[:m_filters], @quantities) end diff --git a/app/views/foods/_filters.html.erb b/app/views/foods/_filters.html.erb index dd6348b..38e4f8a 100644 --- a/app/views/foods/_filters.html.erb +++ b/app/views/foods/_filters.html.erb @@ -1,7 +1,7 @@
<%= l(:label_filter_plural) %>
- <%= error_messages_for @formula_q %> + <%= error_messages_for @filter_q %> <%= form_tag url, id: 'filters-form', name: 'filters-form', method: :get, remote: true do %> @@ -37,7 +37,7 @@ <%= label_tag do %> <%= hidden_field_tag 'formula[zero_nil]', 0 %> <%= check_box_tag 'formula[zero_nil]', 1, - @formula_q ? @formula_q.formula.zero_nil : Formula.new.zero_nil %> + @filter_q ? @filter_q.formula.zero_nil : Formula.new.zero_nil %> <%= t 'quantities.form.zero_nil' %> <% end %> diff --git a/app/views/foods/_index.html.erb b/app/views/foods/_index.html.erb index 189cc83..d6cd417 100644 --- a/app/views/foods/_index.html.erb +++ b/app/views/foods/_index.html.erb @@ -2,7 +2,7 @@ locals: {url: filter_project_foods_path(@project, view: :index)} %> <% if @foods.any? { |f| f.persisted? } %> - <%= error_messages_for @formula_q.formula if @formula_q %> + <%= error_messages_for @filter_q.formula if @filter_q %> diff --git a/app/views/foods/_nutrients.html.erb b/app/views/foods/_nutrients.html.erb index e3b8771..86fa90b 100644 --- a/app/views/foods/_nutrients.html.erb +++ b/app/views/foods/_nutrients.html.erb @@ -5,7 +5,7 @@ <%= render partial: 'foods/options' %> <% formulas = @quantities.map { |q| q.formula } %> - <% formulas.unshift(@formula_q.formula) if @formula_q %> + <% formulas.unshift(@filter_q.formula) if @filter_q %> <%= error_messages_for *formulas %>
diff --git a/app/views/measurements/_filters.html.erb b/app/views/measurements/_filters.html.erb index 442e024..82ad56f 100644 --- a/app/views/measurements/_filters.html.erb +++ b/app/views/measurements/_filters.html.erb @@ -1,7 +1,7 @@
<%= l(:label_filter_plural) %>
- <%= error_messages_for @formula_q %> + <%= error_messages_for @filter_q %> <%= form_tag url, id: 'filters-form', name: 'filters-form', method: :get, remote: true do %> @@ -32,7 +32,7 @@ <%= label_tag do %> <%= hidden_field_tag 'formula[zero_nil]', 0 %> <%= check_box_tag 'formula[zero_nil]', 1, - @formula_q ? @formula_q.formula.zero_nil : Formula.new.zero_nil %> + @filter_q ? @filter_q.formula.zero_nil : Formula.new.zero_nil %> <%= t 'quantities.form.zero_nil' %> <% end %> diff --git a/app/views/measurements/_index.html.erb b/app/views/measurements/_index.html.erb index 38a39d7..d19552f 100644 --- a/app/views/measurements/_index.html.erb +++ b/app/views/measurements/_index.html.erb @@ -2,7 +2,7 @@ locals: {url: filter_project_measurements_path(@project, view: :index)} %> <% if @measurements.any? { |m| m.persisted? } %> - <%= error_messages_for @formula_q.formula if @formula_q %> + <%= error_messages_for @filter_q.formula if @filter_q %>
diff --git a/app/views/measurements/_readouts.html.erb b/app/views/measurements/_readouts.html.erb index bd1e090..a0a60b5 100644 --- a/app/views/measurements/_readouts.html.erb +++ b/app/views/measurements/_readouts.html.erb @@ -5,7 +5,7 @@ <%= render partial: 'measurements/options' %> <% formulas = @quantities.map { |q| q.formula } %> - <% formulas.unshift(@formula_q.formula) if @formula_q %> + <% formulas.unshift(@filter_q.formula) if @filter_q %> <%= error_messages_for *formulas %>
diff --git a/lib/body_tracking/items_with_quantities.rb b/lib/body_tracking/items_with_quantities.rb index 9d5c65f..f127333 100644 --- a/lib/body_tracking/items_with_quantities.rb +++ b/lib/body_tracking/items_with_quantities.rb @@ -26,28 +26,28 @@ module BodyTracking items = items.where(hidden: filters[:visibility] == "1" ? false : true) end - formula_q = + filter_q = if filters[:formula].present? owner = proxy_association.owner project = owner.is_a?(Project) ? owner : owner.project domain = RELATIONS[proxy_association.klass.name][:domain] - formula_q_attrs = { + filter_q_attrs = { name: 'Filter formula', formula_attributes: filters[:formula], domain: domain } - project.quantities.new(formula_q_attrs) + project.quantities.new(filter_q_attrs) end - apply_formula = formula_q.present? && formula_q.valid? + apply_formula = filter_q.present? && filter_q.valid? result = if requested_q || apply_formula - computed = items.compute_quantities(requested_q, apply_formula && formula_q) + computed = items.compute_quantities(requested_q, apply_formula && filter_q) requested_q ? computed : [computed[0]] else [items] end - result.push(formula_q) + result.push(filter_q) end def compute_quantities(requested_q, filter_q = nil) diff --git a/lib/body_tracking/project_patch.rb b/lib/body_tracking/project_patch.rb index b73cf74..13a1019 100644 --- a/lib/body_tracking/project_patch.rb +++ b/lib/body_tracking/project_patch.rb @@ -17,6 +17,9 @@ module BodyTracking::ProjectPatch extend: BodyTracking::ItemsWithQuantities, through: :measurement_routines has_many :meals, -> { order "eaten_at DESC" }, dependent: :destroy + has_many :meal_ingredients, through: :meals, source: 'ingredients' + has_many :meal_foods, through: :meal_ingredients, source: 'food', + extend: BodyTracking::ItemsWithQuantities has_many :meal_exposures, -> { where view_type: "Meal" }, dependent: :destroy, foreign_key: :view_id, foreign_type: :view_type, class_name: 'Exposure', extend: BodyTracking::TogglableExposures