Fix toolbar buttons on archived task canvas page [SCI-10945]

This commit is contained in:
Andrej 2024-08-01 15:44:47 +02:00
parent 52f9a8411c
commit b3da5cf8c3
4 changed files with 45 additions and 9 deletions

View file

@ -7,14 +7,15 @@
let taskId = $(this).closest('.task-selector-container').data('task-id');
let index = $.inArray(taskId, selectedTasks);
window.actionToolbarComponent.fetchActions({ my_module_ids: selectedTasks });
// If checkbox is checked and row ID is not in list of selected folder IDs
if (this.checked && index === -1) {
selectedTasks.push(taskId);
} else if (!this.checked && index !== -1) {
selectedTasks.splice(index, 1);
}
const items = selectedTasks.length ? JSON.stringify(selectedTasks.map((item) => ({ id: item }))) : [];
window.actionToolbarComponent.fetchActions({ items });
});
function restoreMyModules(url, ids) {
@ -63,7 +64,32 @@
});
}
function initAccessModal() {
$('#module-archive').on('click', '#openAccessModal', (e) => {
e.preventDefault();
const container = document.getElementById('accessModalContainer');
const target = e.currentTarget;
$.get(target.dataset.url, (data) => {
const object = {
...data.data.attributes,
id: data.data.id,
type: data.data.type
};
const { rolesUrl } = container.dataset;
const params = {
object,
roles_path: rolesUrl
};
const modal = $('#accessModalComponent').data('accessModal');
modal.params = params;
modal.open();
});
});
}
window.initActionToolbar();
initRestoreMyModules();
initMoveButton();
initAccessModal();
}());

View file

@ -410,7 +410,7 @@ class MyModulesController < ApplicationController
actions:
Toolbars::MyModulesService.new(
current_user,
my_module_ids: JSON.parse(params[:items]).map { |i| i['id'] }
my_module_ids: params[:items].present? ? JSON.parse(params[:items]).map { |i| i['id'] } : params[:items]
).actions
}
end

View file

@ -41,6 +41,7 @@ module Toolbars
name: 'restore',
label: I18n.t('experiments.table.toolbar.restore'),
icon: 'sn-icon sn-icon-restore',
button_id: 'restoreTask',
path: restore_my_modules_experiment_path(experiment),
type: :emit
}
@ -68,16 +69,12 @@ module Toolbars
return unless can_read_my_module?(my_module)
path = if can_manage_my_module_users?(my_module)
edit_access_permissions_my_module_path(my_module)
else
access_permissions_my_module_path(my_module)
end
{
name: 'access',
label: I18n.t('experiments.table.my_module_actions.access'),
icon: 'sn-icon sn-icon-project-member-access',
path: my_module_path(my_module, format: :json),
button_id: 'openAccessModal',
type: :emit
}
end
@ -89,6 +86,7 @@ module Toolbars
name: 'move',
label: I18n.t('experiments.table.toolbar.move'),
icon: 'sn-icon sn-icon-move',
button_id: 'moveTask',
type: :emit,
path: move_modules_experiment_path(@my_modules.first.experiment, my_module_ids: @my_modules.pluck(:id))
}

View file

@ -31,6 +31,17 @@
<div id="actionToolbar" data-behaviour="vue">
<action-toolbar actions-url="<%= actions_toolbar_my_modules_url %>" />
</div>
<div id="accessModalContainer" class="vue-access-modal"
data-roles-url="<%= user_roles_projects_path %>">
<div ref="accessModal" id="accessModalComponent"></div>
<teleport to="body">
<access-modal
v-if="accessModalOpen"
:params="params"
@close="accessModalOpen = false" />
</teleport>
</div>
</div>
<% unless @my_modules.present? %>
<div class="pt-10">
@ -38,5 +49,6 @@
</div>
<% end %>
<%= javascript_include_tag('vue_components_action_toolbar') %>
<%= javascript_include_tag 'vue_legacy_access_modal' %>
<%= javascript_include_tag('projects/canvas') %>
<%= javascript_include_tag('my_modules/archived') %>