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
|
end
|
||||||
|
|
||||||
def prepare_foods
|
def prepare_foods
|
||||||
@foods, @formula_q = @project.foods
|
@foods, @filter_q = @project.foods
|
||||||
.includes(:ref_unit, :source)
|
.includes(:ref_unit, :source)
|
||||||
.filter(session[:f_filters])
|
.filter(session[:f_filters])
|
||||||
end
|
end
|
||||||
|
|
||||||
def prepare_nutrients
|
def prepare_nutrients
|
||||||
@quantities = @project.nutrient_quantities.includes(:formula)
|
@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)
|
.filter(session[:f_filters], @quantities)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -81,6 +81,7 @@ class MealsController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def prepare_meals
|
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
|
||||||
end
|
end
|
||||||
|
@ -130,14 +130,14 @@ class MeasurementsController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def prepare_measurements
|
def prepare_measurements
|
||||||
@measurements, @formula_q = @project.measurements
|
@measurements, @filter_q = @project.measurements
|
||||||
.includes(:routine, :source, :readouts)
|
.includes(:routine, :source, :readouts)
|
||||||
.filter(session[:m_filters])
|
.filter(session[:m_filters])
|
||||||
end
|
end
|
||||||
|
|
||||||
def prepare_readouts
|
def prepare_readouts
|
||||||
@quantities = @routine.quantities.includes(:formula)
|
@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)
|
.includes(:routine, :source)
|
||||||
.filter(session[:m_filters], @quantities)
|
.filter(session[:m_filters], @quantities)
|
||||||
end
|
end
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<fieldset id="filters" class="collapsible">
|
<fieldset id="filters" class="collapsible">
|
||||||
<legend onclick="toggleFieldset(this);"><%= l(:label_filter_plural) %></legend>
|
<legend onclick="toggleFieldset(this);"><%= l(:label_filter_plural) %></legend>
|
||||||
<div>
|
<div>
|
||||||
<%= error_messages_for @formula_q %>
|
<%= error_messages_for @filter_q %>
|
||||||
|
|
||||||
<%= form_tag url, id: 'filters-form', name: 'filters-form',
|
<%= form_tag url, id: 'filters-form', name: 'filters-form',
|
||||||
method: :get, remote: true do %>
|
method: :get, remote: true do %>
|
||||||
@ -37,7 +37,7 @@
|
|||||||
<%= label_tag do %>
|
<%= label_tag do %>
|
||||||
<%= hidden_field_tag 'formula[zero_nil]', 0 %>
|
<%= hidden_field_tag 'formula[zero_nil]', 0 %>
|
||||||
<%= check_box_tag 'formula[zero_nil]', 1,
|
<%= 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' %>
|
<%= t 'quantities.form.zero_nil' %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</td>
|
</td>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
locals: {url: filter_project_foods_path(@project, view: :index)} %>
|
locals: {url: filter_project_foods_path(@project, view: :index)} %>
|
||||||
|
|
||||||
<% if @foods.any? { |f| f.persisted? } %>
|
<% 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">
|
<table class="list">
|
||||||
<thead>
|
<thead>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<%= render partial: 'foods/options' %>
|
<%= render partial: 'foods/options' %>
|
||||||
|
|
||||||
<% formulas = @quantities.map { |q| q.formula } %>
|
<% 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 %>
|
<%= error_messages_for *formulas %>
|
||||||
|
|
||||||
<table class="nutrients list odd-even">
|
<table class="nutrients list odd-even">
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<fieldset id="filters" class="collapsible">
|
<fieldset id="filters" class="collapsible">
|
||||||
<legend onclick="toggleFieldset(this);"><%= l(:label_filter_plural) %></legend>
|
<legend onclick="toggleFieldset(this);"><%= l(:label_filter_plural) %></legend>
|
||||||
<div>
|
<div>
|
||||||
<%= error_messages_for @formula_q %>
|
<%= error_messages_for @filter_q %>
|
||||||
|
|
||||||
<%= form_tag url, id: 'filters-form', name: 'filters-form',
|
<%= form_tag url, id: 'filters-form', name: 'filters-form',
|
||||||
method: :get, remote: true do %>
|
method: :get, remote: true do %>
|
||||||
@ -32,7 +32,7 @@
|
|||||||
<%= label_tag do %>
|
<%= label_tag do %>
|
||||||
<%= hidden_field_tag 'formula[zero_nil]', 0 %>
|
<%= hidden_field_tag 'formula[zero_nil]', 0 %>
|
||||||
<%= check_box_tag 'formula[zero_nil]', 1,
|
<%= 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' %>
|
<%= t 'quantities.form.zero_nil' %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</td>
|
</td>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
locals: {url: filter_project_measurements_path(@project, view: :index)} %>
|
locals: {url: filter_project_measurements_path(@project, view: :index)} %>
|
||||||
|
|
||||||
<% if @measurements.any? { |m| m.persisted? } %>
|
<% 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">
|
<table class="list">
|
||||||
<thead>
|
<thead>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<%= render partial: 'measurements/options' %>
|
<%= render partial: 'measurements/options' %>
|
||||||
|
|
||||||
<% formulas = @quantities.map { |q| q.formula } %>
|
<% 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 %>
|
<%= error_messages_for *formulas %>
|
||||||
|
|
||||||
<table class="readouts list odd-even">
|
<table class="readouts list odd-even">
|
||||||
|
@ -26,28 +26,28 @@ module BodyTracking
|
|||||||
items = items.where(hidden: filters[:visibility] == "1" ? false : true)
|
items = items.where(hidden: filters[:visibility] == "1" ? false : true)
|
||||||
end
|
end
|
||||||
|
|
||||||
formula_q =
|
filter_q =
|
||||||
if filters[:formula].present?
|
if filters[:formula].present?
|
||||||
owner = proxy_association.owner
|
owner = proxy_association.owner
|
||||||
project = owner.is_a?(Project) ? owner : owner.project
|
project = owner.is_a?(Project) ? owner : owner.project
|
||||||
domain = RELATIONS[proxy_association.klass.name][:domain]
|
domain = RELATIONS[proxy_association.klass.name][:domain]
|
||||||
formula_q_attrs = {
|
filter_q_attrs = {
|
||||||
name: 'Filter formula',
|
name: 'Filter formula',
|
||||||
formula_attributes: filters[:formula],
|
formula_attributes: filters[:formula],
|
||||||
domain: domain
|
domain: domain
|
||||||
}
|
}
|
||||||
project.quantities.new(formula_q_attrs)
|
project.quantities.new(filter_q_attrs)
|
||||||
end
|
end
|
||||||
apply_formula = formula_q.present? && formula_q.valid?
|
apply_formula = filter_q.present? && filter_q.valid?
|
||||||
|
|
||||||
result =
|
result =
|
||||||
if requested_q || apply_formula
|
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]]
|
requested_q ? computed : [computed[0]]
|
||||||
else
|
else
|
||||||
[items]
|
[items]
|
||||||
end
|
end
|
||||||
result.push(formula_q)
|
result.push(filter_q)
|
||||||
end
|
end
|
||||||
|
|
||||||
def compute_quantities(requested_q, filter_q = nil)
|
def compute_quantities(requested_q, filter_q = nil)
|
||||||
|
@ -17,6 +17,9 @@ module BodyTracking::ProjectPatch
|
|||||||
extend: BodyTracking::ItemsWithQuantities, through: :measurement_routines
|
extend: BodyTracking::ItemsWithQuantities, through: :measurement_routines
|
||||||
|
|
||||||
has_many :meals, -> { order "eaten_at DESC" }, dependent: :destroy
|
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,
|
has_many :meal_exposures, -> { where view_type: "Meal" }, dependent: :destroy,
|
||||||
foreign_key: :view_id, foreign_type: :view_type,
|
foreign_key: :view_id, foreign_type: :view_type,
|
||||||
class_name: 'Exposure', extend: BodyTracking::TogglableExposures
|
class_name: 'Exposure', extend: BodyTracking::TogglableExposures
|
||||||
|
Reference in New Issue
Block a user