This repository has been archived on 2024-10-16. You can view files and clone it, but cannot push or open issues or pull requests.
skillparts/mirzaev/skillparts/system/web/js/cart.js

166 lines
4.0 KiB
JavaScript

function cart_write(catn, amount = 1) {
$.ajax({
url: '/order/write',
type: 'post',
dataType: 'json',
data: {
'_csrf': yii.getCsrfToken(),
'supplies': [
catn,
amount
]
},
success: cart_success,
error: cart_error
});
return false;
}
function cart_delete() {
$.ajax({
url: '/order/delete',
type: 'post',
dataType: 'json',
data: {
'_csrf': yii.getCsrfToken()
},
success: cart_success,
error: cart_error
});
return false;
}
function cart_pay() {
$.ajax({
url: '/order/pay',
type: 'post',
dataType: 'json',
data: {
'_csrf': yii.getCsrfToken()
},
success: cart_success,
error: cart_error
});
return false;
}
function cart_list_checkbox(target) {
// Инициализация
let elements = document.getElementsByClassName('cart_list_target');
let reg = /^\w+_([^_]*)$/;
let catn = reg.exec(target.id)[1];
if (catn === 'all') {
if (target.checked === true) {
for ($i = 0; $i < elements.length; $i++) {
elements[$i].getElementsByTagName('input')[0].checked = true;
}
target.checked = true;
} else {
for ($i = 0; $i < elements.length; $i++) {
elements[$i].getElementsByTagName('input')[0].checked = false;
}
target.checked = false;
}
return false;
}
}
function cart_list_delete(dropdown) {
// Инициализация
let elements = document.getElementsByClassName('cart_list_target');
let reg = /^\w+_([^_]*)$/;
let targets = [];
for ($i = 0; $i < elements.length; $i++) {
let checkbox = elements[$i].getElementsByTagName('input')[0];
if (checkbox.checked === true) {
targets.push(reg.exec(checkbox.id)[1]);
}
}
$.ajax({
url: '/order/delete',
type: 'post',
dataType: 'json',
data: {
'_csrf': yii.getCsrfToken(),
'targets': targets
},
success: cart_success,
error: cart_error
});
document.getElementById('cart_list_action').value = 'none';
// Подсчитывание стоимости
cart_cost_calculate();
return false;
}
function cart_cost_calculate() {
let elements = document.getElementsByClassName('cart_list_target');
let reg = /^([0-9]*)\s*\w*/;
let costs = 0;
for ($i = 0; $i < elements.length; $i++) {
let cost = elements[$i].getElementsByTagName('div')[5];
costs += +reg.exec(cost.innerText)[1];
}
document.getElementById('cart_cost').innerHTML = costs;
}
cart_cost_calculate();
function cart_success(data, status) {
// Обработка ответов от удавшихся запросов
// Основной блок
if (data.main !== undefined) {
main = document.getElementsByTagName('main')[0];
// Обновление документа
main.innerHTML = data.main;
// Реинициализация
reinitialization(main);
}
// CSRF-токен
if (data._csrf !== undefined) {
// Обновление документа
$('meta[name=csrf-token]').prop("content", data._csrf);
}
}
function cart_error(data, status) {
// Обработка ответов от неудавшихся запросов
// Основной блок
if (data.responseJSON.main !== undefined) {
main = document.getElementsByTagName('main')[0];
// Обновление окна результатов поиска
main.innerHTML = data.main;
// Реинициализация
reinitialization(main);
}
// CSRF-токен
if (data.responseJSON._csrf !== undefined) {
// Обновление документа
$('meta[name=csrf-token]').prop("content", data.responseJSON._csrf);
}
}