diff --git a/app/controllers/meals_controller.rb b/app/controllers/meals_controller.rb
index 9808113..105a9f5 100644
--- a/app/controllers/meals_controller.rb
+++ b/app/controllers/meals_controller.rb
@@ -6,6 +6,7 @@ class MealsController < ApplicationController
include Concerns::Finders
before_action :find_project_by_project_id, only: [:index, :new, :create]
+ before_action :find_quantity_by_quantity_id, only: [:toggle_exposure]
before_action :find_meal, only: [:edit, :update, :destroy, :edit_notes, :update_notes,
:toggle_eaten]
before_action :authorize
@@ -59,6 +60,11 @@ class MealsController < ApplicationController
prepare_meals
end
+ def toggle_exposure
+ @project.meal_exposures.toggle!(@quantity)
+ prepare_meals
+ end
+
private
def meal_params
diff --git a/app/views/meals/_options.html.erb b/app/views/meals/_options.html.erb
index c35b7af..1753cc2 100644
--- a/app/views/meals/_options.html.erb
+++ b/app/views/meals/_options.html.erb
@@ -8,7 +8,8 @@
|
- <%= select_tag 'quantity_id', toggle_column_options %> |
+ <%= select_tag 'quantity_id',
+ toggle_exposure_options(@project.meal_exposures, :diet) %> |
<%= submit_tag l(:button_add) %> |
diff --git a/config/routes.rb b/config/routes.rb
index 6642f2e..b329c25 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -16,6 +16,9 @@ resources :projects, shallow: true do
patch 'update_notes'
post 'toggle_eaten'
end
+ collection do
+ post 'toggle_exposure'
+ end
end
resources :measurement_routines, only: [:show, :edit] do
member do
diff --git a/init.rb b/init.rb
index 62f24ce..9837c06 100644
--- a/init.rb
+++ b/init.rb
@@ -25,7 +25,7 @@ Redmine::Plugin.register :body_tracking do
body_trackers: [:defaults],
ingredients: [:adjust],
meals: [:new, :create, :edit, :update, :destroy, :edit_notes, :update_notes,
- :toggle_eaten],
+ :toggle_eaten, :toggle_exposure],
measurement_routines: [:edit],
measurements: [:new, :create, :edit, :update, :destroy, :retake, :toggle_exposure],
foods: [:new, :create, :edit, :update, :destroy, :toggle, :toggle_exposure,
diff --git a/lib/body_tracking/project_patch.rb b/lib/body_tracking/project_patch.rb
index 9943c73..690e829 100644
--- a/lib/body_tracking/project_patch.rb
+++ b/lib/body_tracking/project_patch.rb
@@ -1,20 +1,24 @@
module BodyTracking::ProjectPatch
Project.class_eval do
- has_many :meals, -> { order "eaten_at DESC" }, dependent: :destroy
-
- has_many :measurement_routines, dependent: :destroy
- has_many :measurements, -> { order "taken_at DESC" }, dependent: :destroy,
- extend: BodyTracking::ItemsWithQuantities, through: :measurement_routines
- has_many :foods, -> { order "name" }, dependent: :destroy,
- extend: BodyTracking::ItemsWithQuantities
-
has_many :sources, dependent: :destroy
has_many :quantities, -> { order "lft" }, dependent: :destroy
has_many :units, dependent: :destroy
+ has_many :foods, -> { order "name" }, dependent: :destroy,
+ extend: BodyTracking::ItemsWithQuantities
has_many :nutrient_exposures, as: :view, dependent: :destroy,
class_name: 'Exposure', extend: BodyTracking::TogglableExposures
has_many :nutrient_quantities, -> { order "lft" }, through: :nutrient_exposures,
source: 'quantity'
+
+ has_many :measurement_routines, dependent: :destroy
+ has_many :measurements, -> { order "taken_at DESC" }, dependent: :destroy,
+ extend: BodyTracking::ItemsWithQuantities, through: :measurement_routines
+
+ has_many :meals, -> { order "eaten_at DESC" }, dependent: :destroy
+ has_many :meal_exposures, as: :view, dependent: :destroy,
+ class_name: 'Exposure', extend: BodyTracking::TogglableExposures
+ has_many :meal_quantities, -> { order "lft" }, through: :meal_exposures,
+ source: 'quantity'
end
end