From 54040a2764b4d3d4ed56c07f75cd6e8695aee58e Mon Sep 17 00:00:00 2001 From: cryptogopher Date: Sun, 1 Dec 2019 01:08:09 +0100 Subject: [PATCH] Added setting taken_at in measurement form Changed action toggle -> retake --- app/controllers/measurements_controller.rb | 7 +++---- app/models/measurement.rb | 16 ++++++++++++++++ app/views/measurements/_form.html.erb | 7 ++++++- app/views/measurements/_index.html.erb | 19 ++++++++----------- app/views/measurements/index.js.erb | 3 +++ app/views/quantities/_index.html.erb | 2 +- assets/stylesheets/body_tracking.css | 6 ++++++ config/locales/en.yml | 4 +++- config/routes.rb | 2 +- init.rb | 2 +- 10 files changed, 48 insertions(+), 20 deletions(-) create mode 100644 app/views/measurements/index.js.erb diff --git a/app/controllers/measurements_controller.rb b/app/controllers/measurements_controller.rb index 6996eea..a2903b8 100644 --- a/app/controllers/measurements_controller.rb +++ b/app/controllers/measurements_controller.rb @@ -2,7 +2,7 @@ class MeasurementsController < ApplicationController menu_item :body_trackers before_action :find_project_by_project_id, only: [:index, :create] - before_action :find_measurement, only: [:destroy, :toggle] + before_action :find_measurement, only: [:destroy, :retake] before_action :authorize def index @@ -31,11 +31,10 @@ class MeasurementsController < ApplicationController flash[:notice] = 'Deleted measurement' end prepare_measurements - render :toggle + render :index end - def toggle - @measurement.toggle_hidden! + def retake prepare_measurements end diff --git a/app/models/measurement.rb b/app/models/measurement.rb index cfc33a1..21d27ac 100644 --- a/app/models/measurement.rb +++ b/app/models/measurement.rb @@ -16,14 +16,30 @@ class Measurement < ActiveRecord::Base end validates :name, presence: true + validates :taken_at, presence: true after_initialize do if new_record? self.hidden = false if self.hidden.nil? + self.taken_at = Time.now end end def toggle_hidden! self.toggle!(:hidden) end + + def taken_at_date + self.taken_at + end + def taken_at_date=(value) + self.taken_at = Time.parse(value, self.taken_at) + end + + def taken_at_time + self.taken_at + end + def taken_at_time=(value) + self.taken_at = Time.parse(value, self.taken_at) + end end diff --git a/app/views/measurements/_form.html.erb b/app/views/measurements/_form.html.erb index 47d6bfa..80bdef1 100644 --- a/app/views/measurements/_form.html.erb +++ b/app/views/measurements/_form.html.erb @@ -4,11 +4,16 @@

<%= f.select :source_id, source_options, {required: false, include_blank: t('.null_source')} %>

<%= f.text_field :name, size: 40, required: true %>

+

+ <%= f.date_field :taken_at_date, required: true %> + <%= f.time_field :taken_at_time, value: @measurement.taken_at.strftime("%H:%M"), + required: true, label: '' %> +

<% @measurement.readouts.each_with_index do |r, index| %> <%= f.fields_for 'readouts_attributes', r, index: '' do |ff| %>

<%= ff.select :quantity_id, quantity_options, - {include_blank: true, label: (index > 0 ? '' : :field_readouts)} %> + {include_blank: true, required: true, label: (index > 0 ? '' : :field_readouts)} %> <%= ff.number_field :value, {size: 8, step: :any, label: ''} %> <%= ff.select :unit_id, unit_options, {label: ''} %> <%= ff.check_box :_destroy, {style: "display:none", label: ''} %> diff --git a/app/views/measurements/_index.html.erb b/app/views/measurements/_index.html.erb index 2f3d649..5021bee 100644 --- a/app/views/measurements/_index.html.erb +++ b/app/views/measurements/_index.html.erb @@ -3,6 +3,7 @@ <%= l(:field_name) %> + <%= l(:field_taken_at_date) %> <%= l(:field_source) %> <%= l(:field_action) %> @@ -11,18 +12,14 @@ <% @measurements.each do |m| %> <% next if m.new_record? %> - - <%= link_to '', toggle_measurement_path(m), { - remote: true, - method: :post, - class: "icon icon-eye" - } %> - <%= m.name %> - - - <%= m.source.name if m.source.present? %> - + <%= m.name %> + <%= m.taken_at.strftime("%F %R") %> + <%= m.source.name if m.source.present? %> + <%= link_to l(:button_retake), retake_measurement_path(m), { + remote: true, + class: "icon icon-reload" + } %> <%= delete_link measurement_path(m), {remote: true, data: {}} %> diff --git a/app/views/measurements/index.js.erb b/app/views/measurements/index.js.erb new file mode 100644 index 0000000..caed350 --- /dev/null +++ b/app/views/measurements/index.js.erb @@ -0,0 +1,3 @@ +$('div[id^=flash_]').remove(); +$('#content').prepend('<%= escape_javascript(render_flash_messages) %>'); +$('#measurements').html('<%= escape_javascript(render partial: 'measurements/index') %>'); diff --git a/app/views/quantities/_index.html.erb b/app/views/quantities/_index.html.erb index 13d7a21..99707a3 100644 --- a/app/views/quantities/_index.html.erb +++ b/app/views/quantities/_index.html.erb @@ -10,7 +10,7 @@ <%= l(:field_domain) %> <%= l(:field_description) %> <%= l(:field_formula) %> - <%= l(:field_action) %> + <%= l(:field_action) %> diff --git a/assets/stylesheets/body_tracking.css b/assets/stylesheets/body_tracking.css index 9da6748..70a9e77 100644 --- a/assets/stylesheets/body_tracking.css +++ b/assets/stylesheets/body_tracking.css @@ -28,3 +28,9 @@ fieldset#filters table.filter td {padding-left: 8px;} .icon-eye { background-image: url(../images/eye.png); } .icon-bullet-open { background-image: url(../../../images/bullet_toggle_minus.png); } .icon-bullet-closed { background-image: url(../../../images/bullet_toggle_plus.png); } + +input[type=number] {-moz-appearance:textfield;} +input[type=date], input[type=time], input[type=number] { + border:1px solid #9EB1C2; + padding: 3px; +} diff --git a/config/locales/en.yml b/config/locales/en.yml index efa74c1..462e382 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2,11 +2,12 @@ en: body_trackers_menu_caption: 'Body trackers' field_readouts: 'Readouts' + field_taken_at_date: 'Taken at' field_order: 'Order' field_action: 'Action' field_reference: 'Reference' field_group: 'Group' - field_source: 'Data source' + field_source: 'Source' field_source_ident: 'Source identifier' field_nutrients: 'Nutrients:' field_domain: 'Domain' @@ -15,6 +16,7 @@ en: field_primary: 'Primary' field_shortname: 'Short name' button_primary: 'Primary' + button_retake: 'Retake' activerecord: errors: models: diff --git a/config/routes.rb b/config/routes.rb index 7d84802..a9f7db9 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -6,7 +6,7 @@ resources :projects, shallow: true do collection do post 'defaults' resources :measurements, only: [:index, :create, :destroy] do - post 'toggle', on: :member + get 'retake', on: :member end resources :ingredients, only: [:index, :create, :destroy] do post 'toggle', on: :member diff --git a/init.rb b/init.rb index 505153c..1df1fef 100644 --- a/init.rb +++ b/init.rb @@ -24,7 +24,7 @@ Redmine::Plugin.register :body_tracking do }, read: true permission :manage_common, { body_trackers: [:defaults], - measurements: [:create, :destroy, :toggle], + measurements: [:create, :destroy, :retake], ingredients: [:create, :destroy, :toggle, :import, :toggle_nutrient_column], sources: [:create, :destroy], quantities: [:create, :edit, :update, :destroy, :toggle, :move],