portal.mkgtu.ru/clientSide/packs/admin_assets/fias_update.js

88 lines
3.6 KiB
JavaScript
Executable File
Raw 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';
$(document).ready(function () {
function getSelectedRegions() {
var sr = $("#fias_grid").yiiGridView("getSelectedRows");
if (sr.length === 0) {
alert("Операция не может быть выполнена, выберите хотя бы один регион");
}
return sr;
}
function increaseRegionsProgress(progress_bar, full_length) {
var current_length = progress_bar.attr("aria-valuenow");
var prev_length = Math.round(full_length * current_length / 100);
var new_length = prev_length + 1;
var new_progress = Math.round(new_length * 100 / full_length);
progress_bar
.css("width", new_progress + "%")
.text(new_progress + "%")
.attr("aria-valuenow", new_progress);
}
function showAlert(message, className) {
$('.fias-update-wrapper')
.show()
.find('.alert-wrapper')
.show()
.prepend('<div class="alert ' + className + '">' + message + '</div>');
}
$("#fias_update_btn").click(function () {
var sr = getSelectedRegions();
$('.fias-update-wrapper')
.show()
.find('.progress-bar')
.width(0)
.text("0%")
.attr("aria-valuenow", 0);
$('.fias-update-wrapper')
.find('.alert-wrapper')
.html('')
.hide();
if (sr.length > 0) {
var promises = [];
// ajax post request for each selected region
for (var i = 0; i < sr.length; i++) {
promises.push(
(function (region_number) {
return function () {
return $.post(
"/admin/fias/load-region",
{
region_number: region_number
}
)
.done(function (data) {
if (data.status) {
increaseRegionsProgress($('.fias-update-wrapper .progress-bar'), sr.length);
} else {
let eventLocation = getCurrentLine();
sendClientErrorToServer('error', data?.message, eventLocation);
showAlert('Ошибка обновления региона ' + data.region + ' по причине: ' + data.message, 'alert-danger');
}
})
.fail(function (e) {
let eventLocation = getCurrentLine();
sendClientErrorToServer('error', e?.responseText, eventLocation);
showAlert('Не удалось обновить данные ФИАС', 'alert-danger');
})
}
})(sr[i])
);
}
var seed = Promise.resolve(null);
promises
.reduce(function (a, b) {
return a.then(b);
}, seed)
.then(function () {
showAlert('Обновление данных ФИАС завершено', 'alert-info');
});
}
});
});