From 7b2b855d56407598a57eaa445fefe9c68ac030be Mon Sep 17 00:00:00 2001 From: cryptogopher Date: Sat, 8 May 2021 01:02:57 +0200 Subject: [PATCH] Create Readouts controller Move #readouts + #toggle_exposure from Measurements to Readouts --- app/controllers/measurements_controller.rb | 21 +------------ app/controllers/readouts_controller.rb | 31 +++++++++++++++++++ app/helpers/body_trackers_helper.rb | 4 +++ app/helpers/measurements_helper.rb | 6 ---- app/views/measurements/_index.html.erb | 4 +-- app/views/measurements/toggle_exposure.js.erb | 1 - .../_index.html.erb} | 16 ++++++---- .../_options.html.erb | 2 +- .../index.html.erb} | 5 ++- app/views/readouts/toggle_exposure.js.erb | 1 + app/views/targets/_index.html.erb | 8 ++--- config/routes.rb | 6 ++-- init.rb | 6 ++-- 13 files changed, 62 insertions(+), 49 deletions(-) create mode 100644 app/controllers/readouts_controller.rb delete mode 100644 app/views/measurements/toggle_exposure.js.erb rename app/views/{measurements/_readouts.html.erb => readouts/_index.html.erb} (87%) rename app/views/{measurements => readouts}/_options.html.erb (89%) rename app/views/{measurements/readouts.html.erb => readouts/index.html.erb} (60%) create mode 100644 app/views/readouts/toggle_exposure.js.erb diff --git a/app/controllers/measurements_controller.rb b/app/controllers/measurements_controller.rb index 56da5f0..4c021e8 100644 --- a/app/controllers/measurements_controller.rb +++ b/app/controllers/measurements_controller.rb @@ -7,13 +7,9 @@ class MeasurementsController < ApplicationController before_action :init_session_filters before_action :find_project_by_project_id, only: [:index, :new, :create, :filter] - before_action :find_quantity_by_quantity_id, only: [:toggle_exposure] before_action :find_measurement, only: [:edit, :update, :destroy, :retake] - # @routine is set for :readouts view ONLY - before_action :find_measurement_routine, only: [:readouts, :toggle_exposure] before_action :find_measurement_routine_by_measurement_routine_id, - only: [:new, :create, :edit, :update, :retake, :filter], - if: -> { params[:view] == 'readouts' } + only: [:new, :create, :edit, :update, :retake, :filter] before_action :authorize before_action :set_view_params @@ -84,15 +80,6 @@ class MeasurementsController < ApplicationController render :new end - def readouts - prepare_readouts - end - - def toggle_exposure - @routine.readout_exposures.toggle!(@quantity) - prepare_readouts - end - def filter session[:m_filters] = params.permit(:name, formula: [:code, :zero_nil]) prepare_items @@ -141,12 +128,6 @@ class MeasurementsController < ApplicationController .filter(session[:m_filters]) end - def prepare_readouts - @quantities = @routine.quantities.includes(:formula) - @measurements, @filter_q = @routine.measurements.includes(:routine, :source) - .filter(session[:m_filters], @quantities) - end - def set_view_params @view_params = if @routine diff --git a/app/controllers/readouts_controller.rb b/app/controllers/readouts_controller.rb new file mode 100644 index 0000000..ce193f3 --- /dev/null +++ b/app/controllers/readouts_controller.rb @@ -0,0 +1,31 @@ +class ReadoutsController < ApplicationController + layout 'body_tracking' + menu_item :body_trackers + helper :body_trackers + helper :measurements + + include Concerns::Finders + + before_action :find_measurement_routine_by_measurement_routine_id, + only: [:index, :toggle_exposure] + before_action :find_quantity_by_quantity_id, only: [:toggle_exposure] + before_action :authorize + + def index + prepare_readouts + end + + def toggle_exposure + @routine.readout_exposures.toggle!(@quantity) + prepare_readouts + end + + private + + def prepare_readouts + @quantities = @routine.quantities.includes(:formula) + + @measurements, @filter_q = @routine.measurements.includes(:routine, :source) + .filter(session[:m_filters], @quantities) + end +end diff --git a/app/helpers/body_trackers_helper.rb b/app/helpers/body_trackers_helper.rb index edb2b7b..16125b7 100644 --- a/app/helpers/body_trackers_helper.rb +++ b/app/helpers/body_trackers_helper.rb @@ -22,6 +22,10 @@ module BodyTrackersHelper t&.strftime("%R") end + def format_datetime(dt) + dt.strftime("%F %R (~#{time_ago_in_words(dt)} ago)").html_safe + end + def toggle_exposure_options(enabled, domain = :all) enabled = enabled.map { |q| [q.name, q.id] } enabled_ids = enabled.map(&:last) diff --git a/app/helpers/measurements_helper.rb b/app/helpers/measurements_helper.rb index 56bde80..021774d 100644 --- a/app/helpers/measurements_helper.rb +++ b/app/helpers/measurements_helper.rb @@ -1,10 +1,4 @@ module MeasurementsHelper - def format_datetime(m) - m.taken_at - .strftime("%F %R (~#{time_ago_in_words(m.taken_at)} ago)") - .html_safe - end - def action_links(m) link_to(l(:button_retake), retake_measurement_path(m, @view_params), {remote: true, class: "icon icon-reload"}) + diff --git a/app/views/measurements/_index.html.erb b/app/views/measurements/_index.html.erb index bcbcdee..fe8069d 100644 --- a/app/views/measurements/_index.html.erb +++ b/app/views/measurements/_index.html.erb @@ -18,10 +18,10 @@ <% @measurements.each do |m| %> <% next if m.new_record? %> - <%= format_datetime(m) %> + <%= format_datetime(m.taken_at) %>
- <%= link_to m.routine.name, readouts_measurement_routine_path(m.routine) %> + <%= link_to m.routine.name, measurement_routine_readouts_path(m.routine) %>
<%= " (#{pluralize(m.readouts.size, 'readout')})" %> diff --git a/app/views/measurements/toggle_exposure.js.erb b/app/views/measurements/toggle_exposure.js.erb deleted file mode 100644 index 19375ef..0000000 --- a/app/views/measurements/toggle_exposure.js.erb +++ /dev/null @@ -1 +0,0 @@ -$('#readouts').html('<%= j render partial: 'measurements/readouts' %>'); diff --git a/app/views/measurements/_readouts.html.erb b/app/views/readouts/_index.html.erb similarity index 87% rename from app/views/measurements/_readouts.html.erb rename to app/views/readouts/_index.html.erb index a055e8b..4041af3 100644 --- a/app/views/measurements/_readouts.html.erb +++ b/app/views/readouts/_index.html.erb @@ -2,13 +2,13 @@ locals: {url: filter_project_measurements_path(@project, @view_params)} %> <% if @measurements.any? %> - <%= render partial: 'measurements/options' %> + <%= render partial: 'readouts/options' %> - <% formulas = @quantities.map { |q| q.formula } %> + <% formulas = @quantities.collect(&:formula) %> <% formulas.unshift(@filter_q.formula) if @filter_q %> <%= error_messages_for *formulas %> - +
<% total_width = 3 + @quantities.length %> @@ -17,7 +17,7 @@ <% @quantities.each do |q| %> @@ -50,7 +52,9 @@ end %> <% @quantities.each do |q| %>
<%= link_to '', - toggle_exposure_measurement_routine_path(@routine, quantity_id: q.id), + measurement_routine_toggle_exposure_path(@routine, quantity_id: q.id), {class: "icon icon-close", method: :post, remote: true} %>
<%= q.name %> @@ -34,7 +34,9 @@
- <%= format_datetime(measurement) %> + + <%= format_datetime(measurement.taken_at) %> + <%= format_value(readouts[q]) %> - <%= format_datetime(measurement) %> + + <%= format_datetime(measurement.taken_at) %> + diff --git a/app/views/measurements/_options.html.erb b/app/views/readouts/_options.html.erb similarity index 89% rename from app/views/measurements/_options.html.erb rename to app/views/readouts/_options.html.erb index c933efc..2a546b1 100644 --- a/app/views/measurements/_options.html.erb +++ b/app/views/readouts/_options.html.erb @@ -1,7 +1,7 @@
<%= l(:label_options) %>
- <%= form_tag toggle_exposure_measurement_routine_path(@routine, @view_params), + <%= form_tag measurement_routine_toggle_exposure_path(@routine, @view_params), id: 'toggle-exposure-form', name: 'toggle-exposure-form', method: :post, remote: true do %> diff --git a/app/views/measurements/readouts.html.erb b/app/views/readouts/index.html.erb similarity index 60% rename from app/views/measurements/readouts.html.erb rename to app/views/readouts/index.html.erb index 0c1ba5f..fc31561 100644 --- a/app/views/measurements/readouts.html.erb +++ b/app/views/readouts/index.html.erb @@ -7,6 +7,9 @@ <%= title [t("measurements.index.heading"), project_measurements_path(@project)], @routine.name %> +<% if @routine.description? %> +

<%= @routine.description %>

+<% end %>
- <%= render partial: 'measurements/readouts' %> + <%= render partial: 'readouts/index' %>
diff --git a/app/views/readouts/toggle_exposure.js.erb b/app/views/readouts/toggle_exposure.js.erb new file mode 100644 index 0000000..d102337 --- /dev/null +++ b/app/views/readouts/toggle_exposure.js.erb @@ -0,0 +1 @@ +$('#readouts').html('<%= j render partial: 'readouts/index' %>'); diff --git a/app/views/targets/_index.html.erb b/app/views/targets/_index.html.erb index 6e9827d..648d22f 100644 --- a/app/views/targets/_index.html.erb +++ b/app/views/targets/_index.html.erb @@ -1,16 +1,12 @@ -<%#= render partial: 'measurements/filters', - locals: {url: filter_project_measurements_path(@project, @view_params)} %> - <% if @targets_by_date.any? %> <%= render partial: 'targets/options' %> - <% formulas = @quantities.map { |q| q.formula } %> - <%# formulas.unshift(@filter_q.formula) if @filter_q %> + <% formulas = @quantities.collect(&:formula) %> <%= error_messages_for *formulas %> - <% total_width = 3 + @quantities.length %> + <% total_width = 2 + @quantities.length %> <% header = quantities_table_header(@quantities) %> <% header.each_with_index do |row, i| %> diff --git a/config/routes.rb b/config/routes.rb index 7dd210e..4fe13e7 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -27,10 +27,8 @@ resources :projects, shallow: true do end resources :measurement_routines, only: [:show, :edit] do - member do - get 'readouts', controller: :measurements - post 'toggle_exposure', controller: :measurements - end + resources :readouts, only: [:index] + post 'toggle_exposure', controller: :readouts end resources :measurements, except: [:show] do member do diff --git a/init.rb b/init.rb index adb0434..025a8c6 100644 --- a/init.rb +++ b/init.rb @@ -19,7 +19,8 @@ Redmine::Plugin.register :body_tracking do targets: [:index, :show], meals: [:index], measurement_routines: [:show], - measurements: [:index, :readouts, :filter], + measurements: [:index, :filter], + readouts: [:index], foods: [:index, :nutrients, :filter, :autocomplete], sources: [:index], quantities: [:index, :parents, :filter], @@ -33,7 +34,8 @@ Redmine::Plugin.register :body_tracking do meals: [:new, :create, :edit, :update, :destroy, :edit_notes, :update_notes, :toggle_eaten, :toggle_exposure, :adjust], measurement_routines: [:edit], - measurements: [:new, :create, :edit, :update, :destroy, :retake, :toggle_exposure], + measurements: [:new, :create, :edit, :update, :destroy, :retake], + readouts: [:toggle_exposure], foods: [:new, :create, :edit, :update, :destroy, :toggle, :toggle_exposure, :import], sources: [:create, :destroy],