From f00f93c9e941935d0c0ed2a002905f549391106c Mon Sep 17 00:00:00 2001 From: cryptogopher Date: Sat, 4 Apr 2020 02:13:46 +0200 Subject: [PATCH] View tracking through params in Ingredients Squeezed ingredient form --- app/controllers/ingredients_controller.rb | 31 +++++++--------------- app/helpers/ingredients_helper.rb | 4 +-- app/models/nutrient.rb | 6 ----- app/views/ingredients/_contextual.html.erb | 3 +-- app/views/ingredients/_edit_form.html.erb | 2 +- app/views/ingredients/_form.html.erb | 18 +++++++------ app/views/ingredients/_index.html.erb | 4 +-- app/views/ingredients/_new_form.html.erb | 2 +- app/views/ingredients/_nutrients.html.erb | 11 ++++---- app/views/ingredients/_options.html.erb | 2 +- app/views/ingredients/create.js.erb | 6 ++--- app/views/ingredients/edit.js.erb | 6 ++--- app/views/ingredients/index.html.erb | 2 +- app/views/ingredients/index.js.erb | 6 ++--- app/views/ingredients/new.js.erb | 3 ++- app/views/ingredients/nutrients.html.erb | 2 +- app/views/ingredients/toggle_column.js.erb | 1 + 17 files changed, 47 insertions(+), 62 deletions(-) create mode 100644 app/views/ingredients/toggle_column.js.erb diff --git a/app/controllers/ingredients_controller.rb b/app/controllers/ingredients_controller.rb index 4bc4e88..491369e 100644 --- a/app/controllers/ingredients_controller.rb +++ b/app/controllers/ingredients_controller.rb @@ -4,7 +4,6 @@ class IngredientsController < ApplicationController layout 'body_tracking' menu_item :body_trackers helper :body_trackers - helper_method :current_view include Concerns::Finders @@ -16,15 +15,12 @@ class IngredientsController < ApplicationController before_action :authorize def index - self.current_view = :ingredients - prepare_items + prepare_ingredients end def new @ingredient = @project.ingredients.new - # passing attr for Nutrient after_initialize - # FIXME: is this necessary when creating through association? - @ingredient.nutrients.new(ingredient: @ingredient) + @ingredient.nutrients.new(unit: @ingredient.ref_unit) end def create @@ -33,7 +29,7 @@ class IngredientsController < ApplicationController flash[:notice] = 'Created new ingredient' prepare_items else - @ingredient.nutrients.new(ingredient: @ingredient) if @ingredient.nutrients.empty? + @ingredient.nutrients.new(unit: @ingredient.ref_unit) if @ingredient.nutrients.empty? render :new end end @@ -63,14 +59,12 @@ class IngredientsController < ApplicationController end def nutrients - self.current_view = :nutrients - prepare_items + prepare_nutrients end def toggle_column @project.nutrient_columns.toggle!(@quantity) - prepare_items - render :index + prepare_nutrients end def filter @@ -206,6 +200,10 @@ class IngredientsController < ApplicationController ) end + def prepare_items + params[:view] == 'index' ? prepare_ingredients : prepare_nutrients + end + def prepare_ingredients @ingredients, @formula_q = @project.ingredients .includes(:ref_unit, :source) @@ -217,15 +215,4 @@ class IngredientsController < ApplicationController @ingredients, @requested_n, @extra_n, @formula_q = @project.ingredients .filter(session[:i_filters], @quantities) end - - def prepare_items - (current_view == :nutrients) ? prepare_nutrients : prepare_ingredients - end - - def current_view - @current_view || (params[:view_mode] == "nutrients" ? :nutrients : :ingredients) - end - def current_view=(cv) - @current_view = cv - end end diff --git a/app/helpers/ingredients_helper.rb b/app/helpers/ingredients_helper.rb index 24ad9ef..a84dca4 100644 --- a/app/helpers/ingredients_helper.rb +++ b/app/helpers/ingredients_helper.rb @@ -33,8 +33,8 @@ module IngredientsHelper end end - def action_links(i) - link_to(l(:button_edit), edit_ingredient_path(i, view_mode: current_view), + def action_links(i, view) + link_to(l(:button_edit), edit_ingredient_path(i, view: view), {remote: true, class: "icon icon-edit"}) + delete_link(ingredient_path(i), {remote: true, data: {}}) end diff --git a/app/models/nutrient.rb b/app/models/nutrient.rb index ebbd1e6..836ea29 100644 --- a/app/models/nutrient.rb +++ b/app/models/nutrient.rb @@ -5,10 +5,4 @@ class Nutrient < ActiveRecord::Base validates :quantity, uniqueness: {scope: :ingredient_id} validates :amount, numericality: {greater_than_or_equal_to: 0.0} - - after_initialize do - if new_record? - self.unit ||= self.ingredient.ref_unit - end - end end diff --git a/app/views/ingredients/_contextual.html.erb b/app/views/ingredients/_contextual.html.erb index 0c22fcf..e016cc9 100644 --- a/app/views/ingredients/_contextual.html.erb +++ b/app/views/ingredients/_contextual.html.erb @@ -1,7 +1,6 @@ <% if User.current.allowed_to?(:manage_common, @project) %> <%= link_to t(".link_import_ingredients"), '#', class: 'icon icon-multiple', onclick: '$("#import-ingredients").show(); $("#filename").focus(); return false;' %> - <%= link_to t(".link_new_ingredient"), - new_project_ingredient_path(@project, view_mode: current_view), + <%= link_to t(".link_new_ingredient"), new_project_ingredient_path(@project, view: view), {remote: true, class: 'icon icon-add'} %> <% end %> diff --git a/app/views/ingredients/_edit_form.html.erb b/app/views/ingredients/_edit_form.html.erb index bba364e..945191c 100644 --- a/app/views/ingredients/_edit_form.html.erb +++ b/app/views/ingredients/_edit_form.html.erb @@ -1,5 +1,5 @@ <%= labelled_form_for @ingredient, - url: ingredient_path(@ingredient, view_mode: current_view), + url: ingredient_path(@ingredient, view: view), method: :patch, remote: true, html: {id: 'ingredient-edit-form', name: 'ingredient-edit-form'} do |f| %> diff --git a/app/views/ingredients/_form.html.erb b/app/views/ingredients/_form.html.erb index 55f3ecd..679747e 100644 --- a/app/views/ingredients/_form.html.erb +++ b/app/views/ingredients/_form.html.erb @@ -4,18 +4,20 @@

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

<%= f.text_area :notes, cols: 40, rows: 3, required: false, style: "width: 100%;" %>

-

- <%= f.number_field :ref_amount, size: 8, required: true, min: 0, - label: :field_reference %> - <%= f.select :ref_unit_id, unit_options, {label: '', required: true} %> -

-

<%= f.select :group, group_options, required: true %>

-

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

+

<%= f.select :group, group_options, required: true %>

+

+ <%= f.number_field :ref_amount, size: 8, required: true, min: 0, + label: :field_reference %> + <%= f.select :ref_unit_id, unit_options, {label: '', required: true} %> +

+

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

<%= f.text_field :source_ident, size: 25, required: false %>

diff --git a/app/views/ingredients/_index.html.erb b/app/views/ingredients/_index.html.erb index 926323c..1ba2b5e 100644 --- a/app/views/ingredients/_index.html.erb +++ b/app/views/ingredients/_index.html.erb @@ -1,5 +1,5 @@ <%= render partial: 'ingredients/filters', - locals: {url: filter_project_ingredients_path(@project)} %> + locals: {url: filter_project_ingredients_path(@project, view: :index)} %> <% if @ingredients.any? { |i| i.persisted? } %> <%= error_messages_for @formula_q.formula if @formula_q %> @@ -35,7 +35,7 @@ <%= i.source.name if i.source.present? %> <%= ", #{i.source_ident}" if i.source_ident.present? %> - <%= action_links(i) %> + <%= action_links(i, :index) %> <% end %> diff --git a/app/views/ingredients/_new_form.html.erb b/app/views/ingredients/_new_form.html.erb index 79b5904..83d5b62 100644 --- a/app/views/ingredients/_new_form.html.erb +++ b/app/views/ingredients/_new_form.html.erb @@ -1,7 +1,7 @@

<%= t ".heading_new_ingredient" %>

<%= labelled_form_for @ingredient, - url: project_ingredients_path(@project, view_mode: current_view), + url: project_ingredients_path(@project, view: view), remote: true, html: {id: 'new-ingredient-form', name: 'new-ingredient-form'} do |f| %> diff --git a/app/views/ingredients/_nutrients.html.erb b/app/views/ingredients/_nutrients.html.erb index a779627..6364a7f 100644 --- a/app/views/ingredients/_nutrients.html.erb +++ b/app/views/ingredients/_nutrients.html.erb @@ -1,5 +1,5 @@ <%= render partial: 'ingredients/filters', - locals: {url: filter_project_ingredients_path(@project, view_mode: current_view)} %> + locals: {url: filter_project_ingredients_path(@project, view: :nutrients)} %> <% if @ingredients.any? %> <%= render partial: 'ingredients/options' %> @@ -17,8 +17,7 @@
<%= link_to '', - toggle_column_project_ingredients_path(@project, quantity_id: q.id, - view_mode: current_view), + toggle_column_project_ingredients_path(@project, quantity_id: q.id), {class: "icon icon-close", method: :post, remote: true} %>
<%= q.name %> @@ -39,7 +38,7 @@ <% @requested_n[index].each do |*, value| %> <%= format_value(value) %> <% end %> - <%= action_links(i) %> + <%= action_links(i, :nutrients) %> @@ -58,7 +57,9 @@

<%= format_value(value) %>

<% end %> - <%= action_links(i) %> + + <%= action_links(i, :nutrients) %> + <% next unless @quantities.length > 0 %> diff --git a/app/views/ingredients/_options.html.erb b/app/views/ingredients/_options.html.erb index 35de053..9b9708e 100644 --- a/app/views/ingredients/_options.html.erb +++ b/app/views/ingredients/_options.html.erb @@ -1,7 +1,7 @@
<%= l(:label_options) %>
- <%= form_tag toggle_column_project_ingredients_path(@project, view_mode: current_view), + <%= form_tag toggle_column_project_ingredients_path(@project), id: 'toggle-column-form', name: 'toggle-column-form', method: :post, remote: true do %> diff --git a/app/views/ingredients/create.js.erb b/app/views/ingredients/create.js.erb index de75697..1194715 100644 --- a/app/views/ingredients/create.js.erb +++ b/app/views/ingredients/create.js.erb @@ -1,6 +1,6 @@ $('#new-ingredient').empty(); -<% if current_view == :nutrients %> - $('#nutrients').html('<%= j render partial: 'ingredients/nutrients' %>'); -<% else %> +<% if params[:view] == 'index' %> $('#ingredients').html('<%= j render partial: 'ingredients/index' %>'); +<% else %> + $('#nutrients').html('<%= j render partial: 'ingredients/nutrients' %>'); <% end %> diff --git a/app/views/ingredients/edit.js.erb b/app/views/ingredients/edit.js.erb index c025555..4e225a9 100644 --- a/app/views/ingredients/edit.js.erb +++ b/app/views/ingredients/edit.js.erb @@ -2,7 +2,7 @@ $('tr[id=ingredient-<%= @ingredient.id %>]').nextUntil('tr.primary', ':not(.ingr .remove(); var columns = $('table > thead > tr > th').length; $('tr[id=ingredient-<%= @ingredient.id %>]').nextUntil('tr.primary').addBack().last().after( - '' + - '
<%= j render partial: "ingredients/edit_form" %>
' + - '' + '
' + + '<%= j render partial: 'ingredients/edit_form', locals: {view: params[:view]} %>' + + '
' ); diff --git a/app/views/ingredients/index.html.erb b/app/views/ingredients/index.html.erb index 43fee3b..4174433 100644 --- a/app/views/ingredients/index.html.erb +++ b/app/views/ingredients/index.html.erb @@ -1,7 +1,7 @@
<%= link_to t(".heading_nutrient_view"), nutrients_project_ingredients_path(@project), class: 'icon icon-stats' %> - <%= render partial: 'ingredients/contextual' %> + <%= render partial: 'ingredients/contextual', locals: {view: :index} %>
<%= render partial: 'ingredients/import' %> diff --git a/app/views/ingredients/index.js.erb b/app/views/ingredients/index.js.erb index cb6b1ef..0205e27 100644 --- a/app/views/ingredients/index.js.erb +++ b/app/views/ingredients/index.js.erb @@ -1,5 +1,5 @@ -<% if current_view == :nutrients %> - $('#nutrients').html('<%= j render partial: 'ingredients/nutrients' %>'); -<% else %> +<% if params[:view] == 'index' %> $('#ingredients').html('<%= j render partial: 'ingredients/index' %>'); +<% else %> + $('#nutrients').html('<%= j render partial: 'ingredients/nutrients' %>'); <% end %> diff --git a/app/views/ingredients/new.js.erb b/app/views/ingredients/new.js.erb index 3078c9d..7c7880c 100644 --- a/app/views/ingredients/new.js.erb +++ b/app/views/ingredients/new.js.erb @@ -1 +1,2 @@ -$('#new-ingredient').html('<%= j render partial: 'ingredients/new_form' %>'); +$('#new-ingredient') + .html('<%= j render partial: 'ingredients/new_form', locals: {view: params[:view]} %>'); diff --git a/app/views/ingredients/nutrients.html.erb b/app/views/ingredients/nutrients.html.erb index 547dbcc..de19983 100644 --- a/app/views/ingredients/nutrients.html.erb +++ b/app/views/ingredients/nutrients.html.erb @@ -1,7 +1,7 @@
<%= link_to t(".heading_ingredient_list"), project_ingredients_path(@project), class: 'icon icon-list' %> - <%= render partial: 'ingredients/contextual' %> + <%= render partial: 'ingredients/contextual', locals: {view: :nutrients} %>
<%= render partial: 'ingredients/import' %> diff --git a/app/views/ingredients/toggle_column.js.erb b/app/views/ingredients/toggle_column.js.erb new file mode 100644 index 0000000..543d759 --- /dev/null +++ b/app/views/ingredients/toggle_column.js.erb @@ -0,0 +1 @@ +$('#nutrients').html('<%= j render partial: 'ingredients/nutrients' %>');