ve('active')
}
})
const stage = document.getElementById(target.dataset.stageId);
if (stage) {
stage.classList.add('active')
}
const optionsCheckbox = document.querySelectorAll('[data-options-parent] [data-option]');
if (optionsCheckbox) {
optionsCheckbox.forEach(checkbox => {
checkbox.checked = false
})
}
target.classList.add('active');
})
});
}
const disableNotValid = function (list = [], remove = false) {
let options = document.querySelectorAll('[data-stage-item].active .main-options__addmore [data-option]');
if (options.length > 0) {
options.forEach(item => {
const data = JSON.parse(item.dataset.option);
if (list.length > 0) {
list.map(name => {
if (name.toLowerCase() === data.name.toLowerCase()) {
item.checked = false;
if (remove) {
item.removeAttribute('disabled')
} else {
item.setAttribute('disabled', 'disabled')
}
}
});
}
})
}
}
const rules = {
name: "Без чип тюнинга",
disable: ['Оптимизация АКПП', 'Отклик педали', 'Замер разгона']
}
const fillData = function (e, checks) {
const checked = e.target.checked;
const data = JSON.parse(e.target.dataset.option);
if (data.name.toLowerCase() === rules.name.toLowerCase() && checked) {
// Удалить которые проходят валидацию
disableNotValid(rules.disable);
}
if (data.name.toLowerCase() === rules.name.toLowerCase() && !checked) {
// Удалить disabled если текущий not checked
disableNotValid(rules.disable, true);
}
const value = !isNaN(parseInt(e.target.dataset.value)) ? parseInt(e.target.dataset.value) : 0;
const valueOnly = !isNaN(parseInt(e.target.dataset.valueOnly)) ? parseInt(e.target.dataset.valueOnly) : 0;
checks.push({
...data, checked, value, valueOnly
});
let options = document.querySelectorAll('[data-stage-item].active .main-options__addmore [data-option]');
if (options.length > 0) {
// Повторное получения послу валидации
console.log(options)
getOptionValues(options)
}
return checks
}
const getOptionValues = (options) => {
options.forEach(element => {
const data = JSON.parse(element.dataset.option);
if (!checks.find(item => item.name === data.name)) {
const value = !isNaN(parseInt(element.dataset.value)) ? parseInt(element.dataset.value) : 0;
const valueOnly = !isNaN(parseInt(element.dataset.valueOnly)) ? parseInt(element.dataset.valueOnly) : 0;
checks.push({
...data, checked: element.checked, value, valueOnly
});
}
checks = checks.filter(item => item.checked === true);
})
}
let checks = [];
const calculate = (items, original_price_element, original_price, main_price, category_id, no_chip) => {
let span = original_price_element.querySelector('span')
main_price = original_price;
if (span)
span.textContent = main_price;
for (const [key, checked] of items) {
if (checked.checked) {
// if (checks.length >= 2 && !no_chip) {
main_price += checked.value
// }
// else if ((checks.length === 1 && category_id) || (checks.length === 2 && no_chip) || no_chip) {
// main_price += checked.valueOnly
// } else if (checks.length === 1 && !category_id) {
// main_price += checked.value
// } else {
// main_price += checked.value
// }
let span = original_price_element.querySelector('span')
if (span)
span.textContent = main_price
}
}
if (!checks.length) {
let span = original_price_element.querySelector('span')
main_price = original_price;
if (span)
span.textContent = original_price;
}
}
let original_price = 0;
const firstItemActive = document.querySelector('[data-stage-item].active [data-stage-price]')
if (firstItemActive) {
original_price = parseInt(firstItemActive.dataset.stagePrice);
}
const updated = function () {
// OLD - let options = document.querySelectorAll('.stage-form.content.active .main-options__addmore input[type="checkbox"]');
let options = document.querySelectorAll('.stage-form.content .main-options__addmore input[type="checkbox"]');
if (options.length > 0) {
options.forEach(item => {
item.addEventListener('change', function (e) {
checks = [];
fillData(e, checks);
const original_price_element = e.target.closest('[data-stage-item]').querySelector('[data-stage-price]');
let main_price = !isNaN(parseInt(original_price_element.dataset.stagePrice)) ? parseInt(original_price_element.dataset.stagePrice) : 0;
original_price = !isNaN(parseInt(original_price_element.dataset.stagePrice)) ? parseInt(original_price_element.dataset.stagePrice) : 0;
let cat_input = document.querySelector('input[name="page_category_id"]');
let category_name = cat_input.dataset.name
let category_id = category_name?.toLowerCase() === "чип-тюнинг" || category_name?.toLowerCase() === "чип тюнинг";
let no_chip = !!checks.find(i => i.key === 'price_no_chip')
// checks = checks.filter(i => i.except === '')
if (no_chip === undefined) {
no_chip = false;
}
// checks = [];
// getOptionValues(options)
const items = checks.entries();
calculate(items, original_price_element, original_price, main_price, category_id, no_chip);
})
})
}
}
disableNotValid(rules.disable, true);
updated()
const cars = document.querySelectorAll('[data-selected-car]');
if (cars) {
cars.forEach(item => {
item.addEventListener('click', () => {
const inputs = document.querySelectorAll('[data-option]')
if (inputs) {
inputs.forEach(input => input.checked = false)
}
})
})
}
const addMore = document.querySelectorAll("[data-show-more]");
if (addMore.length > 0) {
addMore.forEach(e => {
e.addEventListener('click', function () {
this.nextElementSibling.classList.toggle("active")
disableNotValid(rules.disable, true);
checks = [];
updated();
})
});
}