From 0a87513458db51ae3d9b97dbba831823eb969150 Mon Sep 17 00:00:00 2001 From: Anton Date: Fri, 11 Nov 2022 11:22:25 +0100 Subject: [PATCH] Add edit modal to experiment table [SCI-7383] --- app/assets/javascripts/experiments/table.js | 49 ++++++++++++++++--- .../experiments/table_view_service.rb | 4 +- .../canvas/edit/modal/_edit_module.html.erb | 4 +- app/views/experiments/table.html.erb | 1 + 4 files changed, 49 insertions(+), 9 deletions(-) diff --git a/app/assets/javascripts/experiments/table.js b/app/assets/javascripts/experiments/table.js index c01ecbc33..edb6175cc 100644 --- a/app/assets/javascripts/experiments/table.js +++ b/app/assets/javascripts/experiments/table.js @@ -9,6 +9,9 @@ var ExperimnetTable = { activeFilters: {}, filters: [], // Filter {name: '', init(), closeFilter(), apply(), active(), clearFilter()} pageSize: GLOBAL_CONSTANTS.DEFAULT_ELEMENTS_PER_PAGE, + getUrls: function(id) { + return $(`.table-row[data-id="${id}"] .my-module-urls`).data('urls'); + }, loadPlaceholder: function() { let placeholder = ''; $.each(Array(this.pageSize), function() { @@ -39,6 +42,41 @@ var ExperimnetTable = { $(`
${row}
`).appendTo(`${this.table} .table-body`); }); }, + initRenameModal: function() { + $('#editTask').on('click', () => { + $('#modal-edit-module').modal('show'); + $('#edit-module-name-input').val($(`#taskName${this.selectedMyModules[0]}`).data('full-name')); + }); + $('#modal-edit-module').on('click', 'button[data-action="confirm"]', () => { + let newValue = $('#edit-module-name-input').val(); + + if (newValue === $(`#taskName${this.selectedMyModules[0]}`).data('full-name')) { + $('#modal-edit-module').modal('hide'); + return false; + } + $.ajax({ + url: this.getUrls(this.selectedMyModules[0]).name_update, + type: 'PATCH', + dataType: 'json', + data: { my_module: { name: $('#edit-module-name-input').val() } }, + success: () => { + $(`#taskName${this.selectedMyModules[0]}`).text(newValue); + $(`#taskName${this.selectedMyModules[0]}`).data('full-name', newValue); + $('#edit-module-name-input').closest('.sci-input-container').removeClass('error'); + $('#modal-edit-module').modal('hide'); + }, + error: function(response) { + let error = response.responseJSON.name.join(', '); + $('#edit-module-name-input') + .closest('.sci-input-container') + .addClass('error') + .attr('data-error-text', error); + } + }); + + return true; + }); + }, checkActionPermission: function(permission) { let allMyModules; @@ -73,7 +111,7 @@ var ExperimnetTable = { } if (checkbox.checked) { - $.get($(`.table-row[data-id="${myModuleId}"] .my-module-urls`).data('url-permissions'), (result) => { + $.get(this.getUrls(myModuleId).permissions, (result) => { this.permissions.forEach((permission) => { row.data(permission, result[permission]); }); @@ -171,19 +209,16 @@ var ExperimnetTable = { this.initSelectAllCheckbox(); this.initFilters(); this.loadTable(); + this.initRenameModal(); } }; ExperimnetTable.render.task_name = function(data) { - return `${data.name}`; + return `${data.name}`; }; ExperimnetTable.render.id = function(data) { - let element = $(`
${data.id}
`); - $.each(data.urls, (name, url) => { - element.attr(`data-url-${name}`, url); - }); - return element.prop('outerHTML'); + return `
${data.id}
`; }; ExperimnetTable.render.due_date = function(data) { diff --git a/app/services/experiments/table_view_service.rb b/app/services/experiments/table_view_service.rb index fe7fa2d31..ae2c79b2f 100644 --- a/app/services/experiments/table_view_service.rb +++ b/app/services/experiments/table_view_service.rb @@ -72,6 +72,7 @@ module Experiments def task_name_presenter(my_module) { + id: my_module.id, name: my_module.name, url: protocols_my_module_path(my_module) } @@ -81,7 +82,8 @@ module Experiments { id: my_module.id, urls: { - permissions: permissions_my_module_path(my_module) + permissions: permissions_my_module_path(my_module), + name_update: my_module_path(my_module) } } end diff --git a/app/views/canvas/edit/modal/_edit_module.html.erb b/app/views/canvas/edit/modal/_edit_module.html.erb index 822bb836f..79bf58268 100644 --- a/app/views/canvas/edit/modal/_edit_module.html.erb +++ b/app/views/canvas/edit/modal/_edit_module.html.erb @@ -7,7 +7,9 @@