portal.mkgtu.ru/clientSide/packs/js/moderate.js

639 lines
19 KiB
JavaScript
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 () {
$("<input />")
.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 = $("<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");
};