{% 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">{% if page is defined %}{{ page.name(app.request.locale) }}{% else %}Калькулятор лепного декора / плинтусов{% endif %}</li>
</ol>
</div>
</div>
<div class="page calc-info-page">
<div class="container">
{% if decorCategories|length %}
<div class="page__header">
<h1 class="page__title">Калькулятор плинтусов</h1>
</div>
<div class="calculator-info">
<div class="calculator-info__text">
<h3 class="calculator-info__title">
Как рассчитать количество плинтуса
</h3>
<ul class="calculator-info__list">
<li>1. Замерьте общую длину всех стен комнаты (периметр) (L)</li>
<li>2. Измерьте ширину всех дверных проемов и суммируйте их (B)</li>
<li>3. Введите результаты измерений в форму ниже и получите расчёт!</li>
<li>Внимание! Все данные вводятся в метрах!</li>
</ul>
</div>
<div class="calculator-info__image">
<img src="/img/calc-pic.png" alt="Калькулятор плинтусов">
</div>
</div>
<div class="calculator calculator--addition" id="calcDecor">
<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="decorCategories" class="form__control w-md">
<option></option>
{% for category in decorCategories %}
<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 calculator__column--params">
<div class="box">
<h3>Уточните параметры</h3>
<div class="calculator-tbl calculator__list">
{{ include('application/calc/decor-products.html.twig') }}
</div>
</div>
</div>
<div class="calculator__column">
<div class="box box--outline">
<h3>Вам потребуется</h3>
<div class="glue-product">
{{ include('application/calc/decor-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: 1
},
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: 1
},
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: 1
},
success: function (data) {
updateGlueInfo(data, calcParent);
}
}).fail(function() {
alertPopup('Ошибка');
})
});
$('#openingWidth,#perimeter').change(function () {
$.ajax({
type: "POST",
url: '{{ path('calc-set-ajax') }}',
data: {
type: $(this).attr('id'),
value: $(this).val()
},
success: function (data) {
updateGlueInfo(data, $('#calcDecor'));
}
}).fail(function() {
alertPopup('Ошибка');
})
});
}
function updateGlueInfo(data, calcParent) {
calcParent.find('.glue-product').html(data.glueHtml);
initAddDecorButton();
}
function initAddDecorButton() {
$('#addDecorButton').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('calc-add-to-cart-ajax') }}',
data: {
id: button.attr('data-id'),
},
success: function (data) {
$('#cartDiv').html(data.cartHtml);
button.addClass('btn--success');
button.html('В корзине');
}
}).fail(function() {
alertPopup('Ошибка');
}).always(function() {
button.removeAttr('disabled');
});
return false;
});
}
initCartItems();
initAddDecorButton();
$('#decorCategories').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 %}