From 3706206191c3c57617471c77f1e949718e3fab6c Mon Sep 17 00:00:00 2001 From: cryptogopher Date: Sun, 19 Apr 2020 18:16:07 +0200 Subject: [PATCH] Update notes in div --- app/controllers/meals_controller.rb | 12 ++++++++++-- app/helpers/meals_helper.rb | 6 ++++++ app/views/meals/_edit_notes_form.html.erb | 13 +++++++++++++ app/views/meals/_show.html.erb | 10 +++++----- app/views/meals/edit_notes.js.erb | 4 ++++ app/views/meals/update_notes.js.erb | 2 ++ config/locales/en.yml | 2 +- config/routes.rb | 3 ++- init.rb | 3 ++- 9 files changed, 45 insertions(+), 10 deletions(-) create mode 100644 app/views/meals/_edit_notes_form.html.erb create mode 100644 app/views/meals/edit_notes.js.erb create mode 100644 app/views/meals/update_notes.js.erb diff --git a/app/controllers/meals_controller.rb b/app/controllers/meals_controller.rb index c5e0bb9..5773c41 100644 --- a/app/controllers/meals_controller.rb +++ b/app/controllers/meals_controller.rb @@ -6,7 +6,8 @@ class MealsController < ApplicationController include Concerns::Finders before_action :find_project_by_project_id, only: [:index, :new, :create] - before_action :find_meal, only: [:edit, :update, :destroy, :note, :toggle_eaten] + before_action :find_meal, only: [:edit, :update, :destroy, :edit_notes, :update_notes, + :toggle_eaten] before_action :authorize def index @@ -35,11 +36,18 @@ class MealsController < ApplicationController def destroy end - def note + def edit_notes + end + + def update_notes + if @meal.update(params.require(:meal).permit(:notes)) + flash[:notice] = 'Updated meal notes' + end end def toggle_eaten @meal.toggle_eaten! + flash[:notice] = 'Updated meal status' prepare_meals end diff --git a/app/helpers/meals_helper.rb b/app/helpers/meals_helper.rb index ef6a1f2..353d333 100644 --- a/app/helpers/meals_helper.rb +++ b/app/helpers/meals_helper.rb @@ -15,4 +15,10 @@ module MealsHelper end end.reduce(:+) end + + def display_notes(m) + content_tag :div, link_to(l(:button_notes), edit_notes_meal_path(m), + {remote: true, class: "icon icon-wiki-page"}) + + (m.notes.blank? ? "" : ": #{m.notes}") + end end diff --git a/app/views/meals/_edit_notes_form.html.erb b/app/views/meals/_edit_notes_form.html.erb new file mode 100644 index 0000000..1b94afc --- /dev/null +++ b/app/views/meals/_edit_notes_form.html.erb @@ -0,0 +1,13 @@ +<%= labelled_form_for @meal, + url: update_notes_meal_path(@meal), + remote: true, + html: {id: 'edit-meal-notes-form', name: 'edit-meal-notes-form'} do |f| %> + + <%= link_to l(:button_save), '', class: 'icon icon-save', + onclick: "$(event.target).closest('form').submit(); return false;" %> + <%= f.text_field :notes, rows: 1, required: false, label: '' %> + <%= link_to l(:button_cancel), '', + onclick: "$(event.target).closest('form').remove(); + $('div[id=notes-#{@meal.id}]').contents().show(); + return false;" %> +<% end %> diff --git a/app/views/meals/_show.html.erb b/app/views/meals/_show.html.erb index 156184d..dcc5b93 100644 --- a/app/views/meals/_show.html.erb +++ b/app/views/meals/_show.html.erb @@ -4,16 +4,16 @@ <% if m.eaten_at %> <%= " at #{m.eaten_at.strftime('%R')}" %> <%= link_to '', toggle_eaten_meal_path(m), - {remote: true, method: :post, class: "icon icon-close"} %> + {remote: true, method: :post, class: "icon icon-close", + style: "margin-left: -0.2em;"} %> <% else %> <%= link_to l(:button_eat), toggle_eaten_meal_path(m), {remote: true, method: :post, class: "icon icon-ok"} %> <% end %> - <%= link_to l(:button_note), note_meal_path(m), - {remote: true, class: "icon icon-wiki-page"} %> -
- <%= meal_links(m) %> +
  + <%= display_notes(m) %>
+
<%= meal_links(m) %>
diff --git a/app/views/meals/edit_notes.js.erb b/app/views/meals/edit_notes.js.erb new file mode 100644 index 0000000..931117c --- /dev/null +++ b/app/views/meals/edit_notes.js.erb @@ -0,0 +1,4 @@ +var box = $('div[id=notes-<%= @meal.id %>]'); +box.contents().hide(); +box.append('<%= j render partial: 'meals/edit_notes_form' %>'); +box.find('input[type=text]').focus(); diff --git a/app/views/meals/update_notes.js.erb b/app/views/meals/update_notes.js.erb new file mode 100644 index 0000000..c9603b3 --- /dev/null +++ b/app/views/meals/update_notes.js.erb @@ -0,0 +1,2 @@ +var box = $('div[id=notes-<%= @meal.id %>]'); +box.html('<%= j display_notes(@meal) %>'); diff --git a/config/locales/en.yml b/config/locales/en.yml index 310a9de..c4c12c0 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -19,7 +19,7 @@ en: field_code: 'Formula' field_shortname: 'Short name' button_eat: 'Eat' - button_note: 'Note' + button_notes: 'Notes' button_retake: 'Retake' button_child: 'Child' activerecord: diff --git a/config/routes.rb b/config/routes.rb index 7d416b6..e2fc41e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -12,7 +12,8 @@ resources :projects, shallow: true do end resources :meals, only: [:index, :new, :create, :edit, :update, :destroy] do member do - post 'note' + get 'edit_notes' + patch 'update_notes' post 'toggle_eaten' end end diff --git a/init.rb b/init.rb index b333a88..efd1d67 100644 --- a/init.rb +++ b/init.rb @@ -24,7 +24,8 @@ Redmine::Plugin.register :body_tracking do permission :manage_common, { body_trackers: [:defaults], ingredients: [:adjust], - meals: [:new, :create, :edit, :update, :destroy, :note, :toggle_eaten], + meals: [:new, :create, :edit, :update, :destroy, :edit_notes, :update_notes, + :toggle_eaten], measurement_routines: [:edit], measurements: [:new, :create, :edit, :update, :destroy, :retake, :toggle_column], foods: [:new, :create, :edit, :update, :destroy, :toggle, :toggle_column,