Добавлен механизм отложенного заполнения полей с ожиданием рендеринга формсета
This commit is contained in:
@@ -2259,13 +2259,33 @@ if (!document.getElementById('notification-styles')) {
|
||||
<!-- Заполнение скрытых полей для товаров из черновика POS -->
|
||||
{% if draft_items_json %}
|
||||
<script>
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
const draftItemsJson = '{{ draft_items_json|safe }}';
|
||||
const draftItems = JSON.parse(draftItemsJson);
|
||||
|
||||
if (draftItems.length > 0) {
|
||||
if (draftItems.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
console.log('[Draft Items] 📦 Найдены товары из черновика:', draftItems.length);
|
||||
console.log('[Draft Items] 📋 Данные товаров:', draftItems);
|
||||
|
||||
// Функция для заполнения полей
|
||||
function fillDraftFields() {
|
||||
console.log('[Draft Items] 🔄 Попытка заполнить поля...');
|
||||
|
||||
// Проверяем, есть ли формы в DOM
|
||||
const firstProductField = document.querySelector('[name="items-0-product"]');
|
||||
if (!firstProductField) {
|
||||
console.log('[Draft Items] ⏳ Формы ещё не отрендерены, ожидание...');
|
||||
setTimeout(fillDraftFields, 50); // Повтор через 50мс
|
||||
return;
|
||||
}
|
||||
|
||||
console.log('[Draft Items] ✅ Формы найдены в DOM, заполнение...');
|
||||
|
||||
// Заполняем скрытые поля для каждой формы
|
||||
draftItems.forEach((item, index) => {
|
||||
console.log(`[Draft Items] ⚙️ Обработка товара ${index}:`, item);
|
||||
@@ -2281,6 +2301,10 @@ if (draftItems.length > 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(`[Draft Items] 🔍 Поля формы ${index}:`);
|
||||
console.log(` - productField:`, productField);
|
||||
console.log(` - kitField:`, kitField);
|
||||
|
||||
// Устанавливаем значения
|
||||
if (item.type === 'product') {
|
||||
productField.value = item.id;
|
||||
@@ -2305,7 +2329,24 @@ if (draftItems.length > 0) {
|
||||
});
|
||||
|
||||
console.log('[Draft Items] ✅ Все скрытые поля заполнены');
|
||||
|
||||
// Триггерим переинициализацию Select2 чтобы он загрузил данные
|
||||
console.log('[Draft Items] 🔄 Триггер переинициализации Select2...');
|
||||
|
||||
// Даём время на то, чтобы initExistingOrderItems увидел заполненные поля
|
||||
setTimeout(() => {
|
||||
console.log('[Draft Items] ✅ Готово к инициализации Select2');
|
||||
}, 100);
|
||||
}
|
||||
|
||||
// Запускаем заполнение сразу при загрузке DOM
|
||||
if (document.readyState === 'loading') {
|
||||
document.addEventListener('DOMContentLoaded', fillDraftFields);
|
||||
} else {
|
||||
// DOM уже загружен
|
||||
fillDraftFields();
|
||||
}
|
||||
})();
|
||||
</script>
|
||||
{% endif %}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user