// pizza-carousel.js - исправленная версия
(function() {
console.log('🔵 Глобальный скрипт Park&Pizza запущен');
const galleries = {
bol: [
"https://delaitut.ru/pizza/gallery/bol/1.jpg",
"https://delaitut.ru/pizza/gallery/bol/2.jpg",
"https://delaitut.ru/pizza/gallery/bol/3.jpg"
],
nem: [
"https://delaitut.ru/pizza/gallery/nem/1.jpg",
"https://delaitut.ru/pizza/gallery/nem/2.jpg",
"https://delaitut.ru/pizza/gallery/nem/3.jpg"
],
onega: [
"https://delaitut.ru/pizza/gallery/onega/1.jpg",
"https://delaitut.ru/pizza/gallery/onega/2.jpg",
"https://delaitut.ru/pizza/gallery/onega/3.jpg"
]
};
function initSingleCarousel(container, images) {
if (!images || !images.length) return false;
const track = container.querySelector('.slider-track');
const prevBtn = container.querySelector('.btn-prev');
const nextBtn = container.querySelector('.btn-next');
const dotsContainer = container.parentElement.querySelector('.slider-dots');
if (!track || !dotsContainer) return false;
track.innerHTML = '';
images.forEach(src => {
const slide = document.createElement('div');
slide.className = 'slide';
const img = document.createElement('img');
img.src = src;
img.alt = 'Фото ресторана';
img.loading = 'lazy';
slide.appendChild(img);
track.appendChild(slide);
});
const total = images.length;
let currentIndex = 0;
dotsContainer.innerHTML = '';
for (let i = 0; i < total; i++) {
const dot = document.createElement('div');
dot.className = 'dot';
if (i === 0) dot.classList.add('active');
dot.addEventListener('click', () => goToSlide(i));
dotsContainer.appendChild(dot);
}
function updateDots() {
dotsContainer.querySelectorAll('.dot').forEach((dot, i) => {
dot.classList.toggle('active', i === currentIndex);
});
}
function goToSlide(index) {
if (index < 0) index = total - 1;
if (index >= total) index = 0;
currentIndex = index;
track.style.transform = `translateX(-${currentIndex * 100}%)`;
updateDots();
}
prevBtn.onclick = () => goToSlide(currentIndex - 1);
nextBtn.onclick = () => goToSlide(currentIndex + 1);
goToSlide(0);
return true;
}
// Главная функция переинициализации ВСЕГО
window.fullInit = function() {
console.log('🟡 fullInit: переинициализация табов и каруселей');
// 1. Инициализация табов
const tabBtns = document.querySelectorAll('.tab-btn');
const tabContents = document.querySelectorAll('.tab-content');
if (tabBtns.length > 0) {
// Удаляем старые обработчики (через клонирование)
tabBtns.forEach(btn => {
const newBtn = btn.cloneNode(true);
btn.parentNode.replaceChild(newBtn, btn);
});
// Навешиваем новые обработчики
const freshBtns = document.querySelectorAll('.tab-btn');
freshBtns.forEach(btn => {
btn.addEventListener('click', function(e) {
e.preventDefault();
const tabId = this.getAttribute('data-tab');
freshBtns.forEach(b => b.classList.remove('active'));
this.classList.add('active');
tabContents.forEach(content => {
content.classList.remove('active');
if (content.id === tabId) {
content.classList.add('active');
}
});
});
});
}
// 2. Инициализация каруселей (сначала сбрасываем флаги)
document.querySelectorAll('.slider-container').forEach(container => {
const key = container.getAttribute('data-gallery');
if (galleries[key]) {
initSingleCarousel(container, galleries[key]);
console.log(`✅ Карусель ${key} пересоздана`);
}
});
};
// Запускаем при загрузке
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', window.fullInit);
} else {
window.fullInit();
}
// Принудительная проверка каждые 2 секунды (костыль, но работает)
setInterval(window.fullInit, 2000);
// Следим за изменениями в DOM
const observer = new MutationObserver(function() {
window.fullInit();
});
observer.observe(document.body, {
childList: true,
subtree: true
});
console.log('🔵 Скрипт готов: будет пересоздавать табы и карусели каждые 2 секунды');
})();