mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-11-03 19:50:34 +08:00
Update checklist item positions with validations skip
This commit is contained in:
parent
02ff9b7cbd
commit
38d3411007
1 changed files with 16 additions and 14 deletions
|
|
@ -13,8 +13,6 @@ class StepsController < ApplicationController
|
|||
before_action :check_manage_permissions, only: %i(new create edit update destroy move_up move_down)
|
||||
before_action :check_complete_and_checkbox_permissions, only: %i(toggle_step_state checklistitem_state)
|
||||
|
||||
before_action :update_checklist_item_positions, only: %i(create update)
|
||||
|
||||
def new
|
||||
@step = Step.new
|
||||
|
||||
|
|
@ -165,6 +163,9 @@ class StepsController < ApplicationController
|
|||
table.last_modified_by = current_user unless table.new_record?
|
||||
table.team = current_team
|
||||
end
|
||||
|
||||
update_checklist_items_without_callback(step_params_all)
|
||||
|
||||
if @step.save
|
||||
|
||||
TinyMceAsset.update_images(@step, params[:tiny_mce_images], current_user)
|
||||
|
|
@ -423,18 +424,6 @@ class StepsController < ApplicationController
|
|||
|
||||
private
|
||||
|
||||
def update_checklist_item_positions
|
||||
if params["step"].present? && params["step"]["checklists_attributes"].present?
|
||||
params["step"]["checklists_attributes"].values.each do |cla|
|
||||
if cla["checklist_items_attributes"].present?
|
||||
cla["checklist_items_attributes"].each do |idx, item|
|
||||
item["position"] = idx
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# This function is used for partial update of step references and
|
||||
# it's useful when you want to execute destroy action on attribute
|
||||
# collection separately from normal update action, for example if
|
||||
|
|
@ -534,6 +523,19 @@ class StepsController < ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
def update_checklist_items_without_callback(params)
|
||||
params.dig('checklists_attributes')&.values&.each do |cl|
|
||||
ck = @step.checklists.find_by(id: cl[:id])
|
||||
next if ck.nil? # ck is new checklist, skip update positions
|
||||
|
||||
cl['checklist_items_attributes']&.each do |item|
|
||||
# Here item is somehow array of index and parameters [0, paramteters<Object>], should be fixed on FE also
|
||||
item_record = ck.checklist_items.find_by(id: item[1][:id])
|
||||
item_record.update_attribute('position', item[1][:position])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def check_view_permissions
|
||||
render_403 unless can_read_protocol_in_module?(@protocol) || can_read_protocol_in_repository?(@protocol)
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue