(function () {
+ var instanceId = 'supplier-' + Date.now();
+ console.log('[supplier] IIFE запущен, instanceId=' + instanceId);
+
var cfg = window.supplierConfig || {};
var urls = cfg.urls || {};
+ console.log('[supplier] urls:', urls);
+
+ var modalEl = document.getElementById('supplier-modal');
+ console.log('[supplier] #supplier-modal найден:', !!modalEl);
+
+ if (!modalEl) {
+ console.error('[supplier] КРИТИЧНО: #supplier-modal не найден в DOM — modal не создан');
+ return;
+ }
+
+ // Проверяем, есть ли уже Bootstrap-инстанс на элементе
+ var existingInstance = bootstrap.Modal.getInstance(modalEl);
+ console.log('[supplier] существующий bootstrap.Modal.getInstance:', existingInstance);
+
+ var supplierModal = new bootstrap.Modal(modalEl);
+ console.log('[supplier] новый bootstrap.Modal создан:', supplierModal);
- var supplierModal = new bootstrap.Modal(document.getElementById('supplier-modal'));
var editingId = null;
var loaderHtml = '<div class="text-center p-4"><i class="fa fa-spinner fa-spin fa-2x text-secondary"></i></div>';
+ // Слушаем события самого модального окна
+ modalEl.addEventListener('show.bs.modal', function () {
+ console.log('[supplier] СОБЫТИЕ: show.bs.modal');
+ });
+ modalEl.addEventListener('shown.bs.modal', function () {
+ console.log('[supplier] СОБЫТИЕ: shown.bs.modal');
+ });
+ modalEl.addEventListener('hide.bs.modal', function () {
+ console.log('[supplier] СОБЫТИЕ: hide.bs.modal, стек:', new Error().stack);
+ });
+ modalEl.addEventListener('hidden.bs.modal', function () {
+ console.log('[supplier] СОБЫТИЕ: hidden.bs.modal');
+ });
+
function reloadGrid() {
+ console.log('[supplier] reloadGrid: старт, instanceId=' + instanceId);
$.ajax({
url: urls.index,
type: 'GET',
success: function (html) {
var $grid = $('<div>').append($.parseHTML(html, document, false)).find('#supplier-pjax');
+ console.log('[supplier] reloadGrid: #supplier-pjax найден в ответе:', $grid.length > 0);
if ($grid.length) {
$('#supplier-pjax').replaceWith($grid);
+ console.log('[supplier] reloadGrid: грид заменён');
}
+ },
+ error: function (xhr, status) {
+ console.error('[supplier] reloadGrid: ошибка', status, xhr.status);
}
});
}
// Создание
+ var createBtn = document.getElementById('btn-supplier-create');
+ console.log('[supplier] #btn-supplier-create найден:', !!createBtn);
+
$('#btn-supplier-create').on('click', function () {
+ console.log('[supplier] клик на #btn-supplier-create, instanceId=' + instanceId);
var $btn = $(this);
+ console.log('[supplier] кнопка disabled:', $btn.prop('disabled'));
if ($btn.prop('disabled')) return;
$btn.prop('disabled', true);
editingId = null;
$('#supplier-modal-title').text('Добавить поставщика');
$('#supplier-modal-body').html(loaderHtml);
+ console.log('[supplier] вызываем supplierModal.show()');
supplierModal.show();
+ console.log('[supplier] supplierModal.show() вызван, загружаем форму:', urls.createForm);
$.get(urls.createForm, function (html) {
+ console.log('[supplier] createForm ответ получен, длина HTML:', html.length);
$('#supplier-modal-body').html(html);
+ }).fail(function (xhr, status) {
+ console.error('[supplier] createForm ошибка:', status, xhr.status, xhr.responseText);
}).always(function () {
$btn.prop('disabled', false);
});
$(document).on('click', '.btn-supplier-edit', function (e) {
e.preventDefault();
var $btn = $(this);
+ console.log('[supplier] клик .btn-supplier-edit id=' + $btn.data('id') + ', instanceId=' + instanceId);
if ($btn.prop('disabled')) return;
$btn.prop('disabled', true);
editingId = $btn.data('id');
$('#supplier-modal-body').html(loaderHtml);
supplierModal.show();
$.get(urls.updateForm, {id: editingId}, function (html) {
+ console.log('[supplier] updateForm ответ получен');
$('#supplier-modal-body').html(html);
+ }).fail(function (xhr, status) {
+ console.error('[supplier] updateForm ошибка:', status, xhr.status);
}).always(function () {
$btn.prop('disabled', false);
});
// Сохранение
$(document).on('click', '#btn-supplier-save', function () {
var $saveBtn = $(this);
+ console.log('[supplier] клик #btn-supplier-save, disabled=' + $saveBtn.prop('disabled') + ', instanceId=' + instanceId);
if ($saveBtn.prop('disabled')) return;
$saveBtn.prop('disabled', true);
var $form = $('#supplier-form');
var url = editingId ? urls.update + '?id=' + editingId : urls.create;
+ console.log('[supplier] сохранение: url=' + url + ', editingId=' + editingId);
$form.find('.is-invalid').removeClass('is-invalid');
$form.find('.invalid-feedback').remove();
data: $form.serialize(),
dataType: 'json',
success: function (resp) {
+ console.log('[supplier] сохранение ответ:', resp);
if (resp.success) {
supplierModal.hide();
reloadGrid();
});
}
},
- error: function () {
+ error: function (xhr, status) {
+ console.error('[supplier] сохранение ошибка:', status, xhr.status, xhr.responseText);
$saveBtn.prop('disabled', false);
alert('Ошибка сервера');
}
return;
}
+ console.log('[supplier] деактивация id=' + id);
$.ajax({
url: urls.delete + '?id=' + id,
type: 'POST',
data: {_csrf: yii.getCsrfToken()},
dataType: 'json',
success: function (resp) {
+ console.log('[supplier] деактивация ответ:', resp);
if (resp.success) {
reloadGrid();
} else {
alert(resp.message || 'Ошибка деактивации');
}
},
- error: function () {
+ error: function (xhr, status) {
+ console.error('[supplier] деактивация ошибка:', status, xhr.status);
alert('Ошибка сервера');
}
});