Исправление отображения фото в POS и улучшение обработки изображений

- Исправлен POS для использования миниатюр вместо оригиналов для быстрой загрузки
- Убран fallback на оригиналы - показываем миниатюру или ничего (лучше видно ошибки)
- Исправлен ImageService - возвращает пустую строку если миниатюра обработанного файла не найдена
- Исправлена ошибка JavaScript при массовом удалении фото (insertAdjacentElement на null)
- Добавлен контейнер photos-messages-container для надежного отображения сообщений
- Улучшено логирование ImageService для отладки путей к файлам
- Добавлена проверка exists() с детальным логированием в TenantAwareFileSystemStorage
This commit is contained in:
2025-12-21 19:52:55 +03:00
parent 812ecb53e6
commit bb821f9ef4
4 changed files with 76 additions and 12 deletions

View File

@@ -164,6 +164,9 @@
</h5>
</div>
<div class="card-body">
<!-- Контейнер для сообщений об операциях с фото -->
<div id="photos-messages-container"></div>
<!-- Существующие фотографии (только при редактировании) -->
{% if object and product_photos %}
<div class="mb-4">
@@ -342,7 +345,10 @@
// Скрываем блок если фотографий больше нет
if (newCount === 0) {
document.querySelector('[id="photos-count"]').closest('.mb-3').parentElement.style.display = 'none';
const photosSection = document.querySelector('#photos-grid')?.closest('.mb-4');
if (photosSection) {
photosSection.style.display = 'none';
}
}
// Показываем сообщение об успехе
@@ -350,7 +356,14 @@
alert.className = 'alert alert-success alert-dismissible fade show';
alert.innerHTML = `${data.deleted} фото успешно удалено!
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>`;
document.querySelector('.mb-4.p-3.bg-light.rounded').insertAdjacentElement('beforebegin', alert);
// Вставляем сообщение в специальный контейнер, который всегда существует
const messagesContainer = document.getElementById('photos-messages-container');
if (messagesContainer) {
// Очищаем предыдущие сообщения и добавляем новое
messagesContainer.innerHTML = '';
messagesContainer.appendChild(alert);
}
// Скрываем кнопку
deleteBtn.style.display = 'none';