UNPKG

carget

Version:

optimization js code for carget website

145 lines (122 loc) 5.46 kB
// Показать или скрыть ДОП ОПЦИИ const checkDopOtionShow = () => { const displayValue = carState.options.runningBoards[1] ? 'flex' : 'none' document.querySelectorAll(arrayWrappers[3]).forEach((e) => { e.style.display = displayValue }) } // Обнуление после выбора другой модели const removeShowDopOptions = () => { const dopOptionsWrapper = document.querySelector( '.dop-options-wrapper .elementor-widget-wrap' ) const selectedModel = carState.model[1] // Получаем текущую модель const children = dopOptionsWrapper.children const childrenArray = Array.from(children) carState.options.runningBoards[0].forEach((option, index) => { const child = children[index] const checkbox = document.getElementById(child.id) const checkboxInput = checkbox.querySelector(`#${child.id}`) // Установка состояния чекбокса в зависимости от условий if (option.check) { option.show = false checkboxInput.checked = false } const modelsToShow = option.models // Список моделей, для которых опция должна быть показана const showOption = modelsToShow.includes(selectedModel) || modelsToShow.includes('All') const displayValue = showOption ? 'flex' : 'none' childrenArray.forEach((el) => { if (el.id === child.id) { el.style.display = displayValue } }) }) } const updateDopOptions = () => { const selectedModel = carState.model[1] // Получаем текущую модель //ДОП ОПЦИИ const dopOptionsWrapper = document.querySelector( '.dop-options-wrapper .elementor-widget-wrap' ) const children = dopOptionsWrapper.children const childrenArray = Array.from(children) carState.options.runningBoards[0].forEach((option, index) => { const child = children[index] const modelsToShow = option.models // Список моделей, для которых опция должна быть показана const showOption = modelsToShow.includes(selectedModel) || modelsToShow.includes('All') const displayValue = showOption ? 'flex' : 'none' childrenArray.forEach((el) => { if (el.id === child.id) { el.style.display = displayValue } }) const checkbox = document.getElementById(child.id) const checkboxInput = checkbox.querySelector(`#${child.id}`) const checkboxLabel2 = checkbox.querySelector('.custom-checkbox-label') const checkboxLabel = checkbox.querySelector(`.dop-option-title`) const checkboxDescription = checkbox.querySelector( '.dop-option-description' ) const checkboxSpan = checkbox.querySelector(`#span-${child.id}`) // Устанавливаем заголовок и описание из option.title и option.description // СКИДКА доп опции checkboxLabel.textContent = option.title checkboxDescription.textContent = option.description checkboxSpan.innerHTML = `<div style="display:flex; gap:8px;"> <span style="font-weight:700;">${numberWithSpaces( option.price )} руб.</span> ${ option.sale !== 0 && option.sale ? `<del style="text-decoration-color:#D10000; font-weight:300; color: #000">${option.sale} руб.</del> ` : '' } </div>` // Добавление слушателей событий для чекбоксов const handleClick = () => { if (option.check) { checkboxInput.checked = !checkboxInput.checked option.show = checkboxInput.checked updateCheck() } } checkboxLabel2.addEventListener('click', handleClick) checkboxSpan.addEventListener('click', handleClick) }) } const checkDopOptions = () => { // Получаем данные о дополнительных опциях, которые нужно отобразить const dopOptionsToShow = carState.options.runningBoards[0].filter( (option) => option.show ) // Очищаем текстовое содержимое элементов dopOptionsElements и priceDopOptionsElements dopOptionsElements.textContent = '' priceDopOptionsElements.textContent = '' // Если есть отображаемые опции, выводим информацию о них if (dopOptionsToShow.length > 0 && carState.options.runningBoards[1]) { dopOptionsToShow.forEach((option) => { const title = option.title const price = option.price const titleElement = document.createElement('div') titleElement.textContent = title const priceElement = document.createElement('div') priceElement.textContent = `${numberWithSpaces(price)} руб.` dopOptionsElements.appendChild(titleElement) priceDopOptionsElements.appendChild(priceElement) }) } else { // Если опций нет или показывать их не нужно, выводим информацию "Нет" const noOptionsElement = document.createElement('div') noOptionsElement.textContent = 'Нет' dopOptionsElements.appendChild(noOptionsElement) priceDopOptionsElements.appendChild(noOptionsElement) } } export { checkDopOtionShow, removeShowDopOptions, updateDopOptions, checkDopOptions, }