mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-11-16 14:17:00 +08:00
73 lines
2.4 KiB
JavaScript
73 lines
2.4 KiB
JavaScript
/* global HelperModule I18n */
|
|
|
|
(function() {
|
|
'use strict';
|
|
|
|
function initNewUserAssignmentFormListener() {
|
|
$(document).on('change', 'form#new-user-assignment-form', function() {
|
|
let values = [];
|
|
let count = 0;
|
|
let submitBtn = $(this).find('input[type="submit"]');
|
|
|
|
$(this).find('input:checked').each((_, el) => {
|
|
let select = $(el).closest('.new-member-item').find('select');
|
|
let selectValue = parseInt(select.val(), 10);
|
|
values.push(selectValue);
|
|
count += 1;
|
|
|
|
if (isNaN(selectValue)) {
|
|
select.closest('.form-group ')
|
|
.addClass('has-error');
|
|
} else {
|
|
select.closest('.form-group ')
|
|
.removeClass('has-error');
|
|
}
|
|
});
|
|
|
|
if (values.includes(NaN) || values.length === 0) {
|
|
submitBtn.attr('disabled', 'disabled');
|
|
} else {
|
|
submitBtn.attr('disabled', false);
|
|
}
|
|
|
|
switch (count) {
|
|
case 0:
|
|
submitBtn.val(submitBtn.data('label-default'));
|
|
break;
|
|
case 1:
|
|
submitBtn.val(submitBtn.data('label-singular'));
|
|
break;
|
|
default:
|
|
submitBtn.val(submitBtn.data('label-plural').replace('{num}', count));
|
|
}
|
|
});
|
|
|
|
$(document).on('ajax:success', 'form#new-user-assignment-form', function(_e, data) {
|
|
$('#user_assignments_modal').replaceWith($(data.html).find('#user_assignments_modal'));
|
|
HelperModule.flashAlertMsg(data.flash, 'success');
|
|
});
|
|
|
|
$(document).on('ajax:error', 'form#new-user-assignment-form', function(_e, data) {
|
|
HelperModule.flashAlertMsg(data.responseJSON.flash
|
|
? data.responseJSON.flash : I18n.t('errors.general'), 'danger');
|
|
});
|
|
|
|
$(document).on('ajax:error', 'form.member-item', function(_e, data) {
|
|
HelperModule.flashAlertMsg(data.responseJSON.flash, 'danger');
|
|
});
|
|
|
|
$(document).on('ajax:success', 'form.member-item', function(_e, data) {
|
|
if (data.flash) {
|
|
HelperModule.flashAlertMsg(data.flash, 'success');
|
|
}
|
|
});
|
|
|
|
$(document).on('click', '.user-assignment-dropdown .user-role-selector', function() {
|
|
let roleId = $(this).data('role-id');
|
|
$(this).closest('.dropdown').find('#user_assignment_user_role_id, .default-public-user-role-id').val(roleId);
|
|
$(this).closest('form').trigger('submit');
|
|
});
|
|
}
|
|
|
|
$(document).one('turbolinks:load', initNewUserAssignmentFormListener);
|
|
}());
|