From 6433621fa793d55b9f60b6f439c3796bc51094ea Mon Sep 17 00:00:00 2001 From: cryptogopher Date: Tue, 26 Nov 2019 21:47:22 +0100 Subject: [PATCH] Upgraded defaults import to include future fields by default Added Quantity index formula checkmark display --- app/controllers/body_trackers_controller.rb | 27 +++++++++++---------- app/views/quantities/_index.html.erb | 5 +++- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/app/controllers/body_trackers_controller.rb b/app/controllers/body_trackers_controller.rb index 4428b54..55d4ffc 100644 --- a/app/controllers/body_trackers_controller.rb +++ b/app/controllers/body_trackers_controller.rb @@ -8,9 +8,11 @@ class BodyTrackersController < ApplicationController def defaults # Units available = @project.units.pluck(:shortname) - defaults = Unit.where(project: nil).pluck(:name, :shortname) - defaults.delete_if { |n, s| available.include?(s) } - @project.units.create(defaults.map { |n, s| {name: n, shortname: s} }) + defaults = Unit.where(project: nil).map do |u| + u.attributes.except('id', 'project_id', 'created_at', 'updated_at') + end + defaults.delete_if { |u| available.include?(u['shortname']) } + @project.units.create(defaults) new_units = defaults.length flash[:notice] = "Loaded #{new_units > 0 ? new_units : "no" } new" \ @@ -22,13 +24,10 @@ class BodyTrackersController < ApplicationController defaults = Quantity.where(project: nil) Quantity.each_with_level(defaults) do |q, level| unless available.has_key?([q.name, q.domain]) - obj = @project.quantities.create({ - domain: q.domain, - parent: q.parent ? available[[q.parent.name, q.parent.domain]] : nil, - name: q.name, - description: q.description, - primary: q.primary - }) + attrs = q.attributes.except('id', 'project_id', 'parent_id', 'lft', 'rgt', + 'created_at', 'updated_at') + attrs['parent'] = q.parent ? available[[q.parent.name, q.parent.domain]] : nil + obj = @project.quantities.create(attrs) available[[q.name, q.domain]] = obj end end @@ -39,9 +38,11 @@ class BodyTrackersController < ApplicationController # Sources available = @project.sources.pluck(:name) - defaults = Source.where(project: nil).pluck(:name, :description) - defaults.delete_if { |n, d| available.include?(n) } - @project.sources.create(defaults.map { |n, d| {name: n, description: d} }) + defaults = Source.where(project: nil).map do |s| + s.attributes.except('id', 'project_id', 'created_at', 'updated_at') + end + defaults.delete_if { |s| available.include?(s['name']) } + @project.sources.create(defaults) new_sources = defaults.length flash[:notice] += " and #{new_sources > 0 ? new_sources : "no" } new" \ diff --git a/app/views/quantities/_index.html.erb b/app/views/quantities/_index.html.erb index 45a5af3..b639057 100644 --- a/app/views/quantities/_index.html.erb +++ b/app/views/quantities/_index.html.erb @@ -9,6 +9,7 @@ <%= l(:field_order) %> <%= l(:field_domain) %> <%= l(:field_description) %> + <%= l(:field_formula) %> <%= l(:field_action) %> @@ -47,6 +48,7 @@ <%= q.domain %> <%= q.description %> + <%= checked_image q.formula.present? %> <%= link_to l(:button_edit), edit_quantity_path(q), { @@ -69,7 +71,8 @@ <%= submit_tag l(:button_save) %> <%= link_to l(:button_cancel), "#", - onclick: '$(this).closest("tr").remove(); $("#quantities a.icon-edit").css("visibility", "visible"); ' + onclick: '$(this).closest("tr").remove(); + $("#quantities a.icon-edit").css("visibility", "visible");' %> <% end %>