Files
wyczarujprezent.pl/modules/jxproductzoomer/views/js/jxproductzoomer.js
2024-10-28 22:14:22 +01:00

164 lines
5.9 KiB
JavaScript

/**
* 2017-2019 Zemez
*
* JX Product Zoomer
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*/
$(document).ready(function() {
if (typeof(JXPRODUCTZOOMER_LIVE_MODE) == 'undefined' || !JXPRODUCTZOOMER_LIVE_MODE) {
return false;
}
var $d = $(this);
// update zoomed image when page is loaded
applyProductElevateZoom('body', $('.product-images li img.selected:visible').attr('data-image-large-src'));
// do if image changing is on hover
if (JXPRODUCTZOOMER_IMAGE_CHANGE_EVENT && !JXPRODUCTZOOMER_IS_MOBILE) {;
$d.on('mouseenter', '.product-images li img', function() {
if (!$(this).hasClass('selected')) {
$(this).closest('.product-images').find('img').removeClass('selected');
$(this).trigger('click').addClass('selected');
}
if (!$('.modal:visible').length) {
applyProductElevateZoom('#content', $(this).attr('data-image-large-src'));
} else if ($('.modal.quickview').length) {
applyProductElevateZoom('.quickview', $(this).attr('data-image-large-src'));
}
});
} else {
// refresh zoomed image on item click
$d.on('click', '.product-images li img', function() {
if (!$('.modal:visible').length) {
applyProductElevateZoom('#content', $(this).attr('data-image-large-src'));
} else if ($('.modal.quickview').length) {
applyProductElevateZoom('.quickview', $(this).attr('data-image-large-src'));
}
});
}
if (!JXPRODUCTZOOMER_FANCY_BOX) {
$('.layer').hide();
}
// refresh zoomed image on color change
prestashop.on('updatedProduct', function (e) {
if (!$('.quickview').length) {
applyProductElevateZoom('#content', $('.product-images li img.selected:visible').attr('data-image-large-src'));
} else {
applyProductElevateZoom('.quickview', $('.product-images li img.selected:visible').attr('data-image-large-src'));
}
});
// refresh zoomed image in quickview modal
prestashop.on('clickQuickView', function (e) {
setTimeout(function() {
applyProductElevateZoom('.quickview', $('.product-images li img.selected:visible').attr('data-image-large-src'));
}, 1000);
});
});
$(window).on('resize', function() {
$('.zoomContainer').remove();
if (!$('.quickview').length) {
applyProductElevateZoom('#content', $('.product-images li img.selected:visible').attr('data-image-large-src'));
} else {
applyProductElevateZoom('.quickview', $('.product-images li img.selected:visible').attr('data-image-large-src'));
}
});
// reload the image zoomer when event happened
function applyProductElevateZoom(container, image) {
var bigimage = image;
if (JXPRODUCTZOOMER_IS_MOBILE || (typeof(contentOnly) != 'undefined') && contentOnly) {
JXPRODUCTZOOMER_ZOOM_TYPE = 'lens';
JXPRODUCTZOOMER_ZOOM_SHOW_LENS = true;
}
if (JXPRODUCTZOOMER_ZOOM_TYPE == 'inner') {
JXPRODUCTZOOMER_ZOOM_SCROLL = false;
JXPRODUCTZOOMER_ZOOM_LEVEL = 1;
}
if (JXPRODUCTZOOMER_ZOOM_TYPE == 'lens') {
JXPRODUCTZOOMER_ZOOM_BORDER_SIZE = JXPRODUCTZOOMER_ZOOM_LENS_BORDER_SIZE;
JXPRODUCTZOOMER_ZOOM_BORDER_COLOR = JXPRODUCTZOOMER_ZOOM_LENS_BORDER_COLOR;
}
$(container).find('.product-cover img').ezPlus({
attrBigImageSrc: bigimage,
zoomType: JXPRODUCTZOOMER_ZOOM_TYPE,
zoomContainerAppendTo: $(container).find('.product-cover'), //zoom container parent selector
responsive: JXPRODUCTZOOMER_ZOOM_RESPONSIVE,
cursor: JXPRODUCTZOOMER_ZOOM_CURSOR,
easing: JXPRODUCTZOOMER_ZOOM_EASING,
easingAmount: JXPRODUCTZOOMER_ZOOM_EASING_AMOUNT,
scrollZoom: JXPRODUCTZOOMER_ZOOM_SCROLL,
zoomLevel: JXPRODUCTZOOMER_ZOOM_LEVEL,
minZoomLevel: JXPRODUCTZOOMER_ZOOM_MIN_LEVEL,
maxZoomLevel: JXPRODUCTZOOMER_ZOOM_MAX_LEVEL,
scrollZoomIncrement: JXPRODUCTZOOMER_ZOOM_SCROLL_INCREMENT,
touchEnabled: false,
zIndex: 5,
// window settings
zoomWindowFadeIn: JXPRODUCTZOOMER_ZOOM_WINDOW_FADE_IN,
zoomWindowFadeOut: JXPRODUCTZOOMER_ZOOM_WINDOW_FADE_OUT,
zoomWindowWidth: JXPRODUCTZOOMER_ZOOM_WINDOW_WIDTH,
zoomWindowHeight: JXPRODUCTZOOMER_ZOOM_WINDOW_HEIGHT,
zoomWindowOffsetX: JXPRODUCTZOOMER_ZOOM_WINDOW_OFFSET_X,
zoomWindowOffsetY: JXPRODUCTZOOMER_ZOOM_WINDOW_OFFSET_Y,
zoomWindowPosition: JXPRODUCTZOOMER_ZOOM_WINDOW_POSITION,
zoomWindowBgColour: JXPRODUCTZOOMER_ZOOM_WINDOW_BG_COLOUR,
borderSize: JXPRODUCTZOOMER_ZOOM_BORDER_SIZE,
borderColour: JXPRODUCTZOOMER_ZOOM_BORDER_COLOR,
// end window settings
// lens setings
showLens: JXPRODUCTZOOMER_ZOOM_SHOW_LENS,
lensSize: JXPRODUCTZOOMER_ZOOM_LENS_SIZE,
lensFadeIn: JXPRODUCTZOOMER_ZOOM_FADE_IN,
lensFadeOut: JXPRODUCTZOOMER_ZOOM_FADE_OUT,
lensOpacity: JXPRODUCTZOOMER_ZOOM_LENS_OPACITY,
lensShape: JXPRODUCTZOOMER_ZOOM_LENS_SHAPE,
lensColour: JXPRODUCTZOOMER_ZOOM_LENS_COLOUR,
lensBorderSize: JXPRODUCTZOOMER_ZOOM_LENS_BORDER_SIZE,
lensBorderColour: JXPRODUCTZOOMER_ZOOM_LENS_BORDER_COLOR,
containLensZoom: JXPRODUCTZOOMER_ZOOM_CONTAIN_LENS_ZOOM,
//end lens settings
// tint settins
tint: JXPRODUCTZOOMER_ZOOM_TINT,
tintColour: JXPRODUCTZOOMER_ZOOM_TINT_COLOUR,
tintOpacity: JXPRODUCTZOOMER_ZOOM_TINT_OPACITY,
zoomTintFadeIn: JXPRODUCTZOOMER_ZOOM_WINDOW_TINT_FADE_IN,
zoomTintFadeOut: JXPRODUCTZOOMER_ZOOM_WINDOW_TINT_FADE_OUT,
// callBacks
onZoomedImageLoaded: function() {
if (!JXPRODUCTZOOMER_FANCY_BOX) {
$('.layer').hide();
}
},
// responsive
respond: [
{
range: '1-767',
zoomType: 'lens'
}]
});
}