addPavingRow(false));
btnAddCurb.addEventListener('click', () => addCurbRow());
// Функция добавления участка брусчатки
function addPavingRow(isFirst) {
pavingSegmentCount++;
const row = document.createElement('div');
row.className = 'dynamic-row paving-row';
let html = `
×
`;
if (!isFirst) {
html += `✖`;
} else {
// Пустышка для сохранения верстки
html += ``;
}
row.innerHTML = html;
if (!isFirst) {
row.querySelector('.btn-del-row').addEventListener('click', function() {
row.remove();
});
}
pavingContainer.appendChild(row);
}
// Функция добавления линии поребрика
function addCurbRow() {
curbLineCount++;
const row = document.createElement('div');
row.className = 'dynamic-row curb-row';
// Пользователь может удалить даже первую линию поребрика, если он ему не нужен
let html = `
✖
`;
row.innerHTML = html;
row.querySelector('.btn-del-row').addEventListener('click', function() {
row.remove();
});
curbContainer.appendChild(row);
}
// Логика расчета
btnCalc.addEventListener('click', function() {
// Очистка предыдущих ошибок
document.querySelectorAll('.req-input').forEach(el => el.classList.remove('input-error'));
let hasError = false;
// Сбор данных по брусчатке
let totalPavingArea = 0;
const pavingRows = pavingContainer.querySelectorAll('.paving-row');
pavingRows.forEach(row => {
const lenInput = row.querySelector('.p-len');
const widInput = row.querySelector('.p-wid');
const len = parseFloat(lenInput.value);
const wid = parseFloat(widInput.value);
if (isNaN(len) || len 0 && curbPieces > 0) {
const costCurb = curbPieces * priceCurb;
totalCost += costCurb;
document.getElementById('res-cost-curb').textContent = formatter.format(costCurb);
rowCostCurb.style.display = 'flex';
showFinance = true;
} else {
rowCostCurb.style.display = 'none';
}
const financeBlock = document.getElementById('finance-results');
if (showFinance) {
document.getElementById('res-cost-total').textContent = formatter.format(totalCost);
financeBlock.style.display = 'block';
} else {
financeBlock.style.display = 'none';
}
// Показываем блок результатов
resultsBox.style.display = 'block';
});
});
" />