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