diff --git a/app/assets/javascripts/my_modules/archived.js b/app/assets/javascripts/my_modules/archived.js index 888caa819..3c68ca8e7 100644 --- a/app/assets/javascripts/my_modules/archived.js +++ b/app/assets/javascripts/my_modules/archived.js @@ -1,3 +1,5 @@ +/* global HelperModule */ + (function() { let selectedTasks = []; @@ -18,17 +20,57 @@ $('#module-archive').on('click', '.task-selector', function() { let taskId = $(this).closest('.task-selector-container').data('task-id'); let index = $.inArray(taskId, selectedTasks); - let resoteTasksButton = $('.restore-button-container'); + const restoreTasksButton = $('.restore-button-container'); + const moveTasksButton = $('.move-button-container'); // If checkbox is checked and row ID is not in list of selected folder IDs if (this.checked && index === -1) { selectedTasks.push(taskId); - resoteTasksButton.collapse('show'); + restoreTasksButton.collapse('show'); + moveTasksButton.collapse('show'); // Otherwise, if checkbox is not checked and ID is in list of selected IDs } else if (!this.checked && index !== -1) { selectedTasks.splice(index, 1); } // Hide button - if (selectedTasks.length === 0) resoteTasksButton.collapse('hide'); + if (selectedTasks.length === 0) { + restoreTasksButton.collapse('hide'); + moveTasksButton.collapse('hide'); + } }); + + function initMoveButton() { + $('.move-button-container').on('click', 'button', function() { + const cardsContainer = $('#cards-container'); + $.get(cardsContainer.data('move-modules-modal-url'), (modalData) => { + if ($('#modal-move-modules').length > 0) { + $('#modal-move-modules').replaceWith(modalData.html); + } else { + $('#module-archive').append(modalData.html); + } + + $('#modal-move-modules').on('shown.bs.modal', function() { + $(this).find('.selectpicker').selectpicker().focus(); + }); + + $('#modal-move-modules').on('click', 'button[data-action="confirm"]', () => { + const moveParams = { + to_experiment_id: $('#modal-move-modules').find('.selectpicker').val(), + my_module_ids: selectedTasks + }; + $.post(cardsContainer.data('move-modules-url'), moveParams, (data) => { + HelperModule.flashAlertMsg(data.message, 'success'); + window.location.reload(); + }).error((data) => { + HelperModule.flashAlertMsg(data.responseJSON.message, 'danger'); + }); + $('#modal-move-modules').modal('hide'); + }); + + $('#modal-move-modules').modal('show'); + }); + }); + } + + initMoveButton(); }()); diff --git a/app/assets/stylesheets/experiment/show.scss b/app/assets/stylesheets/experiment/show.scss index 6a8a05f49..8392a125d 100644 --- a/app/assets/stylesheets/experiment/show.scss +++ b/app/assets/stylesheets/experiment/show.scss @@ -6,6 +6,16 @@ .experimnet-name { max-width: calc(100% - 300px); } + + .toolbar { + align-items: center; + column-gap: .5rem; + display: flex; + + .collapse { + margin: .5rem 0; + } + } } #experimentTable { diff --git a/app/views/experiments/module_archive.html.erb b/app/views/experiments/module_archive.html.erb index bf62eb8f7..9e7d8b7b9 100644 --- a/app/views/experiments/module_archive.html.erb +++ b/app/views/experiments/module_archive.html.erb @@ -11,6 +11,12 @@