diff --git a/app/assets/javascripts/experiments/dropdown_actions.js b/app/assets/javascripts/experiments/dropdown_actions.js index d04f25a97..1034e7284 100644 --- a/app/assets/javascripts/experiments/dropdown_actions.js +++ b/app/assets/javascripts/experiments/dropdown_actions.js @@ -14,6 +14,7 @@ backdrop: true, keyboard: false, }); + validateMoveModal(id); }) .on("ajax:error", function() { animateSpinner(null, false); @@ -45,6 +46,24 @@ }); } + // Validates move action + function validateMoveModal(modal){ + if ( modal.match(/#move-experiment-modal-[0-9]*/) ) { + var form = $(modal).find("form"); + form + .on('ajax:success', function(e, data) { + animateSpinner(form, true); + window.location.replace(data.path); + }) + .on('ajax:error', function(e, error) { + var msg = JSON.parse(error.responseText); + renderFormError(e, + form.find("#experiment_project_id"), + msg.message.toString()); + }) + .clearFormErrors(); + } + } // Initialize no description edit link function initEditNoDescription(){ var modal = "#edit-experiment-modal-"; @@ -55,7 +74,7 @@ } // Bind modal to new-experiment action initializeModal($("#new-experiment"), '#new-experiment-modal'); - + // Bind modal to big-plus new experiment actions initializeModal('.big-plus', '#new-experiment-modal'); diff --git a/app/controllers/experiments_controller.rb b/app/controllers/experiments_controller.rb index 3cb4a34a1..5058b2702 100644 --- a/app/controllers/experiments_controller.rb +++ b/app/controllers/experiments_controller.rb @@ -185,11 +185,22 @@ class ExperimentsController < ApplicationController flash[:success] = t('experiments.move.success_flash', experiment: @experiment.name) - redirect_to canvas_experiment_path(@experiment) + respond_to do |format| + format.json do + render json: { path: canvas_experiment_url(@experiment) }, status: :ok + end + end else - flash[:error] = t('experiments.move.error_flash', - experiment: @experiment.name) - redirect_to project_path(@experiment.project) + # flash[:error] = t('experiments.move.error_flash', + # experiment: @experiment.name) + # redirect_to project_path(@experiment.project) + respond_to do |format| + format.json do + render json: { message: t('experiments.move.error_flash', + experiment: @experiment.name) }, + status: :unprocessable_entity + end + end end end diff --git a/app/views/experiments/_move_modal.html.erb b/app/views/experiments/_move_modal.html.erb index 6f1e73b08..eaea49dfd 100644 --- a/app/views/experiments/_move_modal.html.erb +++ b/app/views/experiments/_move_modal.html.erb @@ -5,7 +5,8 @@ role="dialog" aria-labelledby="move-experiment-modal-label"> <%= bootstrap_form_for @experiment, url: move_experiment_path(), - method: :post do |f| %> + method: :post, + remote: true do |f| %>