Dynamic thresholds listing in targets form
This commit is contained in:
parent
8b17b33603
commit
9e3dc24a14
@ -1,13 +1,12 @@
|
|||||||
class TargetsController < ApplicationController
|
class TargetsController < ApplicationController
|
||||||
layout 'body_tracking'
|
layout 'body_tracking', except: :subthresholds
|
||||||
menu_item :body_trackers
|
menu_item :body_trackers
|
||||||
helper :body_trackers
|
helper :body_trackers
|
||||||
|
|
||||||
include Concerns::Finders
|
include Concerns::Finders
|
||||||
|
|
||||||
before_action :find_binding_goal_by_project_id, only: [:index, :new, :edit]
|
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, :subthresholds]
|
||||||
before_action :find_project_by_project_id, only: [:create]
|
|
||||||
before_action :find_quantity_by_quantity_id, only: [:toggle_exposure]
|
before_action :find_quantity_by_quantity_id, only: [:toggle_exposure]
|
||||||
#, if: ->{ params[:project_id].present? }
|
#, if: ->{ params[:project_id].present? }
|
||||||
#before_action :find_goal, only: [:index, :new],
|
#before_action :find_goal, only: [:index, :new],
|
||||||
@ -78,12 +77,14 @@ class TargetsController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def subthresholds
|
def subthresholds
|
||||||
quantity_id = params[:goal][:targets_attributes]
|
@target = @project.goals.binding.targets.new
|
||||||
.last[:thresholds_attributes][:quantity_id]
|
quantity = @project.quantities.target.find_by(id: params['quantity_id'])
|
||||||
return if quantity_id.blank?
|
if quantity.nil?
|
||||||
|
@last_quantity = @project.quantities.target.find(params[:parent_id])
|
||||||
quantity = @project.quantities.find(quantity_id)
|
else
|
||||||
@threshold = Threshold.new(quantity: quantity)
|
@last_quantity = quantity
|
||||||
|
@target.thresholds.new(quantity: quantity)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
<%# FIXME: nie trzeba ustawiac goal_id, data-remote samo wysle %>
|
||||||
<%= goal_f.collection_select :id, @project.goals, :id, :name,
|
<%= goal_f.collection_select :id, @project.goals, :id, :name,
|
||||||
{include_blank: false, required: true, label: :field_goal},
|
{include_blank: false, required: true, label: :field_goal},
|
||||||
autocomplete: 'off',
|
autocomplete: 'off',
|
||||||
|
@ -22,16 +22,9 @@
|
|||||||
{include_blank: true, required: true, label: :field_target},
|
{include_blank: true, required: true, label: :field_target},
|
||||||
onchange: "showQuantityPath(event);" %>
|
onchange: "showQuantityPath(event);" %>
|
||||||
|
|
||||||
<%= target_f.fields_for :thresholds do |threshold_f| %>
|
<%= render partial: 'targets/thresholds_form',
|
||||||
<%= render partial: 'thresholds/form', locals: {threshold_f: threshold_f} %>
|
locals: {target_f: target_f,
|
||||||
<% end %>
|
last_quantity: target_f.object.thresholds.last.quantity} %>
|
||||||
<% 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 %>
|
|
||||||
|
|
||||||
<%= link_to t(".button_delete_target"), '#', class: 'icon icon-del',
|
<%= link_to t(".button_delete_target"), '#', class: 'icon icon-del',
|
||||||
style: (@targets.many? ? "" : "display:none"),
|
style: (@targets.many? ? "" : "display:none"),
|
||||||
|
28
app/views/targets/_thresholds_form.html.erb
Normal file
28
app/views/targets/_thresholds_form.html.erb
Normal 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 %>
|
4
app/views/targets/subthresholds.html.erb
Normal file
4
app/views/targets/subthresholds.html.erb
Normal 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 %>
|
@ -1,5 +0,0 @@
|
|||||||
<% if @threshold %>
|
|
||||||
$('#targets').html('<%= j render partial: 'targets/index' %>');
|
|
||||||
<% else %>
|
|
||||||
$(event.target).empty();
|
|
||||||
<% end %>
|
|
@ -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 %>
|
|
@ -15,6 +15,7 @@ resources :projects, shallow: true do
|
|||||||
resources :targets, except: [:show, :edit, :update] do
|
resources :targets, except: [:show, :edit, :update] do
|
||||||
collection do
|
collection do
|
||||||
get 'edit/:date', action: :edit, as: :edit
|
get 'edit/:date', action: :edit, as: :edit
|
||||||
|
get 'subthresholds/(:parent_id)', action: :subthresholds, as: :subthresholds
|
||||||
patch :update
|
patch :update
|
||||||
post 'reapply/:date', action: :reapply, as: :reapply
|
post 'reapply/:date', action: :reapply, as: :reapply
|
||||||
end
|
end
|
||||||
@ -64,7 +65,6 @@ resources :projects, shallow: true do
|
|||||||
resources :quantities, except: [:show] do
|
resources :quantities, except: [:show] do
|
||||||
member do
|
member do
|
||||||
get 'new_child'
|
get 'new_child'
|
||||||
get 'subthresholds', controller: :targets
|
|
||||||
post 'create_child'
|
post 'create_child'
|
||||||
post 'move/:direction', action: :move, as: :move
|
post 'move/:direction', action: :move, as: :move
|
||||||
end
|
end
|
||||||
|
Reference in New Issue
Block a user