148 lines
4.3 KiB
JavaScript
148 lines
4.3 KiB
JavaScript
|
export function initAutofillEvents() {
|
|||
|
checkSpecialtyIsSelected();
|
|||
|
|
|||
|
$("#autofill_specialty-cancel-button").on("click", function (e) {
|
|||
|
e.preventDefault();
|
|||
|
|
|||
|
let allSpecialtyIds = [];
|
|||
|
let specialitySelectors = $("#posable-speciality .speciality-select");
|
|||
|
for (let I = 0; I < specialitySelectors.length; I++) {
|
|||
|
let specialitySelector = $(specialitySelectors[I]);
|
|||
|
|
|||
|
allSpecialtyIds.push(specialitySelector.val());
|
|||
|
}
|
|||
|
|
|||
|
startSubmittingProcess(allSpecialtyIds, []);
|
|||
|
});
|
|||
|
|
|||
|
$("#autofill_specialty-confirm-button").on("click", function (e) {
|
|||
|
e.preventDefault();
|
|||
|
|
|||
|
if ($(this).prop("disabled")) {
|
|||
|
showErrorMessage("Выберите направления.");
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
let allSpecialtyIds = [];
|
|||
|
let selectedSpecialtyIds = [];
|
|||
|
let specialitySelectors = $("#posable-speciality .speciality-select");
|
|||
|
for (let I = 0; I < specialitySelectors.length; I++) {
|
|||
|
let specialitySelector = $(specialitySelectors[I]);
|
|||
|
|
|||
|
allSpecialtyIds.push(specialitySelector.val());
|
|||
|
if (specialitySelector.prop("checked")) {
|
|||
|
selectedSpecialtyIds.push(specialitySelector.val());
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
startSubmittingProcess(allSpecialtyIds, selectedSpecialtyIds);
|
|||
|
});
|
|||
|
|
|||
|
$("button.save-spec-btn[type='button']").on("click", function () {
|
|||
|
$("#autofill_specialty-confirm-modal").modal("show");
|
|||
|
|
|||
|
$("#autofill_specialty-confirm-modal").data(
|
|||
|
"save_spec_form_identification",
|
|||
|
$(this).data("save_spec_form_identification")
|
|||
|
);
|
|||
|
});
|
|||
|
|
|||
|
$("#posable-speciality .speciality-select").on("change", function () {
|
|||
|
checkSpecialtyIsSelected();
|
|||
|
});
|
|||
|
}
|
|||
|
/**
|
|||
|
* @returns {void}
|
|||
|
*/
|
|||
|
function checkSpecialtyIsSelected() {
|
|||
|
let confirmButton = $("#autofill_specialty-confirm-button");
|
|||
|
confirmButton.prop("disabled", true);
|
|||
|
|
|||
|
let specialitySelectors = $("#posable-speciality .speciality-select");
|
|||
|
if (specialitySelectors.length < 1) {
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
for (let I = 0; I < specialitySelectors.length; I++) {
|
|||
|
let specialitySelector = $(specialitySelectors[I]);
|
|||
|
|
|||
|
if (specialitySelector.prop("checked")) {
|
|||
|
confirmButton.prop("disabled", false);
|
|||
|
return;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @param {array} allSpecialtyIds
|
|||
|
* @param {array} selectedSpecialtyIds
|
|||
|
*
|
|||
|
* @returns {void}
|
|||
|
*/
|
|||
|
function startSubmittingProcess(allSpecialtyIds, selectedSpecialtyIds) {
|
|||
|
$.ajax({
|
|||
|
type: "POST",
|
|||
|
url: autofill_specialty_url,
|
|||
|
data: {
|
|||
|
allSpecialtyIds: allSpecialtyIds,
|
|||
|
selectedSpecialtyIds: selectedSpecialtyIds,
|
|||
|
},
|
|||
|
beforeSend: function beforeSend() {
|
|||
|
startLoading();
|
|||
|
},
|
|||
|
})
|
|||
|
.done(function (response) {
|
|||
|
stopLoading();
|
|||
|
|
|||
|
if (response.message.length > 0) {
|
|||
|
showErrorMessage(response.message);
|
|||
|
}
|
|||
|
|
|||
|
const identification = $("#autofill_specialty-confirm-modal")?.data("save_spec_form_identification");
|
|||
|
$(`#save-spec-form--${identification}`).trigger("submit");
|
|||
|
})
|
|||
|
.fail(function (response) {
|
|||
|
stopLoading();
|
|||
|
|
|||
|
showErrorMessage(response.responseJSON.error);
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @returns {void}
|
|||
|
*/
|
|||
|
function autofillSpecialtyEraseAlert() {
|
|||
|
$("#autofill_specialty-confirm-modal").find("#place_for_alert").html("");
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @param {string} message
|
|||
|
*
|
|||
|
* @returns {void}
|
|||
|
*/
|
|||
|
function showErrorMessage(message) {
|
|||
|
$("#autofill_specialty-confirm-modal").find("#place_for_alert").html(message);
|
|||
|
|
|||
|
// Установка таймера скрытия алерта, по истечении 15сек.
|
|||
|
setTimeout(autofillSpecialtyEraseAlert, 1000 * 15);
|
|||
|
// Интервал выбран интуитивна, что бы сообщение можно было прочесть и при этом оно не весело бесконечно долго
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @returns {void}
|
|||
|
*/
|
|||
|
function startLoading() {
|
|||
|
$("autofill_specialty-cancel-button").prop("disabled", true);
|
|||
|
$("#autofill_specialty-confirm-button").prop("disabled", true);
|
|||
|
$(".no-loading-elements").hide();
|
|||
|
$(".loading-elements").show();
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @returns {void}
|
|||
|
*/
|
|||
|
function stopLoading() {
|
|||
|
$(".no-loading-elements").show();
|
|||
|
$(".loading-elements").hide();
|
|||
|
}
|