Task: 6767 | исправил логику поведения скрипта при переключении веса в карточке товара

dev_10_refactoring
parent e517bdff99
commit c8108c2234
  1. 629
      wp-content/themes/cosmopet/modules/footer/assets/js/footer.js

@ -3,292 +3,292 @@
(function ($) {
const metaLocale = document.querySelector('meta[property="og:locale"]');
const localeValue = metaLocale.getAttribute('content');
function wc_cart_summary_upd(){
let total = 0
$('.cart_item').each(function(){
total += Number($(this).data('cost'))
})
return total
}
$('[data-pname]').on('click', function(){
$('#sub_product_name').val($(this).data('pname'))
})
$(document).on('submit', '.product-item__form, .detail-block__form', function (e) {
e.preventDefault();
var $form = $(this)
var product_qty = $form.find('input[name=quantity]').val() || 1
var product_id = $form.find('input[name=product_id]').val()
var variation_id = $form.find('input[name=variation_id]').val() || 0;
var title = $(this).data('name')
var data = {
action: 'woocommerce_ajax_add_to_cart',
product_id: product_id,
product_sku: '',
quantity: product_qty,
variation_id: variation_id,
};
dataLayer.push({
"ecommerce": {
"currencyCode": "RUB",
"add": {
"products": [
{
"id": product_id,
"name": title,
"quantity": product_qty,
}
]
}
}
});
return false;
});
$(document).on('submit', '.modal__form-sub', function (e) {
e.preventDefault();
var email = $(this).find('input[name="email"]').val()
var data = $(this).serialize()
$.ajax({
type: 'post',
url: woocommerce_params.ajax_url,
data: data,
beforeSend: function (response) {
// $thisbutton.removeClass('added').addClass('loading');
},
complete: function (response) {
// $thisbutton.addClass('added').removeClass('loading');
},
success: function (response) {
$('.modal__to-know').removeClass('active')
$('#sub-result-email').html(email)
$('.modal__to-know-submit').addClass('active').css('filter', 'blur(0px)')
},
});
});
$(document).on('submit', '.form--contact', function (e) {
e.preventDefault();
var form = this;
var data = $(this).serialize()
$.ajax({
type: 'post',
url: woocommerce_params.ajax_url,
data: data,
beforeSend: function (response) {
// $thisbutton.removeClass('added').addClass('loading');
},
complete: function (response) {
// $thisbutton.addClass('added').removeClass('loading');
},
success: function (response) {
$(form).addClass('submited')
},
});
});
// function wc_cart_summary_upd(){
// let total = 0
// $('.cart_item').each(function(){
// total += Number($(this).data('cost'))
// })
// return total
// }
// $('[data-pname]').on('click', function(){
// $('#sub_product_name').val($(this).data('pname'))
// })
$('body').on('click', '.modal-basket__item-before', function(){
var key = $(this).data('id')
var p_ID = $(this).data('pr');
var var_ID = $(this).data('var');
var quantity = $(this).closest('.modal-basket__item').find('.counter__input').val()
var layout = `
<p class="modal-basket-item__title">
Удаление товара из корзины: <span id="${key}_timer" class="timer_counter">5</span>с
</p>
// $(document).on('submit', '.product-item__form, .detail-block__form', function (e) {
// e.preventDefault();
// var $form = $(this)
// var product_qty = $form.find('input[name=quantity]').val() || 1
// var product_id = $form.find('input[name=product_id]').val()
// var variation_id = $form.find('input[name=variation_id]').val() || 0;
// var title = $(this).data('name')
// var data = {
// action: 'woocommerce_ajax_add_to_cart',
// product_id: product_id,
// product_sku: '',
// quantity: product_qty,
// variation_id: variation_id,
// };
// dataLayer.push({
// "ecommerce": {
// "currencyCode": "RUB",
// "add": {
// "products": [
// {
// "id": product_id,
// "name": title,
// "quantity": product_qty,
// }
// ]
// }
// }
// });
<button class="modal-basket-item__return" id="${key}_return" data-id="${p_ID}" data-var="${var_ID}" data-quantity="${quantity}">
Восстановить
</button>
`
if(localeValue == 'en_US'){
var layout = `
<p class="modal-basket-item__title">
Removing product from cart: <span id="${key}_timer" class="timer_counter">5</span>s
</p>
// return false;
// });
<button class="modal-basket-item__return" id="${key}_return" data-id="${p_ID}" data-var="${var_ID}" data-quantity="${quantity}">
Restore
</button>
`
}
// $(document).on('submit', '.modal__form-sub', function (e) {
// e.preventDefault();
// var email = $(this).find('input[name="email"]').val()
// var data = $(this).serialize()
// $.ajax({
// type: 'post',
// url: woocommerce_params.ajax_url,
// data: data,
// beforeSend: function (response) {
// // $thisbutton.removeClass('added').addClass('loading');
// },
// complete: function (response) {
// // $thisbutton.addClass('added').removeClass('loading');
// },
// success: function (response) {
// $('.modal__to-know').removeClass('active')
// $('#sub-result-email').html(email)
// $('.modal__to-know-submit').addClass('active').css('filter', 'blur(0px)')
// },
// });
// });
var old_html = $(this).closest('.modal-basket__item').html()
$(this).closest('.modal-basket__item').addClass('.modal-basket__item--return').html(layout)
var title = $(this).closest('.cart_item').find('.modal-basket-item__title').html()
// $(document).on('submit', '.form--contact', function (e) {
// e.preventDefault();
// var form = this;
// var data = $(this).serialize()
// $.ajax({
// type: 'post',
// url: woocommerce_params.ajax_url,
// data: data,
// beforeSend: function (response) {
// // $thisbutton.removeClass('added').addClass('loading');
// },
// complete: function (response) {
// // $thisbutton.addClass('added').removeClass('loading');
// },
// success: function (response) {
// $(form).addClass('submited')
// },
// });
// });
// $('body').on('click', '.modal-basket__item-before', function(){
// var key = $(this).data('id')
// var p_ID = $(this).data('pr');
// var var_ID = $(this).data('var');
// var quantity = $(this).closest('.modal-basket__item').find('.counter__input').val()
// var layout = `
// <p class="modal-basket-item__title">
// Удаление товара из корзины: <span id="${key}_timer" class="timer_counter">5</span>с
// </p>
// <button class="modal-basket-item__return" id="${key}_return" data-id="${p_ID}" data-var="${var_ID}" data-quantity="${quantity}">
// Восстановить
// </button>
// `
// if(localeValue == 'en_US'){
// var layout = `
// <p class="modal-basket-item__title">
// Removing product from cart: <span id="${key}_timer" class="timer_counter">5</span>s
// </p>
// <button class="modal-basket-item__return" id="${key}_return" data-id="${p_ID}" data-var="${var_ID}" data-quantity="${quantity}">
// Restore
// </button>
// `
// }
var timerVal = 5;
// var old_html = $(this).closest('.modal-basket__item').html()
// $(this).closest('.modal-basket__item').addClass('.modal-basket__item--return').html(layout)
// var title = $(this).closest('.cart_item').find('.modal-basket-item__title').html()
var interval = setInterval(function(){
timerVal -= 1;
if (timerVal > 0){
$(`#${key}_timer`).html(timerVal)
}
else{
dataLayer.push({
"ecommerce": {
"currencyCode": "RUB",
"remove": {
"products": [
{
"id": p_ID,
"name": title,
"quantity": quantity,
}
]
}
}
});
var input = 0;
var productID = key;
var data = {
action: 'get_cartprice',
quantity: input,
product: productID
};
$.ajax({
type: 'post',
url: '/wp-admin/admin-ajax.php',
data: data,
beforeSend: function (response) {
// $thisbutton.removeClass('added').addClass('loading');
},
complete: function (response) {
// $thisbutton.addClass('added').removeClass('loading');
},
success: function (response) {
// var timerVal = 5;
if(response['cart_count'] > 0){
$('.mini-profile__button--counter').removeClass('disabled').html(response['cart_count'])
}
else{
$('.mini-profile__button--counter').addClass('disabled').html(response['cart_count'])
}
},
});
$(`#${key}_timer`).closest('.modal-basket__item').remove()
if (Number(wc_cart_summary_upd()) > 0){
$('#cart_total').html(wc_cart_summary_upd())
}
else{
var tmpl = `<div class="modal__header --nb">
<p class="modal__title">Корзина</p>
<p class="modal__text">Ваша корзина пуста</p>
</div>
<div class="modal__footer">
<div class="modal__block-button">
<div class="modal__button">
<a href="/shop/" class="button button--100-perc button--link button--white">
Продолжить покупки
</a>
</div>
</div>
</div>`
if(localeValue == 'en_US'){
var tmpl = `<div class="modal__header --nb">
<p class="modal__title">Cart</p>
<p class="modal__text">Your cart is empty</p>
</div>
<div class="modal__footer">
<div class="modal__block-button">
<div class="modal__button">
<a href="/en/shop-3/" class="button button--100-perc button--link button--white">
Return to catalog
</a>
</div>
</div>
</div>`
}
$('.modal__basket').html(tmpl)
}
clearInterval(interval);
}
}, 1000)
// var interval = setInterval(function(){
// timerVal -= 1;
// if (timerVal > 0){
// $(`#${key}_timer`).html(timerVal)
// }
// else{
// dataLayer.push({
// "ecommerce": {
// "currencyCode": "RUB",
// "remove": {
// "products": [
// {
// "id": p_ID,
// "name": title,
// "quantity": quantity,
// }
// ]
// }
// }
// });
// var input = 0;
// var productID = key;
// var data = {
// action: 'get_cartprice',
// quantity: input,
// product: productID
// };
// $.ajax({
// type: 'post',
// url: '/wp-admin/admin-ajax.php',
// data: data,
// beforeSend: function (response) {
// // $thisbutton.removeClass('added').addClass('loading');
// },
// complete: function (response) {
// // $thisbutton.addClass('added').removeClass('loading');
// },
// success: function (response) {
// if(response['cart_count'] > 0){
// $('.mini-profile__button--counter').removeClass('disabled').html(response['cart_count'])
// }
// else{
// $('.mini-profile__button--counter').addClass('disabled').html(response['cart_count'])
// }
// },
// });
// $(`#${key}_timer`).closest('.modal-basket__item').remove()
// if (Number(wc_cart_summary_upd()) > 0){
// $('#cart_total').html(wc_cart_summary_upd())
// }
// else{
// var tmpl = `<div class="modal__header --nb">
// <p class="modal__title">Корзина</p>
// <p class="modal__text">Ваша корзина пуста</p>
// </div>
// <div class="modal__footer">
// <div class="modal__block-button">
// <div class="modal__button">
// <a href="/shop/" class="button button--100-perc button--link button--white">
// Продолжить покупки
// </a>
// </div>
// </div>
// </div>`
// if(localeValue == 'en_US'){
// var tmpl = `<div class="modal__header --nb">
// <p class="modal__title">Cart</p>
// <p class="modal__text">Your cart is empty</p>
// </div>
// <div class="modal__footer">
// <div class="modal__block-button">
// <div class="modal__button">
// <a href="/en/shop-3/" class="button button--100-perc button--link button--white">
// Return to catalog
// </a>
// </div>
// </div>
// </div>`
// }
// $('.modal__basket').html(tmpl)
// }
// clearInterval(interval);
// }
// }, 1000)
$(`#${key}_return`).one('click', function(){
$(this).closest('.modal-basket__item').removeClass('.modal-basket__item--return').html(old_html)
clearInterval(interval);
})
})
$('body').on('click', '.state__button', function(){
var s = $(this).closest('.select')
var id = $(this).data('id')
var bc = $(this).data('bc')
// $(`#${key}_return`).one('click', function(){
// $(this).closest('.modal-basket__item').removeClass('.modal-basket__item--return').html(old_html)
// clearInterval(interval);
// })
// })
var form = $(this).closest('.product-item__form')
// $('body').on('click', '.state__button', function(){
// var s = $(this).closest('.select')
// var id = $(this).data('id')
// var bc = $(this).data('bc')
$(form).find('input[name="variation_id"]').val(id)
$(form).find('.counter__input').data('maxcount', $(this).data('stock')).attr('data-maxcount', $(this).data('stock'))
if (Number($(form).find('.counter__input').val()) > Number($(form).find('.counter__input').data('maxcount'))){
$(form).find('.counter__input').val($(form).find('.counter__input').data('maxcount'))
}
var input = $(form).find('.counter__input').val()
$(form).find('.product-item-overlay__price').data('basecost', bc).html(Number(bc) * Number(input))
})
// var form = $(this).closest('.product-item__form')
$('body').on('click', '.btn-load-ajax', function(){
var page = Number($(this).data('page')) + 1
var maxpage = Number($(this).data('maxpage'))
var data = {
ajax_load: 'ajax',
};
var btn = this
var baseUrl = jQuery(location).attr('origin') + jQuery(location).attr('pathname')
baseUrl += 'page/' + page + '/'
var searchUrl = baseUrl
if (jQuery(location).attr('search')){
searchUrl += jQuery(location).attr('search') + '&ajax_search=ajax'
}
else{
searchUrl += '?ajax_search=ajax'
}
$.ajax({
type: 'get',
url: searchUrl,
data: data,
beforeSend: function (response) {
$(btn).attr('disabled', true)
$(btn).attr('data-page', page)
$(btn).data('page', page)
},
complete: function (response) {
if (page >= maxpage){
$(btn).remove()
}
else{
$(btn).attr('disabled', false)
}
},
success: function (response) {
$('.products').append(response)
initCounters()
initOverlay()
initSelect()
modalOpen('.open-to-know', '.modal__to-know');
// $(form).find('input[name="variation_id"]').val(id)
// $(form).find('.counter__input').data('maxcount', $(this).data('stock')).attr('data-maxcount', $(this).data('stock'))
// if (Number($(form).find('.counter__input').val()) > Number($(form).find('.counter__input').data('maxcount'))){
// $(form).find('.counter__input').val($(form).find('.counter__input').data('maxcount'))
// }
// var input = $(form).find('.counter__input').val()
// $(form).find('.product-item-overlay__price').data('basecost', bc).html(Number(bc) * Number(input))
// })
/// РЕШЕНИЕ ДЛЯ СТЕНДА AJAX ДЛЯ ПОДГРУЗКИ AJAX
document.querySelectorAll('img').forEach(img => {
var str = img.attributes['src'].value.replace('https://cosmopet.good-production.xyz/', 'https://cosmopet.shop/')
checkImage(str, function(){ img.attributes['src'].value = str });
if (img.attributes['srcset']){
img.attributes['srcset'].value = img.attributes['srcset'].value.replace('cosmopet.good-production.xyz', '<?=$main_host?>')
}
})
//
},
});
})
// $('body').on('click', '.btn-load-ajax', function(){
// var page = Number($(this).data('page')) + 1
// var maxpage = Number($(this).data('maxpage'))
// var data = {
// ajax_load: 'ajax',
// };
// var btn = this
// var baseUrl = jQuery(location).attr('origin') + jQuery(location).attr('pathname')
// baseUrl += 'page/' + page + '/'
// var searchUrl = baseUrl
// if (jQuery(location).attr('search')){
// searchUrl += jQuery(location).attr('search') + '&ajax_search=ajax'
// }
// else{
// searchUrl += '?ajax_search=ajax'
// }
// $.ajax({
// type: 'get',
// url: searchUrl,
// data: data,
// beforeSend: function (response) {
// $(btn).attr('disabled', true)
// $(btn).attr('data-page', page)
// $(btn).data('page', page)
// },
// complete: function (response) {
// if (page >= maxpage){
// $(btn).remove()
// }
// else{
// $(btn).attr('disabled', false)
// }
// },
// success: function (response) {
// $('.products').append(response)
// initCounters()
// initOverlay()
// initSelect()
// modalOpen('.open-to-know', '.modal__to-know');
// /// РЕШЕНИЕ ДЛЯ СТЕНДА AJAX ДЛЯ ПОДГРУЗКИ AJAX
// document.querySelectorAll('img').forEach(img => {
// var str = img.attributes['src'].value.replace('https://cosmopet.good-production.xyz/', 'https://cosmopet.shop/')
// checkImage(str, function(){ img.attributes['src'].value = str });
// if (img.attributes['srcset']){
// img.attributes['srcset'].value = img.attributes['srcset'].value.replace('cosmopet.good-production.xyz', '<?=$main_host?>')
// }
// })
// //
// },
// });
// })
// $('body').on('click', '.singular-w-btn', function(){
// var wg = $(this).data('wg')
@ -307,61 +307,62 @@
// })
// асинхронный запрос при отправке формы
$( '#ajaxform' ).on( 'submit',function( event ) {
event.preventDefault();
const form = $(this);
// $( '#ajaxform' ).on( 'submit',function( event ) {
// event.preventDefault();
// const form = $(this);
// $.ajax( {
// type : 'POST',
// url : woocommerce_params.ajax_url,
// data : form.serialize(),
// beforeSend : function( xhr ) {
// $('.products').addClass('loading')
// form.find('.button-submit').addClass('loading').attr('disabled', true)
// },
// success : function( data ) {
// $( '.products' ).html( data.products );
// $('.product__tag').html(data.tags);
// $( '.btn-load-ajax' ).remove()
// form.find('.button-submit').removeClass('loading').attr('disabled', false)
// form.find('.modal__close').click()
// $('.products').removeClass('loading')
// if (data.err){
// $('.product__error-button').show()
// }
// else{
// $('.product__error-button').hide()
// }
$.ajax( {
type : 'POST',
url : woocommerce_params.ajax_url,
data : form.serialize(),
beforeSend : function( xhr ) {
$('.products').addClass('loading')
form.find('.button-submit').addClass('loading').attr('disabled', true)
},
success : function( data ) {
$( '.products' ).html( data.products );
$('.product__tag').html(data.tags);
$( '.btn-load-ajax' ).remove()
form.find('.button-submit').removeClass('loading').attr('disabled', false)
form.find('.modal__close').click()
$('.products').removeClass('loading')
if (data.err){
$('.product__error-button').show()
}
else{
$('.product__error-button').hide()
}
// initCounters()
// initOverlay()
// initSelect()
// modalOpen('.open-to-know', '.modal__to-know');
initCounters()
initOverlay()
initSelect()
modalOpen('.open-to-know', '.modal__to-know');
document.querySelectorAll('img').forEach(img => {
var str = img.attributes['src'].value.replace('https://cosmopet.good-production.xyz/', 'https://cosmopet.shop/')
checkImage(str, function(){ img.attributes['src'].value = str });
if (img.attributes['srcset']){
img.attributes['srcset'].value = img.attributes['srcset'].value.replace('cosmopet.good-production.xyz', '<?=$main_host?>')
}
})
}
// document.querySelectorAll('img').forEach(img => {
// var str = img.attributes['src'].value.replace('https://cosmopet.good-production.xyz/', 'https://cosmopet.shop/')
// checkImage(str, function(){ img.attributes['src'].value = str });
// if (img.attributes['srcset']){
// img.attributes['srcset'].value = img.attributes['srcset'].value.replace('cosmopet.good-production.xyz', '<?=$main_host?>')
// }
// })
// }
} );
// } );
} );
// } );
$('body').on('click', '.product-tag__item', function(){
$('#tax_' + $(this).data('tag')).find('input').prop('checked', false)
$('#tax_' + $(this).data('tag')).removeClass('active');
$(this).remove()
$('#ajaxform').submit()
})
// $('body').on('click', '.product-tag__item', function(){
// $('#tax_' + $(this).data('tag')).find('input').prop('checked', false)
// $('#tax_' + $(this).data('tag')).removeClass('active');
// $(this).remove()
// $('#ajaxform').submit()
// })
// Login
$('.login_popup').on('click', function(e){
e.preventDefault();
$('.login_modal').addClass('active');

Loading…
Cancel
Save