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

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

@ -3,292 +3,292 @@
(function ($) { (function ($) {
const metaLocale = document.querySelector('meta[property="og:locale"]'); const metaLocale = document.querySelector('meta[property="og:locale"]');
const localeValue = metaLocale.getAttribute('content'); const localeValue = metaLocale.getAttribute('content');
function wc_cart_summary_upd(){ // function wc_cart_summary_upd(){
let total = 0 // let total = 0
$('.cart_item').each(function(){ // $('.cart_item').each(function(){
total += Number($(this).data('cost')) // total += Number($(this).data('cost'))
}) // })
return total // return total
} // }
$('[data-pname]').on('click', function(){ // $('[data-pname]').on('click', function(){
$('#sub_product_name').val($(this).data('pname')) // $('#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')
},
});
});
$('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 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', '.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')
// },
// });
// });
// $('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({ // var timerVal = 5;
"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){ // var interval = setInterval(function(){
$('.mini-profile__button--counter').removeClass('disabled').html(response['cart_count']) // timerVal -= 1;
} // if (timerVal > 0){
else{ // $(`#${key}_timer`).html(timerVal)
$('.mini-profile__button--counter').addClass('disabled').html(response['cart_count']) // }
} // else{
},
});
$(`#${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)
// 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(){ // $(`#${key}_return`).one('click', function(){
var s = $(this).closest('.select') // $(this).closest('.modal-basket__item').removeClass('.modal-basket__item--return').html(old_html)
var id = $(this).data('id') // clearInterval(interval);
var bc = $(this).data('bc') // })
// })
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) // var form = $(this).closest('.product-item__form')
$(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))
})
$('body').on('click', '.btn-load-ajax', function(){ // $(form).find('input[name="variation_id"]').val(id)
var page = Number($(this).data('page')) + 1 // $(form).find('.counter__input').data('maxcount', $(this).data('stock')).attr('data-maxcount', $(this).data('stock'))
var maxpage = Number($(this).data('maxpage')) // if (Number($(form).find('.counter__input').val()) > Number($(form).find('.counter__input').data('maxcount'))){
var data = { // $(form).find('.counter__input').val($(form).find('.counter__input').data('maxcount'))
ajax_load: 'ajax', // }
}; // var input = $(form).find('.counter__input').val()
var btn = this // $(form).find('.product-item-overlay__price').data('basecost', bc).html(Number(bc) * Number(input))
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 // $('body').on('click', '.btn-load-ajax', function(){
document.querySelectorAll('img').forEach(img => { // var page = Number($(this).data('page')) + 1
var str = img.attributes['src'].value.replace('https://cosmopet.good-production.xyz/', 'https://cosmopet.shop/') // var maxpage = Number($(this).data('maxpage'))
checkImage(str, function(){ img.attributes['src'].value = str }); // var data = {
if (img.attributes['srcset']){ // ajax_load: 'ajax',
img.attributes['srcset'].value = img.attributes['srcset'].value.replace('cosmopet.good-production.xyz', '<?=$main_host?>') // };
} // 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(){ // $('body').on('click', '.singular-w-btn', function(){
// var wg = $(this).data('wg') // var wg = $(this).data('wg')
@ -307,61 +307,62 @@
// }) // })
// асинхронный запрос при отправке формы // асинхронный запрос при отправке формы
$( '#ajaxform' ).on( 'submit',function( event ) { // $( '#ajaxform' ).on( 'submit',function( event ) {
event.preventDefault(); // 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()
// }
const form = $(this); // initCounters()
// initOverlay()
$.ajax( { // initSelect()
type : 'POST', // modalOpen('.open-to-know', '.modal__to-know');
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');
document.querySelectorAll('img').forEach(img => { // document.querySelectorAll('img').forEach(img => {
var str = img.attributes['src'].value.replace('https://cosmopet.good-production.xyz/', 'https://cosmopet.shop/') // var str = img.attributes['src'].value.replace('https://cosmopet.good-production.xyz/', 'https://cosmopet.shop/')
checkImage(str, function(){ img.attributes['src'].value = str }); // checkImage(str, function(){ img.attributes['src'].value = str });
if (img.attributes['srcset']){ // if (img.attributes['srcset']){
img.attributes['srcset'].value = img.attributes['srcset'].value.replace('cosmopet.good-production.xyz', '<?=$main_host?>') // img.attributes['srcset'].value = img.attributes['srcset'].value.replace('cosmopet.good-production.xyz', '<?=$main_host?>')
} // }
}) // })
} // }
} ); // } );
} ); // } );
$('body').on('click', '.product-tag__item', function(){ // $('body').on('click', '.product-tag__item', function(){
$('#tax_' + $(this).data('tag')).find('input').prop('checked', false) // $('#tax_' + $(this).data('tag')).find('input').prop('checked', false)
$('#tax_' + $(this).data('tag')).removeClass('active'); // $('#tax_' + $(this).data('tag')).removeClass('active');
$(this).remove() // $(this).remove()
$('#ajaxform').submit() // $('#ajaxform').submit()
}) // })
// Login // Login
$('.login_popup').on('click', function(e){ $('.login_popup').on('click', function(e){
e.preventDefault(); e.preventDefault();
$('.login_modal').addClass('active'); $('.login_modal').addClass('active');

Loading…
Cancel
Save