import getCurrentLine from 'get-current-line'; import sendClientErrorToServer from '../../packs/js/client-error-receiver.js'; function openOverlaySpinner() { document.getElementById("submit-loader").style.display = "block"; } function closeOverlaySpinner() { document.getElementById("submit-loader").style.display = "none"; } // script 1 function removeYiiClientValidation(array) { array.forEach(function (field) { $("#questionary-form").yiiActiveForm("remove", field); }); } $(".tooltip_with_image").on("inserted.bs.tooltip", function () { const tip = $(this).data("bs.tooltip").tip; if (tip) { $(tip).find(".tooltip-inner").addClass("tooltip_with_image p-2"); } }); $(document).ready(function () { $('[data-toggle="tooltip"]').tooltip(); $(".with-tooltip").tooltip(); let ch = $("#addressdata-homeless").prop("checked"); if (ch === true) { $(".homeless-hide").hide(); } else { $(".homeless-hide").show(); } $("#addressdata-homeless").on("change", function () { let ch = $(this).prop("checked"); if (ch === true) { $(".homeless-hide").hide(); } else { $(".homeless-hide").show(); } }); $("#addressdata-not_found").on("change", function () { let ch = $(this).prop("checked"); let code = $("#addressdata-country_id").children("option").filter(":selected").data("code"); if (ch === true) { if (code == russiaCode) { $(".notfound-hide").hide(); $(".notfound-show").show(); $(".index-block").removeClass("required"); } } else { if (code == russiaCode) { $(".notfound-show").hide(); $(".notfound-hide").show(); $(".index-block").addClass("required"); } } }); let code = $("#addressdata-country_id").children("option").filter(":selected").data("code"); let notfound = $("#addressdata-not_found").prop("checked"); if (code == russiaCode) { $(".foreigner-show").hide(); $(".foreigner-hide").show(); } else { $(".foreigner-hide").hide(); $(".foreigner-show").show(); } if (notfound === true && code == russiaCode) { $(".notfound-hide").hide(); $(".notfound-show").show(); } else if (notfound === false && code == russiaCode) { $(".notfound-show").hide(); $(".notfound-hide").show(); } let codes = []; $(".added-specs .card").each(function (index) { let code = $(this).data("code"); if (codes.indexOf(code) === -1) { if (code) { codes.push(code); } } }); $(".speciality-container .card .speciality-select:checked").each(function (index) { let code = $(this).closest(".card").data("code"); if (codes.indexOf(code) === -1) { if (code) { codes.push(code); } } }); $("form").areYouSure({ message: unsavedLeave, }); $("#apply-button").on("click", function () { $("#questionary-form").attr("action", approveActionUrl); openOverlaySpinner(); $("#questionary-form").submit(); return false; }); $("#reject-button").on("click", function () { $("#questionary-form").attr("action", $(this).attr("href")); $("#questionary-form").submit(); return false; }); $("#questionary-form").on("afterValidate", function (event, messages, errorAttributes) { // если есть ошибки валидации то скрываем окна подтверждения и лоадер если открыт if (errorAttributes.length) { $("#confirm-decline-modal").modal("hide"); $("#confirm-approve-modal").modal("hide"); closeOverlaySpinner(); } }); $(".moderate-actor").on("click", function () { $(".moderate-actor").data("click", "0"); $(this).data("click", "1"); }); $(".icon-submit").on("click", function () { $(this).children("form").submit(); return false; }); $(".reorder-spec").on("click", function () { $(this).children("form").submit(); return false; }); $(".speciality-select").on("change", function () { let codes = []; $(".added-specs .card").each(function (index) { const code = $(this).data("code"); if (codes.indexOf(code) === -1) { if (code) { codes.push(code); } } }); $(".speciality-container .card .speciality-select:checked").each(function (index) { const code = $(this).closest(".card").data("code"); if (codes.indexOf(code) === -1) { if (code) { codes.push(code); } } }); let specid = $(this).val(); if (!$(this).prop("checked")) { $(".speciality-container .card[data-specid=" + specid + "]").removeClass( "checked-panel" ); } else { $(".speciality-container .card[data-specid=" + specid + "]").addClass("checked-panel"); } }); $(".toggle-panel").on("click", function () { const specid = $(this).data("specid"); if ($(this).hasClass("fa-caret-up")) { $(this).removeClass("fa-caret-up"); $(this).addClass("fa-caret-down"); $("#body-" + specid).hide(); } else { $(this).removeClass("fa-caret-down"); $(this).addClass("fa-caret-up"); $("#body-" + specid).show(); } }); $(".save-ege").on("click", function () { const id = $(this).data("id"); //копируем все значения из блока вне формы $("#block-for-other-forms" + id) .find(":input") .filter(":enabled") .each(function () { $("") .attr("type", "hidden") .attr("name", $(this).attr("name")) .attr("value", $(this).val()) .appendTo("#form-update-ege-" + id); }); $("#form-update-ege-" + id).submit(); return false; }); $("#add-ege").on("click", function () { $("#form-add-ege").submit(); return false; }); $(".moderate-actor").on("click", function () { $(".moderate-actor").data("click", "0"); $(this).data("click", "1"); }); }); function findSpecialities(modelIdentification) { let title = $(`#SearchSpeciality--${modelIdentification}`)?.val() // Направление подготовки (0, 0) ?.toLowerCase(); let speccode = $(`#SearchCode--${modelIdentification}`)?.val(); // Шифр специальности (0, 1) let dep = $(`#search-dep--${modelIdentification}`)?.val(); // Подразделение let eduf = $(`#search-eduf--${modelIdentification}`)?.val(); // Форма обучения (1, 1) let fin = $(`#search-fin--${modelIdentification}`)?.val(); // Полное возмещение затрат let detail_group = $(`#search-detail_group--${modelIdentification}`)?.val(); // Особенности приёма let special_law = $(`#search-special_law--${modelIdentification}`)?.val(); // Наличие особого права let selector = ".speciality-container .card"; if (dep) { selector = `${selector}[data-dep="${dep}"]`; } if (fin) { selector = `${selector}[data-fin="${fin}"]`; } if (eduf) { selector = `${selector}[data-eduf="${eduf}"]`; } if (detail_group) { selector = `${selector}[data-detail_group="${detail_group}"]`; } if (special_law) { selector = `${selector}[data-special_right="${special_law}"]`; } if (title) { selector = `${selector}[data-title*="${title}"]`; } if (speccode) { let escaped_code = speccode.split(".").join(""); selector = `${selector}[data-code*=${escaped_code}]`; } $(`.speciality-container .card#add_application_modal_panel--${modelIdentification}`).hide(); $(`${selector}#add_application_modal_panel--${modelIdentification}`)?.show(); return false; } [ "[id^='SearchCode']", "[id^='SearchSpeciality']", ].forEach(selector => { $(selector).on("keyup", function () { findSpecialities($(this).data("model_identification")); }); }); [ "[id^='search-dep']", "[id^='search-fin']", "[id^='search-eduf']", "[id^='search-special_law']", "[id^='search-detail_group']", ].forEach(selector => { $(selector).on("change", function () { findSpecialities($(this).data("model_identification")); }); }); $(window).on("load", function () { $("#spinner_on_loading").hide(); $("#hide_on_loading").show(); }); // script 3 $(function () { let unblockedCheckInterval; function isBlocked() { $.get( "is-blocked", { id: applicationId, }, function (data) { if (!data.isBlocked) { $("#create_modal_is_unblocked") .modal({ show: true }) .on("hidden.bs.modal", function (e) { $(window).off("beforeunload"); location.href = "/sandbox/index"; }); clearInterval(unblockedCheckInterval); } }, "json" ); } unblockedCheckInterval = setInterval(isBlocked, 5000); // BEFOREUNLOAD $(window).off("beforeunload"); if (window.history && window.history.pushState) { window.history.pushState("forward", null, window.location.href + "#forward"); $(window).on("popstate", function () { clearInterval(unblockedCheckInterval); window.location.href = unblockUrl; }); } }); // PASSPORT DATA $("body").on("click", ".passport-remove", function () { const passportId = $(this).data("passport_id"); const confirm_deletion = confirm(passportDeletionConfirmation); if (confirm_deletion) { $.ajax({ url: "/sandbox/delete-passport", type: "POST", data: { passportId: passportId, appId: applicationId, }, dataType: "html", }) .done((res) => { $("#passport-grid").html(res); }) .fail((err) => { let eventLocation = getCurrentLine(); sendClientErrorToServer('error', err?.responseText, eventLocation); }); } return false; }); $("body").on("click", ".btn-save-passport", function (e) { e.preventDefault(); const passportId = $(this).data("id"); const _form = $("#form-passport" + (passportId === undefined ? "" : passportId)); _form.yiiActiveForm("validate", true); return false; }); $("body").on("click", "#btn-add-passport", function (e) { e.preventDefault(); const modal = $("#create_modal_passport"); // todo localize modal.find("h4").text("Создать"); }); $("body").on("click", ".btn-edit-passport", function (e) { const model_id = $(this).data("id"); const modal = $("#edit_modal_passport_" + model_id); modal.find("h4").text(editModalHeaderlabel); modal.modal("show"); }); $("#create_modal_passport").on("hidden.bs.modal", function (e) { $(this).find("select,input").val(""); $(this).find("form").yiiActiveForm("data").submitting = false; }); $(document).on("beforeSubmit", '[id^="form-passport"]', function (e) { const input = $("").attr("type", "hidden").attr("name", "appId").val(applicationId); $(this).append(input); return true; }); $(".ia-save-form, .save-benefit-form, .save-olympiad-form, .save-target-form").on( "submit", function (e) { e.preventDefault(); let _form = $(this); $.ajax({ url: _form.attr("action"), type: "POST", data: new FormData(this), processData: false, contentType: false, success: function success(res) { if (!res.error) { _form.find(".error-presenter").hide(); let row = $("#" + _form.attr("data-presentation-table-id")).find( '[data-model-id="' + res.data.id + '"]' ); for (let attr_name in res.data) { if (res.data.hasOwnProperty(attr_name)) { row.find('[data-attr-name="' + attr_name + '"]').html( res.data[attr_name] ); } } $("#" + _form.attr("data-modal-to-close")).modal("hide"); } else { _form.find(".error-presenter").html(res.error).show(); } }, error: function error(res) { _form.find(".error-presenter").html(ajaxErrorText).show(); }, }); return false; } ); // отправка данных которым не нужна доп. перерисовка $("#ege-form").on("submit", function (e) { e.preventDefault(); processSendBlockForm(this); }); $("#others-data-form").on("submit", function (e) { e.preventDefault(); processSendBlockForm(this); }); $("#address-data-form").on("submit", function (e) { e.preventDefault(); processSendBlockForm(this); }); $("#all-preferences-form").on("submit", function (e) { e.preventDefault(); processSendBlockForm(this); }); $("#actual-address-data-form").on("submit", function (e) { e.preventDefault(); processSendBlockForm(this); }); $("#questionary-main-data-form").on("submit", function (e) { e.preventDefault(); processSendBlockForm(this); }); function processSendBlockForm(form) { let $form = $(form); $.ajax({ url: $form.attr("action"), type: "POST", data: new FormData(form), processData: false, contentType: false, }) .done(function success(res) { if (res.status) { $form.find(".error-while-saving").hide(); $form.find(".saved-success-alert").html(res.message).show(); } else { $form.find(".saved-success-alert").hide(); $form.find(".error-while-saving").html(res.message).show(); } }) .fail(function error(res) { $form.find(".saved-success-alert").hide(); $form.find(".error-while-saving").html(ajaxErrorText).show(); }) .always(function () { if (typeof checkAllApplication === "function") { checkAllApplication(); } }); return false; } // PARENT DATA $("body").on("click", ".parent-data-remove", function (e) { e.preventDefault(); let self = $(this); const parentDataId = $(this).data("parent_data_id"); self.button("loading"); if (confirm("Удалить запись?")) { ajaxSender( "/sandbox/delete-parent-data", "POST", { parentDataId: parentDataId, appId: applicationId, }, self, function (res) { $("#div-parent-data").html(res); }, null, globalTextForAjaxTooltip, "top", { dataType: "html", } ); } else { self.button("reset"); } return false; }); $("body").on("click", ".btn-save-parent-data", function (e) { e.preventDefault(); let parentDataId = $(this).attr("data-id"); let _formParent = $("#form-parent-" + parentDataId); _formParent.yiiActiveForm("validate", true); return false; }); let parentFormRendered = false; $("body").on("click", "#btn-add-parent", function (e) { let parentDataId = 0; let modal = $("#edit_modal_parent"); modal.find("h4").text(editModalHeaderlabel); if (!parentFormRendered) { ajaxSender( "/sandbox/parent-form", "POST", { parentDataId: parentDataId > 0 ? parentDataId : null, appId: applicationId, }, $(this), function (res) { $("#edit_modal_parent_form").html(res); $(modal).modal("show"); parentFormRendered = true; parentAddressWidgetDataForInitialization.forEach(function (item) { window.initAddress(item.prefix, item.formName); }); }, null, globalTextForAjaxTooltip, "top", { dataType: "html" } ); } else { // не подгружать форму с сервера второй раз $(modal).modal("show"); } }); $("body").on("click", ".btn-edit-parent", function (e) { parentFormRendered = false; let parentDataId = $(this).attr("data-id"); let modal = $("#edit_modal_parent"); modal.find("h4").text(editModalHeaderlabel); ajaxSender( "/sandbox/parent-form", "POST", { parentDataId: parentDataId > 0 ? parentDataId : null, appId: applicationId, }, $(this), function (res) { $("#edit_modal_parent_form").html(res); $(modal).modal("show"); $("a.parent-data-remove").css("pointer-events", "auto"); parentAddressWidgetDataForInitialization.forEach(function (item) { window.initAddress(item.prefix, item.formName); }); }, function (res) { $("a.parent-data-remove").css("pointer-events", "auto"); }, globalTextForAjaxTooltip, "top", { dataType: "html" } ); }); $("#create_modal_parent").on("hidden.bs.modal", function (e) { $(this).find("select,input").val(""); $(this).find("form").yiiActiveForm("data").submitting = false; }); $("body").on("submit", ".form-parent", function (e) { e.preventDefault(); $(".btn-save-parent-data").button("loading"); let _formParent = $(this); ajaxSender( "/sandbox/set-parent-data", "POST", _formParent.serialize() + "&appId=" + applicationId, $(this).find(".btn-save-parent-data"), function (res) { $("#div-parent-data").html(res); $("#create_modal_parent").modal("hide"); $("#edit_modal_parent").modal("hide"); parentFormRendered = false; }, function (res) { $(".div-parent-errors").html(res?.responseText); }, globalTextForAjaxTooltip, "top", { dataType: "html", } ); return false; }); window.onload = function () { $(".panel-spinner-loader").hide(); $(".hidden-behind-loader").removeClass("hidden-behind-loader"); };