Renamed: formula_q -> filter_q
Added Meal related associations to Project
This commit is contained in:
parent
c029ba59c2
commit
c24bdd6f45
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -1,7 +1,7 @@
|
||||
<fieldset id="filters" class="collapsible">
|
||||
<legend onclick="toggleFieldset(this);"><%= l(:label_filter_plural) %></legend>
|
||||
<div>
|
||||
<%= 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 %>
|
||||
</td>
|
||||
|
@ -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 %>
|
||||
|
||||
<table class="list">
|
||||
<thead>
|
||||
|
@ -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 %>
|
||||
|
||||
<table class="nutrients list odd-even">
|
||||
|
@ -1,7 +1,7 @@
|
||||
<fieldset id="filters" class="collapsible">
|
||||
<legend onclick="toggleFieldset(this);"><%= l(:label_filter_plural) %></legend>
|
||||
<div>
|
||||
<%= 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 %>
|
||||
</td>
|
||||
|
@ -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 %>
|
||||
|
||||
<table class="list">
|
||||
<thead>
|
||||
|
@ -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 %>
|
||||
|
||||
<table class="readouts list odd-even">
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user