class UserPage { /** * @param {string} userEditRoute */ constructor(userEditRoute) { this.userEditRoute = userEditRoute this.initialize(); } initialize() { document.addEventListener("DOMContentLoaded", () => { const createUserModal = document.getElementById('createUserModal'); createUserModal.addEventListener('show.bs.modal', this.launchNewUserModal.bind(this)); document.querySelectorAll('[data-edit-user-action]') .forEach(item => item.addEventListener('click', this.onEditUser.bind(this))); }); } /** * @param {Event} event */ launchNewUserModal(event) { let el = event.relatedTarget; let email = el.dataset.email ?? ''; let fullname = el.dataset.fullname ?? ''; let role = el.dataset.role ?? -1; let id = el.dataset.id ?? -1; let ro = false; document.querySelectorAll('#submitSave, #submitCreate, #resultAddUser') .forEach(el => el.classList.add('d-none')); if ('createUserButton' !== el.id) { ro = true; document.getElementById('submitSave').classList.remove('d-none'); document.getElementById('actionField').value = 'update'; } else { document.getElementById('submitCreate').classList.remove('d-none'); document.getElementById('actionField').value = 'create'; } document.getElementById('emailField').value = email; document.getElementById('emailField').readonly = ro; document.getElementById('userRoleField').value = role; document.getElementById('usernameField').value = fullname; document.getElementById('idField').value = id; } /** * @param {MouseEvent} event */ onEditUser(event) { let action = event.target.closest('[data-action-type]').dataset.actionType; let id = event.target.closest("tr").dataset.id; this.actionOn(action, id); } /** * @param {string} action * @param {string} id */ actionOn(action, id) { PageNotifier.confirmDangerousAction( __('page.generic.confirmation_required'), __('app.warning.are_you_sure_to_make_this_operation') ).then(result => { if (!result) { return; } Commons.postBodyDataObject(this.userEditRoute, { 'action': action, 'id': id }); }); } }