/*
Конфигурация в зависимости от количества видимых фото
*/
function owlOptionsCountPhoto(el) {
let countPhoto = el.$element.attr('data-photo-count');
if(countPhoto == 3) {
el.options.responsive = {
991: {
items: 3
},
767: {
items: 3
},
575: {
items: 3
},
0: {
items: 1,
dots: true,
nav: false
},
}
}
if(countPhoto == 2) {
el.options.margin = 24;
el.options.responsive = {
991: {
items: 2
},
767: {
items: 2
},
575: {
items: 1
},
0: {
items: 1,
dots: true,
nav: false
},
}
}
el.trigger('refresh.owl.carousel');
}
/*
Отступ стрелок сверху - посередине
*/
function owlNavTop(el, imgEl = '.owl-stage-outer') {
let car = el.$element;
let stageOuter = car.find(imgEl);
let nav = car.find('.owl-nav');
// отступ навигации сверху посередине слайдера фото
let navTop = stageOuter.height() / 2 - nav.find('.owl-prev-inner').height() / 2;
if(navTop && navTop > 0) {
nav.css('top', navTop);
}
}
document.addEventListener("DOMContentLoaded", (event) => {
let navText = [
'
',
'
'
];
/*
Примеры гравировок
*/
let contentGal = {
owl: $('.content-gal__items'),
events(event) {
owlOptionsCountPhoto(this);
owlNavTop(this);
},
};
contentGal.conf = {
loop: false,
margin: 16,
slideBy: 1,
nav: true,
navText: [
'
',
'
'
],
dots: false,
responsive: {
991: {
items: 4,
},
767: {
items: 3
},
575: {
items: 2
},
0: {
items: 1,
dots: true,
nav: false
},
},
onInitialize: contentGal.events,
onInitialized: contentGal.events,
onResized: contentGal.events,
onRefreshed: contentGal.events,
onChange: contentGal.events,
};
contentGal.owl.owlCarousel(contentGal.conf);
/*
Зачем нужен дизайн-проект
*/
let whyNeed = {
owl: $('.why-need__items'),
onInitialize() {
owlOptionsCountPhoto(this);
},
onInitialized(el) {
owlNavTop(this);
},
onResized() {
owlNavTop(this);
},
onRefreshed() {
owlOptionsCountPhoto(this);
owlNavTop(this);
},
onChange() {
owlNavTop(this);
}
};
whyNeed.conf = {
loop: true,
slideBy: 1,
items: 1,
nav: true,
dots: false,
navText: [
'
',
'
'
],
responsive: {
767: {},
575: {
dots: false,
nav: true
},
0: {
dots: true,
nav: false
},
},
onInitialize: whyNeed.onInitialize,
onInitialized: whyNeed.onInitialized,
onResized: whyNeed.onResized,
onRefreshed: whyNeed.onRefreshed,
onChange: whyNeed.onChange,
};
whyNeed.owl.owlCarousel(whyNeed.conf);
/*
Блок услуг
*/
let servicesBlock = {
owl: $('.services-section_other .services__items'),
onInitialize() {
owlOptionsCountPhoto(this);
},
onInitialized(el) {
owlNavTop(this);
},
onResized() {
owlNavTop(this);
},
onRefreshed() {
owlOptionsCountPhoto(this);
owlNavTop(this);
},
onChange() {
owlNavTop(this);
}
};
servicesBlock.conf = {
loop: true,
slideBy: 1,
items: 1,
nav: false,
margin: 10,
dots: true,
onInitialize: servicesBlock.onInitialize,
onInitialized: servicesBlock.onInitialized,
onResized: servicesBlock.onResized,
onRefreshed: servicesBlock.onRefreshed,
onChange: servicesBlock.onChange,
};
$(window).on('load resize', function () {
if ($(window).width() > 767) {
servicesBlock.owl.removeClass('owl-carousel');
servicesBlock.owl.removeClass('owl-carousel_nav');
servicesBlock.owl.removeClass('owl-carousel_nav-red');
servicesBlock.owl.trigger('destroy.owl.carousel');
} else {
servicesBlock.owl.addClass('owl-carousel');
servicesBlock.owl.addClass('owl-carousel_nav');
servicesBlock.owl.addClass('owl-carousel_nav-red');
servicesBlock.owl.owlCarousel(servicesBlock.conf);
}
});
/*
Отзывы Яндекс
*/
// скрытие раскрытого текста при перелистывании слайдера
function displayCountPages(el) {
let reviews = el.$element.closest('.reviews');
let pages = reviews.find('.reviews__pages')
if (pages.length > 0) {
pages.css('visibility', 'visible')
}
}
function hideExpandText(el) {
el.$element.find('.owl-item').each(function (index, item) {
$(item).find('.review__dots').show();
$(item).find('.review__hide').hide();
$(item).find('.review__else').removeClass('review__else_hide');
});
//el.refresh()
}
// подсчёт количества страниц перелистывания
function reviewsCountPages(el) {
let reviews = el.$element.closest('.reviews');
let dots = el.$element.find('.owl-dot');
let dotsLength = dots.length;
dots.each(function (index, item) {
if ($(item).hasClass('active')) {
reviews.find('.reviews__page-current').html(index + 1);
reviews.find('.reviews__page-count').html(dotsLength);
}
});
}
let reviews = {
owl: $('.reviews__owl-carousel'),
events(event) {
owlNavTop(this, this.owl);
if (event.type == 'changed') {
hideExpandText(this);
}
if (event.type == 'changed' || event.type == 'initialized' || event.type == 'resized') {
reviewsCountPages(this);
displayCountPages(this)
}
}
};
reviews.conf = {
loop: false,
slideBy: 2,
items: 2,
nav: true,
margin: 24,
dots: true,
navText: [
'
',
'
'
],
responsive: {
991: {
items: 2,
slideBy: 2,
},
0: {
items: 1,
slideBy: 1,
nav: false,
},
// 0: {
// items: 1,
// dots: true,
// nav: false
// },
},
onInitialize: reviews.events,
onInitialized: reviews.events,
onResize: reviews.events,
onResized: reviews.events,
onRefreshed: reviews.events,
onChange: reviews.events,
onChanged: reviews.events,
};
reviews.owl.owlCarousel(reviews.conf);
$(window).on('load resize', function () {
reviews.owl.owlCarousel(reviews.conf);
});
/*
Галерея в контенте
*/
let contentGallery = {
owl: $('.content-gallery__items'),
events(event) {
owlOptionsCountPhoto(this);
owlNavTop(this);
},
};
contentGallery.conf = {
loop: true,
margin: 16,
slideBy: 1,
nav: true,
navText: [
'
',
'
'
],
dots: false,
responsive: {
991: {
items: 4,
},
767: {
items: 3
},
575: {
items: 2
},
0: {
items: 1,
dots: true,
nav: false
},
},
onInitialize: contentGallery.events,
onInitialized: contentGallery.events,
onResized: contentGallery.events,
onRefreshed: contentGallery.events,
onChange: contentGallery.events,
};
contentGallery.owl.owlCarousel(contentGallery.conf);
// $(window).on('load resize', function() {
// if ($(window).width() > 767) {
// contentGallery.owl.removeClass('owl-carousel');
// contentGallery.owl.removeClass('owl-carousel_nav');
// contentGallery.owl.removeClass('owl-carousel_nav-red');
//
// contentGallery.owl.trigger('destroy.owl.carousel');
// } else {
// contentGallery.owl.addClass('owl-carousel');
// contentGallery.owl.addClass('owl-carousel_nav');
// contentGallery.owl.addClass('owl-carousel_nav-red');
//
// contentGallery.owl.owlCarousel(contentGallery.conf);
// }
// });
/*
Галерея на странице товара
*/
let productGallery = {
owl: $('.product-gallery__items'),
events(event) {
owlNavTop(this, this.owl);
}
};
productGallery.conf = {
loop: false,
slideBy: 1,
items: 3,
nav: true,
margin: 16,
dots: false,
navText: navText,
responsive: {
1199: {
margin: 24,
},
767: {
items: 3,
slideBy: 1,
dots: false,
nav: true
},
0: {
items: 1,
slideBy: 1,
dots: true,
nav: false,
},
},
onInitialize: productGallery.events,
onInitialized: productGallery.events,
onResize: productGallery.events,
onResized: productGallery.events,
onRefreshed: productGallery.events,
onChange: productGallery.events,
onChanged: productGallery.events,
};
productGallery.owl.owlCarousel(productGallery.conf);
/*
Блок решаем вопросы
*/
let resolveSlider = {
owl: $('.resolve-slider__items'),
events(event) {
let slider = this.$element;
//owlNavTop(this, this.owl);
if (event.type == 'initialized' || event.type == 'resized' || event.type == 'resize') {
resolveSlider.navTop(this, slider);
}
if (event.type == 'changed' || event.type == 'initialized' || event.type == 'resized') {
}
}
};
resolveSlider.navTop = function (el, slider) {
let nav = slider.find('.owl-nav');
let slides = el._items
let maxSlideHeight = 0;
for (key in slides) {
let slide = slides[key]
let height = slide.find('.resolve-slider__item-wrap').height()
if (height > 0) {
maxSlideHeight = height
}
//slide.find('.resolve-slider__item-wrap').css('height', '')
//slide.find('.resolve-slider__item-wrap').removeAttr('style')
//console.log('height', slide.find('.resolve-slider__item-wrap').attr('style'))
}
console.log(maxSlideHeight)
for (key in slides) {
let slide = slides[key]
let height = slide.find('.resolve-slider__item-wrap').height(maxSlideHeight)
if (slide.hasClass('active')) {
// отступ навигации сверху посередине слайдера фото
let slideHeight = slide.height()
let navHeight = nav.find('.owl-prev-inner').height()
let navTop = slideHeight / 2 - navHeight / 2;
//console.log(slideHeight, navHeight, navTop)
if (navTop && navTop > 0) {
nav.css('top', navTop);
}
}
//slide.height(maxSlideHeight)
}
}
resolveSlider.conf = {
loop: true,
slideBy: 1,
items: 1,
nav: true,
//margin: 24,
dots: true,
navText: [
'
',
'
'
],
responsive: {
// 991: {
// items: 2,
// slideBy: 2,
// },
// 0: {
// items: 1,
// slideBy: 1,
// nav: false,
// },
// 0: {
// items: 1,
// dots: true,
// nav: false
// },
},
onInitialize: resolveSlider.events,
onInitialized: resolveSlider.events,
onResize: resolveSlider.events,
onResized: resolveSlider.events,
onRefreshed: resolveSlider.events,
onChange: resolveSlider.events,
onChanged: resolveSlider.events,
};
resolveSlider.owl.owlCarousel(resolveSlider.conf);
$(window).on('load resize', function () {
//resolveSlider.owl.owlCarousel(resolveSlider.conf);
});
/*
Табы товара
*/
// let tabsProduct = {
// owl: $('.tabs_product .tabs__items'),
// events(event) {
// owlNavTop(this, this.owl);
// }
// };
//
// tabsProduct.conf = {
// loop: false,
// //slideBy: 1,
// items: 3,
// nav: true,
// autoWidth:true,
// margin: 20,
// dots: false,
//
// onInitialize: tabsProduct.events,
// onInitialized: tabsProduct.events,
// onResize: tabsProduct.events,
// onResized: tabsProduct.events,
// onRefreshed: tabsProduct.events,
// onChange: tabsProduct.events,
// onChanged: tabsProduct.events,
// };
//
// tabsProduct.owl.owlCarousel(tabsProduct.conf);
//
// $(window).on('load resize', function() {
// if ($(window).width() > 1200) {
// tabsProduct.owl.removeClass('owl-carousel');
// tabsProduct.owl.removeClass('owl-carousel_nav');
// tabsProduct.owl.removeClass('owl-carousel_nav-red');
//
// tabsProduct.owl.trigger('destroy.owl.carousel');
// } else {
// tabsProduct.owl.addClass('owl-carousel');
// tabsProduct.owl.addClass('owl-carousel_nav');
// tabsProduct.owl.addClass('owl-carousel_nav-red');
//
// tabsProduct.owl.owlCarousel(tabsProduct.conf);
// }
// });
})