181 lines
8.6 KiB
JavaScript
181 lines
8.6 KiB
JavaScript
|
// Когда html документ готов (прорисован)
|
|||
|
$(document).ready(function () {
|
|||
|
// берем в переменную элемент разметки с id jq-notification для оповещений от ajax
|
|||
|
var successMessage = $("#jq-notification");
|
|||
|
|
|||
|
// // Ловим собыитие клика по кнопке добавить в корзину
|
|||
|
// $(document).on("click", ".add-to-cart", function (e) {
|
|||
|
// // Блокируем его базовое действие
|
|||
|
// e.preventDefault();
|
|||
|
|
|||
|
// // Берем элемент счетчика в значке корзины и берем оттуда значение
|
|||
|
// var goodsInCartCount = $("#goods-in-cart-count");
|
|||
|
// var cartCount = parseInt(goodsInCartCount.text() || 0);
|
|||
|
|
|||
|
// // Получаем id товара из атрибута data-product-id
|
|||
|
// var product_id = $(this).data("product-id");
|
|||
|
|
|||
|
// // Из атрибута href берем ссылку на контроллер django
|
|||
|
// var add_to_cart_url = $(this).attr("href");
|
|||
|
|
|||
|
// // делаем post запрос через ajax не перезагружая страницу
|
|||
|
// $.ajax({
|
|||
|
// type: "POST",
|
|||
|
// url: add_to_cart_url,
|
|||
|
// data: {
|
|||
|
// product_id: product_id,
|
|||
|
// csrfmiddlewaretoken: $("[name=csrfmiddlewaretoken]").val(),
|
|||
|
// },
|
|||
|
// success: function (data) {
|
|||
|
// // Сообщение
|
|||
|
// successMessage.html(data.message);
|
|||
|
// successMessage.fadeIn(400);
|
|||
|
// // Через 7сек убираем сообщение
|
|||
|
// setTimeout(function () {
|
|||
|
// successMessage.fadeOut(400);
|
|||
|
// }, 7000);
|
|||
|
|
|||
|
// // Увеличиваем количество товаров в корзине (отрисовка в шаблоне)
|
|||
|
// cartCount++;
|
|||
|
// goodsInCartCount.text(cartCount);
|
|||
|
|
|||
|
// // Меняем содержимое корзины на ответ от django (новый отрисованный фрагмент разметки корзины)
|
|||
|
// var cartItemsContainer = $("#cart-items-container");
|
|||
|
// cartItemsContainer.html(data.cart_items_html);
|
|||
|
|
|||
|
// },
|
|||
|
|
|||
|
// error: function (data) {
|
|||
|
// console.log("Ошибка при добавлении товара в корзину");
|
|||
|
// },
|
|||
|
// });
|
|||
|
// });
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
// // Ловим собыитие клика по кнопке удалить товар из корзины
|
|||
|
// $(document).on("click", ".remove-from-cart", function (e) {
|
|||
|
// // Блокируем его базовое действие
|
|||
|
// e.preventDefault();
|
|||
|
|
|||
|
// // Берем элемент счетчика в значке корзины и берем оттуда значение
|
|||
|
// var goodsInCartCount = $("#goods-in-cart-count");
|
|||
|
// var cartCount = parseInt(goodsInCartCount.text() || 0);
|
|||
|
|
|||
|
// // Получаем id корзины из атрибута data-cart-id
|
|||
|
// var cart_id = $(this).data("cart-id");
|
|||
|
// // Из атрибута href берем ссылку на контроллер django
|
|||
|
// var remove_from_cart = $(this).attr("href");
|
|||
|
|
|||
|
// // делаем post запрос через ajax не перезагружая страницу
|
|||
|
// $.ajax({
|
|||
|
|
|||
|
// type: "POST",
|
|||
|
// url: remove_from_cart,
|
|||
|
// data: {
|
|||
|
// cart_id: cart_id,
|
|||
|
// csrfmiddlewaretoken: $("[name=csrfmiddlewaretoken]").val(),
|
|||
|
// },
|
|||
|
// success: function (data) {
|
|||
|
// // Сообщение
|
|||
|
// successMessage.html(data.message);
|
|||
|
// successMessage.fadeIn(400);
|
|||
|
// // Через 7сек убираем сообщение
|
|||
|
// setTimeout(function () {
|
|||
|
// successMessage.fadeOut(400);
|
|||
|
// }, 7000);
|
|||
|
|
|||
|
// // Уменьшаем количество товаров в корзине (отрисовка)
|
|||
|
// cartCount -= data.quantity_deleted;
|
|||
|
// goodsInCartCount.text(cartCount);
|
|||
|
|
|||
|
// // Меняем содержимое корзины на ответ от django (новый отрисованный фрагмент разметки корзины)
|
|||
|
// var cartItemsContainer = $("#cart-items-container");
|
|||
|
// cartItemsContainer.html(data.cart_items_html);
|
|||
|
|
|||
|
// },
|
|||
|
|
|||
|
// error: function (data) {
|
|||
|
// console.log("Ошибка при добавлении товара в корзину");
|
|||
|
// },
|
|||
|
// });
|
|||
|
// });
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
// // Теперь + - количества товара
|
|||
|
// // Обработчик события для уменьшения значения
|
|||
|
// $(document).on("click", ".decrement", function () {
|
|||
|
// // Берем ссылку на контроллер django из атрибута data-cart-change-url
|
|||
|
// var url = $(this).data("cart-change-url");
|
|||
|
// // Берем id корзины из атрибута data-cart-id
|
|||
|
// var cartID = $(this).data("cart-id");
|
|||
|
// // Ищем ближайшеий input с количеством
|
|||
|
// var $input = $(this).closest('.input-group').find('.number');
|
|||
|
// // Берем значение количества товара
|
|||
|
// var currentValue = parseInt($input.val());
|
|||
|
// // Если количества больше одного, то только тогда делаем -1
|
|||
|
// if (currentValue > 1) {
|
|||
|
// $input.val(currentValue - 1);
|
|||
|
// // Запускаем функцию определенную ниже
|
|||
|
// // с аргументами (id карты, новое количество, количество уменьшилось или прибавилось, url)
|
|||
|
// updateCart(cartID, currentValue - 1, -1, url);
|
|||
|
// }
|
|||
|
// });
|
|||
|
|
|||
|
// // Обработчик события для увеличения значения
|
|||
|
// $(document).on("click", ".increment", function () {
|
|||
|
// // Берем ссылку на контроллер django из атрибута data-cart-change-url
|
|||
|
// var url = $(this).data("cart-change-url");
|
|||
|
// // Берем id корзины из атрибута data-cart-id
|
|||
|
// var cartID = $(this).data("cart-id");
|
|||
|
// // Ищем ближайшеий input с количеством
|
|||
|
// var $input = $(this).closest('.input-group').find('.number');
|
|||
|
// // Берем значение количества товара
|
|||
|
// var currentValue = parseInt($input.val());
|
|||
|
|
|||
|
// $input.val(currentValue + 1);
|
|||
|
|
|||
|
// // Запускаем функцию определенную ниже
|
|||
|
// // с аргументами (id карты, новое количество, количество уменьшилось или прибавилось, url)
|
|||
|
// updateCart(cartID, currentValue + 1, 1, url);
|
|||
|
// });
|
|||
|
|
|||
|
// function updateCart(cartID, quantity, change, url) {
|
|||
|
// $.ajax({
|
|||
|
// type: "POST",
|
|||
|
// url: url,
|
|||
|
// data: {
|
|||
|
// cart_id: cartID,
|
|||
|
// quantity: quantity,
|
|||
|
// csrfmiddlewaretoken: $("[name=csrfmiddlewaretoken]").val(),
|
|||
|
// },
|
|||
|
|
|||
|
// success: function (data) {
|
|||
|
// // Сообщение
|
|||
|
// successMessage.html(data.message);
|
|||
|
// successMessage.fadeIn(400);
|
|||
|
// // Через 7сек убираем сообщение
|
|||
|
// setTimeout(function () {
|
|||
|
// successMessage.fadeOut(400);
|
|||
|
// }, 7000);
|
|||
|
|
|||
|
// // Изменяем количество товаров в корзине
|
|||
|
// var goodsInCartCount = $("#goods-in-cart-count");
|
|||
|
// var cartCount = parseInt(goodsInCartCount.text() || 0);
|
|||
|
// cartCount += change;
|
|||
|
// goodsInCartCount.text(cartCount);
|
|||
|
|
|||
|
// // Меняем содержимое корзины
|
|||
|
// var cartItemsContainer = $("#cart-items-container");
|
|||
|
// cartItemsContainer.html(data.cart_items_html);
|
|||
|
|
|||
|
// },
|
|||
|
// error: function (data) {
|
|||
|
// console.log("Ошибка при добавлении товара в корзину");
|
|||
|
// },
|
|||
|
// });
|
|||
|
// }
|
|||
|
});
|