diff --git a/app/controllers/result_orderable_elements_controller.rb b/app/controllers/result_orderable_elements_controller.rb index d2cd71e83..7f516f7b0 100644 --- a/app/controllers/result_orderable_elements_controller.rb +++ b/app/controllers/result_orderable_elements_controller.rb @@ -5,17 +5,19 @@ class ResultOrderableElementsController < ApplicationController before_action :check_manage_permissions def reorder - @result.with_lock do - params[:result_orderable_element_positions].each do |id, position| - @result.result_orderable_elements.find(id).update_column(:position, position) + params[:result_orderable_element_positions].each do |id, position| + result_element = @result.result_orderable_elements.find(id) + ActiveRecord::Base.transaction do + result_element.insert_at(position) end - - log_activity(:result_content_rearranged, @my_module.experiment.project, my_module: @my_module.id) - - @result.touch end + log_activity(:result_content_rearranged, @my_module.experiment.project, my_module: @my_module.id) + @result.touch + render json: params[:result_orderable_element_positions], status: :ok + rescue ActiveRecord::RecordInvalid + render json: { errors: result_element.errors }, status: :conflict end private @@ -39,7 +41,7 @@ class ResultOrderableElementsController < ApplicationController .call(activity_type: type_of, owner: current_user, subject: @result, - team: @@my_module.team, + team: @my_module.team, project: project, message_items: message_items) end diff --git a/app/javascript/vue/results/result.vue b/app/javascript/vue/results/result.vue index 70f25688f..55b8794a5 100644 --- a/app/javascript/vue/results/result.vue +++ b/app/javascript/vue/results/result.vue @@ -106,7 +106,7 @@ %{repository} inventory snapshot failed to generate. Please contact support if this problem persists." + reorder_results: + title: "Rearrange result content" modules_list_partial: private_tasks_html: 'Assigned to %{nr} private task(s)' no_results: diff --git a/config/routes.rb b/config/routes.rb index 05179fcc6..f91b50026 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -614,6 +614,9 @@ Rails.application.routes.draw do end resources :results, only: [:update, :destroy] do + resources :result_orderable_elements do + post :reorder, on: :collection + end resources :result_comments, path: '/comments', only: %i(create index update destroy)