{% extends 'application/layout.html.twig' %}
{% block content %}
<main class="main">
<div class="breadcrumb">
<div class="container">
<ol class="breadcrumb__list">
<li class="breadcrumb__item"><a href="{{ path('home') }}" class="breadcrumb__link">Главная</a></li>
<li class="breadcrumb__item active" aria-current="page">{{ page.name(app.request.locale) }}</li>
</ol>
</div>
</div>
<div class="page">
<div class="container">
{% if glueCategories|length %}
<div class="page__header">
<h1 class="page__title">Калькулятор расхода клея</h1>
</div>
<div class="calculator" id="calcGlue">
<div class="calculator__column">
<div class="box box--outline">
<h3>Выберите изделие</h3>
<form class="form calculator__form">
<div class="form__group">
<div class="form__label">Категория</div>
<select id="glueCategories" class="form__control w-md">
<option></option>
{% for category in glueCategories %}
<option value="{{ category.id }}">{{ category.name(app.request.locale) }}</option>
{% endfor %}
</select>
</div>
<div class="form__group">
<div class="form__label">Товар</div>
<select class="select-by-name form__control w-md">
</select>
</div>
<div class="form__btn">
<button class="btn a-calc">Добавить в расчет</button>
</div>
</form>
</div>
</div>
<div class="calculator__column">
<div class="box">
<h3>Уточните количество</h3>
<div class="calculator-tbl calculator__list">
{{ include('application/calc/products.html.twig') }}
</div>
</div>
</div>
<div class="calculator__column">
<div class="box box--outline">
<h3>Вам потребуется</h3>
<div class="glue-product">
{{ include('application/calc/glue-product.html.twig') }}
</div>
</div>
</div>
</div>
{% endif %}
</div>
</div>
</main>
{% endblock %}
{% block scripts %}
<script>
let busy = false;
$('.a-calc').on('click', function() {
if (busy) {
return false;
}
let calcParent = $(this).closest('.calculator');
let id = calcParent.find('.select-by-name').val();
if (!id) {
alertPopup('Выберите товар');
return false;
}
busy = true;
$.ajax({
type: "POST",
url: '{{ path('calc-add-ajax') }}',
data: {
id: id,
decor: ''
},
success: function (data) {
let block = $(data.html);
calcParent.find('.calculator__list').html(block);
prepareProductBlockCount(block);
initCartItems();
updateGlueInfo(data, calcParent);
}
}).fail(function() {
alertPopup('Ошибка');
}).always(function() {
busy = false;
});
return false;
});
$('.calculator__list, .calculator__list--result')
.on('click', '.remove__link', function(e) {
if (busy) {
return false;
}
let calcParent = $(this).closest('.calculator');
let calcProduct = $(this).closest('.calculator-tbl__item'),
id = calcProduct.attr('data-id');
busy = true;
$.ajax({
type: "POST",
url: '{{ path('calc-remove-ajax') }}',
data: {
id: id,
decor: ''
},
success: function (data) {
let block = $(data.html);
calcParent.find('.calculator__list').html(block);
prepareProductBlockCount(block);
initCartItems();
updateGlueInfo(data, calcParent);
}
}).fail(function() {
alertPopup('Ошибка');
}).always(function() {
busy = false;
});
return false;
});
function initCartItems() {
$('.cart-quantity').change(function () {
let calcParent = $(this).closest('.calculator');
let calcProduct = $(this).closest('.calculator-tbl__item'),
id = calcProduct.attr('data-id');
let count = $(this).val();
$.ajax({
type: "POST",
url: '{{ path('calc-put-ajax') }}',
data: {
id: id,
count: count,
decor: ''
},
success: function (data) {
updateGlueInfo(data, calcParent);
}
}).fail(function() {
alertPopup('Ошибка');
})
});
}
function updateGlueInfo(data, calcParent) {
calcParent.find('.glue-product').html(data.glueHtml);
initAddGlueButton();
}
function initAddGlueButton() {
$('#addGlueButton').click(function () {
let button = $(this);
if (button.hasClass('btn--success')) {
location.href = '{{ path('cart') }}';
return false;
}
button.attr('disabled', 'disabled');
$.ajax({
type: "POST",
url: '{{ path('cart-add-ajax') }}',
data: {
id: button.attr('data-id'),
count: $('#glueCount').val()
},
success: function (data) {
$('#cartDiv').html(data.cartHtml);
button.addClass('btn--success');
button.html('В корзине');
}
}).fail(function() {
alertPopup('Ошибка');
}).always(function() {
button.removeAttr('disabled');
});
return false;
});
}
initCartItems();
initAddGlueButton();
$('#glueCategories').change(function () {
let select = $(this);
$.ajax({
type: "GET",
url: '{{ path('calc-get-products') }}',
data: {
id: select.val(),
},
success: function (data) {
let form = select.closest('form');
form.find('.select-by-name').html(data.productsByNameHtml);
}
}).fail(function() {
alertPopup('Калькулятор для этой категории сейчас не доступен, выберите другую');
});
});
</script>
{% endblock %}