1
0

Dynamic thresholds listing in targets form

This commit is contained in:
cryptogopher 2021-02-20 13:55:04 +01:00
parent 8b17b33603
commit 9e3dc24a14
8 changed files with 47 additions and 40 deletions

View File

@ -1,13 +1,12 @@
class TargetsController < ApplicationController
layout 'body_tracking'
layout 'body_tracking', except: :subthresholds
menu_item :body_trackers
helper :body_trackers
include Concerns::Finders
before_action :find_binding_goal_by_project_id, only: [:index, :new, :edit]
before_action :find_project, only: [:subthresholds]
before_action :find_project_by_project_id, only: [:create]
before_action :find_project_by_project_id, only: [:create, :subthresholds]
before_action :find_quantity_by_quantity_id, only: [:toggle_exposure]
#, if: ->{ params[:project_id].present? }
#before_action :find_goal, only: [:index, :new],
@ -78,12 +77,14 @@ class TargetsController < ApplicationController
end
def subthresholds
quantity_id = params[:goal][:targets_attributes]
.last[:thresholds_attributes][:quantity_id]
return if quantity_id.blank?
quantity = @project.quantities.find(quantity_id)
@threshold = Threshold.new(quantity: quantity)
@target = @project.goals.binding.targets.new
quantity = @project.quantities.target.find_by(id: params['quantity_id'])
if quantity.nil?
@last_quantity = @project.quantities.target.find(params[:parent_id])
else
@last_quantity = quantity
@target.thresholds.new(quantity: quantity)
end
end
private

View File

@ -1,3 +1,4 @@
<%# FIXME: nie trzeba ustawiac goal_id, data-remote samo wysle %>
<%= goal_f.collection_select :id, @project.goals, :id, :name,
{include_blank: false, required: true, label: :field_goal},
autocomplete: 'off',

View File

@ -22,16 +22,9 @@
{include_blank: true, required: true, label: :field_target},
onchange: "showQuantityPath(event);" %>
<%= target_f.fields_for :thresholds do |threshold_f| %>
<%= render partial: 'thresholds/form', locals: {threshold_f: threshold_f} %>
<% end %>
<% last_quantity = target_f.object.thresholds.last.quantity %>
<% unless last_quantity.leaf? %>
<%= target_f.fields_for 'thresholds_attributes', Threshold.new do |threshold_f| %>
<%= render partial: 'thresholds/form',
locals: {threshold_f: threshold_f, parent: last_quantity} %>
<% end %>
<% end %>
<%= render partial: 'targets/thresholds_form',
locals: {target_f: target_f,
last_quantity: target_f.object.thresholds.last.quantity} %>
<%= link_to t(".button_delete_target"), '#', class: 'icon icon-del',
style: (@targets.many? ? "" : "display:none"),

View File

@ -0,0 +1,28 @@
<% target_f.object.thresholds.new unless last_quantity.leaf? %>
<%= target_f.fields_for :thresholds, child_index: '' do |threshold_f| %>
<% threshold_q = threshold_f.object.quantity %>
<% parent_id = threshold_q.nil? ? last_quantity.id : threshold_q.parent_id %>
<%= threshold_f.collection_select :quantity_id,
@project.quantities.target.children_of(parent_id),
:id, :name,
{prompt: parent_id.nil? ? false : '.', required: true, no_label: true},
{autocomplete: 'off',
onchange: "$.ajax({
url: '#{subthresholds_project_targets_path(parent_id: parent_id)}',
data: 'quantity_id=' + $(this).val(),
dataType: 'html',
success: function(data) {
$(event.target).nextAll().addBack().last().after(data).end().remove();
}
});
return false;"} %>
<%# {autocomplete: 'off',
data: {remote: true, url: subthresholds_project_targets_path(parent_id: parent_id)}} %>
<% unless threshold_q.nil? %>
<%= threshold_f.hidden_field :_destroy %>
<%= threshold_f.number_field :value, {size: 8, step: :any, no_label: true} %>
<%= threshold_f.collection_select :unit_id, @project.units, :id, :shortname,
{no_label: true} %>
<% end %>
<% end %>

View File

@ -0,0 +1,4 @@
<%= fields_for 'goal[targets_attributes][]', @target do |target_f| %>
<%= render partial: 'targets/thresholds_form',
locals: {target_f: target_f, last_quantity: @last_quantity} %>
<% end %>

View File

@ -1,5 +0,0 @@
<% if @threshold %>
$('#targets').html('<%= j render partial: 'targets/index' %>');
<% else %>
$(event.target).empty();
<% end %>

View File

@ -1,15 +0,0 @@
<% threshold_q = threshold_f.object.quantity %>
<% parent_id = defined?(parent) ? parent.id : threshold_q.parent_id %>
<%= threshold_f.collection_select :quantity_id,
@project.quantities.target.children_of(parent_id),
:id, :name,
{prompt: parent_id.nil? ? false : '.', required: true, no_label: true},
{autocomplete: 'off', data: {remote: true,
url: subthresholds_quantity_path(@project)}} %>
<% unless threshold_q.nil? %>
<%= threshold_f.hidden_field :_destroy %>
<%= threshold_f.number_field :value, {size: 8, step: :any, no_label: true} %>
<%= threshold_f.collection_select :unit_id, @project.units, :id, :shortname,
{no_label: true} %>
<% end %>

View File

@ -15,6 +15,7 @@ resources :projects, shallow: true do
resources :targets, except: [:show, :edit, :update] do
collection do
get 'edit/:date', action: :edit, as: :edit
get 'subthresholds/(:parent_id)', action: :subthresholds, as: :subthresholds
patch :update
post 'reapply/:date', action: :reapply, as: :reapply
end
@ -64,7 +65,6 @@ resources :projects, shallow: true do
resources :quantities, except: [:show] do
member do
get 'new_child'
get 'subthresholds', controller: :targets
post 'create_child'
post 'move/:direction', action: :move, as: :move
end