1let urlParams = new URLSearchParams(window.location.search); 2$(".phone").mask("+7 (999) 999 99 99"); 3const nextStepBtnTwo = document.querySelector(".popup__next-btn[data-step='2']"); 4const nextStepBtnThree = document.querySelector(".popup__next-btn[data-step='3']"); 5const nextStepBtnFour = document.querySelector(".popup__next-btn[data-step='4']"); 6const nextStepBtnFive = document.querySelector(".popup__next-btn[data-step='5']"); 7const nextStepBtnSix = document.querySelector(".popup__next-btn[data-step='6']"); 8const resultCalcBtn = document.querySelector(".popup__step-btn[data-popup='popup-calc_result']"); 9 10// ------------------------- start FANCYBOX: --------------------------- 11const body = document.querySelector("body"); 12Fancybox.bind("[data-fancybox]", { 13 // Your custom options 14}); 15// ------------------------- end FANCYBOX: --------------------------- 16 17// ---------------------------------- start menu ---------------------------------- 18//#region menu 19const header = document.querySelector(".header"); 20const main = document.querySelector(".main"); 21if (header) { 22 document.addEventListener("scroll", (e) => { 23 if (window.innerWidth > 760) { 24 // console.log(window.scrollY); 25 if (window.scrollY > 115) { 26 header.classList.add("header_scroll"); 27 main.classList.add("main_scroll"); 28 } else { 29 header.classList.remove("header_scroll"); 30 main.classList.remove("main_scroll"); 31 } 32 } 33 }); 34} 35 36// console.log(window.innerWidth); 37if (window.innerWidth < 1440) { 38 const runner = document.querySelector(".runner"); 39 const partnersList = document.querySelector(".partners__list"); 40 runner.style.display = "none"; 41 partnersList.style.display = "flex"; 42} 43 44let animates = Array.from(document.querySelectorAll(".animation")).filter((item) => { 45 if (item.style.display !== "none") { 46 return item; 47 } 48}); 49
50animates.forEach((item) => { 51 // полÑÑаем паÑамеÑÑÑ ÑекÑии 52 const rect = item.getBoundingClientRect(); // положение ÑлеменÑа в окне 53 // console.log('item', item); 54 // console.log('rect.top', rect.top); 55 // console.log('window.innerHeight / 2', window.innerHeight / 2); 56 // console.log('rect.top', rect.top); 57 // пÑовеÑÑем ÑÑо наÑало ÑекÑии Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð² пеÑвой половине ÑкÑана 58 // if (rect.top >= 0 && rect.top <= window.innerHeight / 2) { 59 if (rect.top <= window.innerHeight / 1.4) { 60 item.classList.add("animation_active"); 61 } 62}); 63 64document.addEventListener("scroll", () => { 65 // console.log(window.scrollY); 66 67 // console.log("scroll"); 68 // полÑÑаем вÑе ÑекÑии Ñ Ð°ÑÑибÑÑом id 69 70 // console.log("animates", animates); 71 72 animates.forEach((item) => { 73 // полÑÑаем паÑамеÑÑÑ ÑекÑии 74 const rect = item.getBoundingClientRect(); 75 // console.log(rect); 76 77 // пÑовеÑÑем ÑÑо наÑало ÑекÑии Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð² пеÑвой половине ÑкÑана 78 if (rect.top <= window.innerHeight / 1.4) { 79 // if (rect.top >= 0) { 80 // console.log(rect.top); 81 item.classList.add("animation_active"); 82 } 83 }); 84}); 85 86// ---------------------------------- end menu ---------------------------------- 87//#endregion 88 89// -------------------------------------------- start ÐаÑÑоÑки пÑедложений: --------------------------------------------- 90//#region offer cards 91const offerCards = document.querySelectorAll(".offers__slider-item"); 92if (offerCards.length) { 93 offerCards.forEach((item) => { 94 const id = item.dataset.id; 95 const cardTitle = item.querySelector(".off-card__title"); 96 const cardSubtitle = item.querySelector(".off-card__subtitle"); 97 const cardImg = item.querySelector(".off-card__img img"); 98 99 const cardText = item.querySelector(".off-card__text"); 100 const cardMoreBtn = item.querySelector(".btn_modal"); 101 const cardConsultBtn = item.querySelector(".btn_cons"); 102 const cardCalcBtn = item.querySelector(".btn_calc"); 103 const truthCardText = cardText.innerHTML; 104 105 cardText.style.display = "none"; 106 107 // $clamp(cardText, { clamp: 2 }); 108 109 cardMoreBtn.addEventListener("click", function () { 110 // console.log("click"); 111 const popup = document.querySelector(".popup-offer_more"); 112 const popupTitle = popup.querySelector(".off-card__title"); 113 const popupSubtitle = popup.querySelector(".off-card__subtitle"); 114 const popupImg = popup.querySelector(".off-card__img img"); 115 const popupText = popup.querySelector(".off-card__text"); 116 const popupConsultBtn = popup.querySelector(".btn_cons"); 117 const popupCalcBtn = popup.querySelector(".btn_calc"); 118 const showBtn = popup.querySelector(".off-card__btn_show"); 119 const hideBtn = popup.querySelector(".off-card__btn_hide"); 120 const btnWrapper = popup.querySelector(".off-card__btn-wrap"); 121 btnWrapper.style.display = "block"; 122 123 popupTitle.textContent = cardTitle.textContent; 124 popupSubtitle.textContent = cardSubtitle.textContent; 125 popupImg.src = cardImg.src; 126 popupText.innerHTML = cardText.innerHTML; 127 128 const itemClasses = item.classList; 129 if (itemClasses.contains("off-card_cons")) { 130 popupConsultBtn.style.display = "block"; 131 popupCalcBtn.style.display = "none"; 132 showBtn.style.display = "block"; 133 hideBtn.style.display = "none"; 134 } else { 135 popupConsultBtn.style.display = "none"; 136 popupCalcBtn.style.display = "block"; 137 showBtn.style.display = "none"; 138 hideBtn.style.display = "block"; 139 } 140 141 if (popupText.innerHTML.length > 500) { 142 popupText.innerHTML = truthCardText.slice(0, 470) + "..."; 143 showBtn.style.display = "block"; 144 hideBtn.style.display = "none"; 145 } else { 146 popupText.innerHTML = truthCardText; 147 showBtn.style.display = "none"; 148 hideBtn.style.display = "none"; 149 } 150 151 showBtn.addEventListener("click", function () { 152 // console.log("click"); 153 popupText.innerHTML = truthCardText; 154 showBtn.style.display = "none"; 155 hideBtn.style.display = "block"; 156 }); 157 158 hideBtn.addEventListener("click", function () { 159 // console.log("click"); 160 popupText.innerHTML = truthCardText.slice(0, 470) + "..."; 161 showBtn.style.display = "block"; 162 hideBtn.style.display = "none"; 163 }); 164 });
165 }); 166} 167 168// -------------------------------------------- end ÐаÑÑоÑки пÑедложений --------------------------------------------- 169//#endregion 170 171// ---------------------------------- start плаваÑÑие кнопки: ---------------------------------- 172//#region fly buttons 173// кнопка ввеÑÑ : 174const btnToUp = document.querySelector(".btn-go-up"); 175if (btnToUp) { 176 document.addEventListener("scroll", () => { 177 if (window.scrollY > 600) { 178 btnToUp.classList.remove("btn-go-up_hide"); 179 } else { 180 btnToUp.classList.add("btn-go-up_hide"); 181 } 182 }); 183 184 btnToUp.addEventListener("click", () => { 185 window.scrollTo({ 186 top: 0, 187 behavior: "smooth", 188 }); 189 }); 190} 191 192// кнопка ÑоÑиал: 193 194// const socialBtn = document.querySelector(".social-btn"); 195 196// if (socialBtn) { 197// const socialBlock = document.querySelector(".social-btn__wrap"); 198// socialBtn.addEventListener("click", () => { 199// socialBtn.classList.toggle("social-btn_active"); 200// socialBlock.classList.toggle("social-btn__wrap_active"); 201// }); 202// } 203 204// ---------------------------------- end плаваÑÑие кнопки: ---------------------------------- 205//#endregion 206 207// ---------------------------------- start оÑпÑавка и валидаÑÐ¸Ñ ÑоÑÐ¼Ñ ---------------------------------- 208//#region send forms 209const formAll = document.querySelectorAll(".form"); 210 211if (formAll) { 212 formAll.forEach((form) => { 213 form.addEventListener("submit", sendForm); 214 215 async function sendForm(e) { 216 e.preventDefault(); 217 218 let errore = formvalidation(form); 219 220 if (errore === 0) { 221 let formData = new FormData(form); 222 223 const resPopup = document.getElementById("popup-calc_result"); 224 if (resPopup && resPopup.classList.contains("open")) { 225 const img = resPopup.querySelector(".popup__result-img").querySelector("img").src; 226 const price = resPopup.querySelector(".popup__result-price").textContent; 227 const description = resPopup.querySelector(".popup__result-desc").textContent; 228 const params = resPopup.querySelector(".popup__result-params").textContent; 229 formData.append("image", img); 230 formData.append("price", price); 231 formData.append("description", description); 232 formData.append("params", params); 233 } 234 235 const wrapper = form.closest(".form-wrap"); 236 wrapper.classList.add("_sending"); 237 238 let response = await fetch("/backend/post-mail.php", { 239 method: "POST", 240 body: formData, 241 }); 242 243 if (response.ok) { 244 form.reset(); 245 // if(document.querySelector(".popup.open")){ 246 // const popupActiveSend = document.querySelector(".popup.open"); 247 // popupClose(popupActiveSend); 248 249 // } 250 251 popupOpen(document.getElementById("popup-success")); 252 $("#popup-success").fadeIn(200); 253 wrapper.classList.remove("_sending"); 254 } else { 255 wrapper.classList.remove("_sending"); 256 } 257 } else { 258 alert("ÐаполниÑе обÑзаÑелÑнÑе полÑ"); 259 } 260 } 261 }); 262 263 function formvalidation(item) { 264 let error = 0; 265 let formReq = item.querySelectorAll("._req"); 266 267 for (let index = 0; index < formReq.length; index++) { 268 const input = formReq[index]; 269 270 formRemoveError(input); 271 272 if (input.classList.contains("_email")) { 273 if (emailTest(input)) { 274 formAddError(input); 275 error++; 276 } 277 } else if (input.getAttribute("type") === "checkbox" && input.checked === false) { 278 formAddError(input); 279 error++; 280 } else { 281 if (input.value === "") { 282 formAddError(input); 283 error++; 284 } 285 } 286 } 287 return error; 288 } 289 290 function formAddError(input) { 291 input.parentElement.classList.add("_error"); 292 input.classList.add("_error"); 293 } 294 295 function formRemoveError(input) { 296 input.parentElement.classList.remove("_error"); 297 input.classList.remove("_error"); 298 } 299 300 function emailTest(input) { 301 return !/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,8})+$/.test(input.value); 302 } 303} 304 305// ---------------------------------- end оÑпÑавка и валидаÑÐ¸Ñ ÑоÑÐ¼Ñ ---------------------------------- 306//#endregion 307 308// ------------------------- start WEBP: --------------------------- 309//#region webp class 310function testWebP(callback) { 311 let webP = new Image(); 312 webP.onload = webP.onerror = function () {
313 callback(webP.height == 2); 314 }; 315 webP.src = 316 "data:image/webp;base64,UklGRjoAAABXRUJQVlA4IC4AAACyAgCdASoCAAIALmk0mk0iIiIiIgBoSygABc6WWgAA/veff/0PP8bA//LwYAAA"; 317} 318testWebP(function (support) { 319 let className = support === true ? "webp" : "no-webp"; 320 document.documentElement.classList.add(className); 321}); 322 323// ------------------------- end WEBP: --------------------------- 324//#endregion 325 326// -------------------------------------------- start slider: --------------------------------------------- 327//#region slider 328 329new Swiper(".banner_swiper", { 330 // Optional parameters 331 direction: "horizontal", 332 loop: true, 333 // allowTouchMove: true, 334 // slidesPerView: auto, // ÑколÑко ÑлаиÌдов показÑваÑÑ, можно дÑобно 335 slidesPerView: 1, // ÑколÑко ÑлаиÌдов показÑваÑÑ, можно дÑобно 336 // slidersPerGroup: 3, // ÑколÑко ÑлаиÌдов в гÑÑппе 337 // centeredSlides: true, //вÑÑавнивание ÑлаиÌдов по ÑенÑÑÑ 338 // initialSlide: 0, //наÑалÑнÑй ÑлаиÌд (c нÑлÑ) 339 effect: "fade", 340 spaceBetween: 500, 341 // slideToClickedSlide: true, //пеÑелиÑÑÑвание ÑлаиÌдов по ÐºÐ»Ð¸ÐºÑ 342 // grabCursor: true, //менÑÐµÑ ÐºÑÑÑÐ¾Ñ Ð¿Ñи наведении на ÑÑÐºÑ 343 watchOverflow: true, //оÑклÑÑÐ°ÐµÑ ÑÐ»Ð°Ð¹Ð´ÐµÑ ÐµÑли вÑе ÑÐ»Ð°Ð¹Ð´Ñ Ð²Ñ Ð¾Ð´ÑÑ Ð² облаÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи 344 345 // Navigation arrows 346 navigation: { 347 nextEl: ".swiper-button-next-banner", 348 prevEl: ".swiper-button-prev-banner", 349 }, 350 autoplay: { 351 delay: 7000, 352 }, 353 // pagination: { 354 // el: ".swiper-pagination", 355 // clickable: true, 356 // }, 357 pagination: { 358 el: ".swiper-pagination-banner", 359 type: "fraction", 360 }, 361 // mousewheel: { //пеÑелиÑÑÑвание ÑлаиÌдов по мÑÑке 362 // sensitivity: 1, 363 // eventsTarget: ".news__slider", 364 // }, 365 // keyboard: { //пеÑелиÑÑÑвание ÑлаиÌдов по нажаÑÐ¸Ñ ÐºÐ»Ð°Ð²Ð¸Ñ 366 // enabled: true, 367 // onlyInViewport: true, 368 // // pageUpDown: true, 369 // }, 370 breakpoints: { 371 0: { 372 // slidesPerView: 1, 373 // spaceBetween: 20, 374 }, 375 960: { 376 // spaceBetween: 40, 377 }, 378 }, 379}); 380// setTimeout(function() { 381// const iframe = document.getElementById("banner-2"); 382// if (iframe) { 383// iframe.src = iframe.dataset.src; 384// } 385// }, 2000); 386// setTimeout(function() { 387// const iframe = document.getElementById("banner-3"); 388// if (iframe) { 389// iframe.src = iframe.dataset.src; 390// } 391// }, 4000); 392 393new Swiper(".offers_swiper", { 394 // Optional parameters 395 direction: "horizontal", 396 speed: 1000, 397 // loop: true, 398 // allowTouchMove: true, 399 // slidesPerView: auto, // ÑколÑко ÑлаиÌдов показÑваÑÑ, можно дÑобно 400 slidesPerView: 2, // ÑколÑко ÑлаиÌдов показÑваÑÑ, можно дÑобно 401 // slidersPerGroup: 3, // ÑколÑко ÑлаиÌдов в гÑÑппе 402 // centeredSlides: true, //вÑÑавнивание ÑлаиÌдов по ÑенÑÑÑ 403 // initialSlide: 0, //наÑалÑнÑй ÑлаиÌд (c нÑлÑ) 404 405 spaceBetween: 25, 406 // slideToClickedSlide: true, //пеÑелиÑÑÑвание ÑлаиÌдов по ÐºÐ»Ð¸ÐºÑ 407 // grabCursor: true, //менÑÐµÑ ÐºÑÑÑÐ¾Ñ Ð¿Ñи наведении на ÑÑÐºÑ 408 watchOverflow: true, //оÑклÑÑÐ°ÐµÑ ÑÐ»Ð°Ð¹Ð´ÐµÑ ÐµÑли вÑе ÑÐ»Ð°Ð¹Ð´Ñ Ð²Ñ Ð¾Ð´ÑÑ Ð² облаÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи 409 410 // Navigation arrows 411 navigation: { 412 nextEl: ".swiper-button-next-offer", 413 prevEl: ".swiper-button-prev-offer", 414 }, 415 // autoplay: { 416 // delay: 3000, 417 // }, 418 // pagination: { 419 // el: ".swiper-pagination", 420 // clickable: true, 421 // }, 422 pagination: { 423 el: ".swiper-pagination", 424 type: "fraction", 425 }, 426 // mousewheel: { //пеÑелиÑÑÑвание ÑлаиÌдов по мÑÑке 427 // sensitivity: 1, 428 // eventsTarget: ".news__slider", 429 // }, 430 // keyboard: { //пеÑелиÑÑÑвание ÑлаиÌдов по нажаÑÐ¸Ñ ÐºÐ»Ð°Ð²Ð¸Ñ 431 // enabled: true, 432 // onlyInViewport: true, 433 // // pageUpDown: true, 434 // }, 435 breakpoints: { 436 0: { 437 slidesPerView: 1, 438 // spaceBetween: 20, 439 }, 440 660: { 441 spaceBetween: 15, 442 slidesPerView: 2, 443 444 // spaceBetween: 40, 445 }, 446 960: { 447 spaceBetween: 25, 448 slidesPerView: 2, 449 450 // spaceBetween: 40, 451 }, 452 }, 453 on: { 454 slideChange: function (e) {
455 this.slides.forEach((item) => { 456 if (!item.classList.contains("swiper-slide-active") && !item.classList.contains("swiper-slide-next")) { 457 item.querySelector(".off-card__img").classList.remove("fade-in-right-1"); 458 } 459 }); 460 }, 461 slideNextTransitionEnd: function () { 462 const activeSlide = this.slides.filter((slide) => slide.classList.contains("swiper-slide-active"))[0]; 463 const index = this.slides.indexOf(activeSlide); 464 this.slides[index].querySelector(".off-card__img").classList.add("fade-in-right-1"); 465 this.slides[index + 1].querySelector(".off-card__img").classList.add("fade-in-right-1"); 466 if (this.slides[index + 2]) { 467 this.slides[index + 2].querySelector(".off-card__img").classList.add("fade-in-right-1"); 468 } 469 }, 470 slidePrevTransitionEnd: function () { 471 const activeSlide = this.slides.filter((slide) => slide.classList.contains("swiper-slide-active"))[0]; 472 const index = this.slides.indexOf(activeSlide); 473 if (this.slides[index]) { 474 this.slides[index].querySelector(".off-card__img").classList.add("fade-in-right-1"); 475 } 476 if (this.slides[index + 1]) { 477 this.slides[index + 1].querySelector(".off-card__img").classList.add("fade-in-right-1"); 478 } 479 }, 480 }, 481}); 482 483const offerActive = document.querySelector('.offers__slider-item.swiper-slide-active'); 484const offerNext = document.querySelector('.offers__slider-item.swiper-slide-next'); 485 486 487if (offerActive) { 488 const offerActiveImg = offerActive.querySelector('.animation_img') 489 setTimeout(function () { 490 // circles.forEach((item) => { 491 offerActiveImg.classList.add('fade-in-right-1'); 492 // }) 493 }, 500); 494} 495 496if (offerNext) { 497 const offerNextImg = offerNext.querySelector('.animation_img') 498 499 setTimeout(function () { 500 // circles.forEach((item) => { 501 offerNextImg.classList.add('fade-in-right-1'); 502 // }) 503 }, 800); 504} 505 506const thumbs_swiper = new Swiper(".results_top_swiper", { 507 loop: true, 508 spaceBetween: 15, 509 slidesPerView: 4, // ÑколÑко ÑлаиÌдов показÑваÑÑ, можно дÑобно 510 freeMode: true, // пеÑелиÑÑÑвание ÑлаиÌдов пÑи Ñвободном положении 511 watchSlidesProgress: true, //пеÑелиÑÑÑвание ÑлаиÌдов пÑи Ñвободном положении 512 breakpoints: { 513 0: { 514 slidesPerView: 1, 515 // spaceBetween: 20, 516 }, 517 830: { 518 // spaceBetween: 40, 519 slidesPerView: 4, // ÑколÑко ÑлаиÌдов показÑваÑÑ, можно дÑобно 520 }, 521 }, 522}); 523 524const resultsBotSwiper = new Swiper(".results_bot_swiper", { 525 // Optional parameters 526 // direction: "horizontal", 527 loop: true, 528 speed: 1000, 529 // allowTouchMove: true, 530 // slidesPerView: auto, // ÑколÑко ÑлаиÌдов показÑваÑÑ, можно дÑобно 531 // slidesPerView: 1, // ÑколÑко ÑлаиÌдов показÑваÑÑ, можно дÑобно 532 // slidersPerGroup: 3, // ÑколÑко ÑлаиÌдов в гÑÑппе 533 // centeredSlides: true, //вÑÑавнивание ÑлаиÌдов по ÑенÑÑÑ 534 // initialSlide: 0, //наÑалÑнÑй ÑлаиÌд (c нÑлÑ) 535 536 spaceBetween: 100, 537 thumbs: { 538 swiper: thumbs_swiper, 539 }, 540 // autoplay: { 541 // delay: 5000, 542 // }, 543 navigation: { 544 nextEl: ".swiper-button-next_res", 545 prevEl: ".swiper-button-prev_res", 546 }, 547 // slideToClickedSlide: true, //пеÑелиÑÑÑвание ÑлаиÌдов по ÐºÐ»Ð¸ÐºÑ 548 // grabCursor: true, //менÑÐµÑ ÐºÑÑÑÐ¾Ñ Ð¿Ñи наведении на ÑÑÐºÑ 549 // watchOverflow: true, //оÑклÑÑÐ°ÐµÑ ÑÐ»Ð°Ð¹Ð´ÐµÑ ÐµÑли вÑе ÑÐ»Ð°Ð¹Ð´Ñ Ð²Ñ Ð¾Ð´ÑÑ Ð² облаÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи 550 551 // Navigation arrows 552 // navigation: { 553 // nextEl: ".swiper-button-next_res-card__right", 554 // prevEl: ".swiper-button-prev_res-card__right", 555 // }, 556 557 // autoplay: { 558 // delay: 3000, 559 // }, 560 // pagination: { 561 // el: ".swiper-pagination", 562 // clickable: true, 563 // }, 564 // pagination: { 565 // el: ".swiper-pagination", 566 // // type: "fraction", 567 // clickable: true, 568 // }, 569 // mousewheel: { //пеÑелиÑÑÑвание ÑлаиÌдов по мÑÑке 570 // sensitivity: 1, 571 // eventsTarget: ".news__slider", 572 // }, 573 // keyboard: { //пеÑелиÑÑÑвание ÑлаиÌдов по нажаÑÐ¸Ñ ÐºÐ»Ð°Ð²Ð¸Ñ 574 // enabled: true, 575 // onlyInViewport: true, 576 // // pageUpDown: true, 577 // }, 578 breakpoints: { 579 0: { 580 // slidesPerView: 1, 581 // spaceBetween: 20, 582 }, 583 960: { 584 // spaceBetween: 40, 585 }, 586 }, 587 on: { 588 slideNextTransitionEnd: function () { 589 const activeSlide = this.slides.filter((slide) => slide.classList.contains("swiper-slide-active"))[0]; 590 activeSlide.querySelectorAll(".circle-animate").forEach((el) => { 591 el.classList.add("circle-animate_active") 592 })
593 this.slides.forEach((item) => { 594 item.querySelectorAll(".circle-animate").forEach((el) => { 595 if (!el.closest(".swiper-slide-active")) { 596 // console.log(el); 597 el.classList.remove("circle-animate_active") 598 } 599 }) 600 }); 601 }, 602 slidePrevTransitionEnd: function () { 603 const activeSlide = this.slides.filter((slide) => slide.classList.contains("swiper-slide-active"))[0]; 604 activeSlide.querySelectorAll(".circle-animate").forEach((el) => { 605 el.classList.add("circle-animate_active") 606 }) 607 this.slides.forEach((item) => { 608 item.querySelectorAll(".circle-animate").forEach((el) => { 609 if (!el.closest(".swiper-slide-active")) { 610 // console.log(el); 611 el.classList.remove("circle-animate_active") 612 } 613 }) 614 }); 615 }, 616 }, 617}); 618 619const circles = document.querySelector('.results__bot-item.swiper-slide-active'); 620 621 622if (circles) { 623 const circlesItem = circles.querySelectorAll('.circle-animate') 624 setTimeout(function () { 625 circlesItem.forEach((item) => { 626 item.classList.add('circle-animate_active'); 627 }) 628 }, 500); 629} 630 631 632new Swiper(".res-card_swiper-1", { 633 direction: "horizontal", 634 slidesPerView: 1, 635 spaceBetween: 50, 636 nested: true, 637 watchOverflow: true, //оÑклÑÑÐ°ÐµÑ ÑÐ»Ð°Ð¹Ð´ÐµÑ ÐµÑли вÑе ÑÐ»Ð°Ð¹Ð´Ñ Ð²Ñ Ð¾Ð´ÑÑ Ð² облаÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи 638 navigation: { 639 nextEl: ".swiper-button-next_res-card__right-1", 640 prevEl: ".swiper-button-prev_res-card__right-1", 641 }, 642 pagination: { 643 el: ".swiper-pagination-res-1", 644 clickable: true, 645 }, 646 breakpoints: { 647 0: { 648 // slidesPerView: 1, 649 // spaceBetween: 20, 650 }, 651 960: { 652 // spaceBetween: 40, 653 }, 654 }, 655}); 656 657// // if (deg <= 270) { 658// // for (let i = 0; i <= 270; i++) { 659// // let deg = 0; 660// // setTimeout(function () { 661// // deg += 1; 662// // }, 1000); 663// // circle25.style.backgroundImage = `conic-gradient(from 0deg at 50% 50%, #CDFAF6 0deg, #CDFAF6 ${deg}deg, #FAB502 ${deg}deg, #117074 360deg)`; 664 665// // // requestAnimationFrame(circle25 666 667// // } 668 669// const target = 270; 670// let deg = 0; 671 672// while (deg <= target) { 673// setTimeout(function () { 674// deg++; 675// console.log(deg); 676// circle25.style.backgroundImage = `conic-gradient(from 0deg at 50% 50%, #CDFAF6 0deg, #CDFAF6 ${deg}deg, #FAB502 ${deg}deg, #117074 360deg)`; 677// }, 10); 678 679// } 680 681// // } 682 683 684 685new Swiper(".res-card_swiper-2", { 686 direction: "horizontal", 687 slidesPerView: 1, // ÑколÑко ÑлаиÌдов показÑваÑÑ, можно дÑобно 688 spaceBetween: 50, 689 nested: true, 690 watchOverflow: true, //оÑклÑÑÐ°ÐµÑ ÑÐ»Ð°Ð¹Ð´ÐµÑ ÐµÑли вÑе ÑÐ»Ð°Ð¹Ð´Ñ Ð²Ñ Ð¾Ð´ÑÑ Ð² облаÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи 691 navigation: { 692 nextEl: ".swiper-button-next_res-card__right-2", 693 prevEl: ".swiper-button-prev_res-card__right-2", 694 }, 695 pagination: { 696 el: ".swiper-pagination-res-2", 697 // type: "fraction", 698 clickable: true, 699 }, 700 breakpoints: { 701 0: { 702 // slidesPerView: 1, 703 // spaceBetween: 20, 704 }, 705 960: { 706 // spaceBetween: 40, 707 }, 708 }, 709}); 710 711new Swiper(".res-card_swiper-3", { 712 direction: "horizontal", 713 slidesPerView: 1, // ÑколÑко ÑлаиÌдов показÑваÑÑ, можно дÑобно 714 spaceBetween: 50, 715 nested: true, 716 watchOverflow: true, //оÑклÑÑÐ°ÐµÑ ÑÐ»Ð°Ð¹Ð´ÐµÑ ÐµÑли вÑе ÑÐ»Ð°Ð¹Ð´Ñ Ð²Ñ Ð¾Ð´ÑÑ Ð² облаÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи 717 navigation: { 718 nextEl: ".swiper-button-next_res-card__right-3", 719 prevEl: ".swiper-button-prev_res-card__right-3", 720 }, 721 pagination: { 722 el: ".swiper-pagination-res-3", 723 clickable: true, 724 }, 725 breakpoints: { 726 0: { 727 // slidesPerView: 1, 728 // spaceBetween: 20, 729 }, 730 960: { 731 // spaceBetween: 40, 732 }, 733 }, 734}); 735 736new Swiper(".res-card_swiper-4", { 737 direction: "horizontal", 738 slidesPerView: 1, // ÑколÑко ÑлаиÌдов показÑваÑÑ, можно дÑобно 739 spaceBetween: 50, 740 nested: true, 741 watchOverflow: true, //оÑклÑÑÐ°ÐµÑ ÑÐ»Ð°Ð¹Ð´ÐµÑ ÐµÑли вÑе ÑÐ»Ð°Ð¹Ð´Ñ Ð²Ñ Ð¾Ð´ÑÑ Ð² облаÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи 742 navigation: { 743 nextEl: ".swiper-button-next_res-card__right-4", 744 prevEl: ".swiper-button-prev_res-card__right-4", 745 }, 746 pagination: { 747 el: ".swiper-pagination-res-4", 748 clickable: true, 749 }, 750 pageUpDown: true, 751 // }, 752 breakpoints: { 753 0: { 754 // slidesPerView: 1, 755 // spaceBetween: 20, 756 }, 757 960: { 758 // spaceBetween: 40, 759 }, 760 }, 761}); 762 763new Swiper(".news_swiper", { 764 direction: "horizontal", 765 // slidesPerView: 1, // ÑколÑко ÑлаиÌдов показÑваÑÑ, можно дÑобно 766 spaceBetween: 500, 767 // nested: true, 768 watchOverflow: true, //оÑклÑÑÐ°ÐµÑ ÑÐ»Ð°Ð¹Ð´ÐµÑ ÐµÑли вÑе ÑÐ»Ð°Ð¹Ð´Ñ Ð²Ñ Ð¾Ð´ÑÑ Ð² облаÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи 769 navigation: { 770 nextEl: ".swiper-button-next_res-card__news", 771 prevEl: ".swiper-button-prev_res-card__news", 772 }, 773 pagination: { 774 el: ".swiper-pagination-news", 775 clickable: true, 776 }, 777 pageUpDown: true, 778 // }, 779 breakpoints: { 780 0: { 781 // slidesPerView: 1, 782 // spaceBetween: 20, 783 }, 784 960: { 785 // spaceBetween: 40, 786 }, 787 }, 788}); 789 790// -------------------------------------------- end slider: --------------------------------------------- 791//#endregion 792 793// -------------------------------------------- start popup: --------------------------------------------- 794//#region popup 795// вÑвод вÑÐµÑ Ð¿Ð¾Ð¿Ð°Ð¿ в ÑпиÑок: 796const popupArr = document.querySelectorAll(".popup"); 797if (popupArr.length > 0) { 798 // console.log("ÑеÑÑ"); 799 popupArr.forEach((popup) => { 800 const li = document.createElement("li"); 801 li.classList.add("popup__item"); 802 li.innerHTML = `<button style="margin-bottom: 10px" class="btn btn_gray popup-link" data-popup="${popup.getAttribute( 803 "id" 804 )}">${popup.getAttribute("id")}</button>`; 805 if (document.querySelector(".popup__list")) { 806 document.querySelector(".popup__list").appendChild(li); 807 } 808 809 popup.classList.add("active"); 810 }); 811} 812 813const popupLinks = document.querySelectorAll(".popup-link"); 814const lockPadding = document.querySelectorAll(".lock-padding"); 815// const btn = document.querySelector(".project-btn"); 816 817let unlock = true; 818const timeout = 800; 819 820if (popupLinks.length > 0) { 821 for (let index = 0; index < popupLinks.length; index++) { 822 const popupLink = popupLinks[index]; 823 popupLink.addEventListener("click", function (e) { 824 const popupName = popupLink.getAttribute("data-popup"); 825 826 // ÑÑнкÑионал возвÑаÑа на пÑедÑдÑÑее окно: 827 const curentPopup = document.getElementById(popupName); //полÑÑаем id попап-окна 828 const dataStep = popupLink.getAttribute("data-step"); 829 if (dataStep) { 830 const backBtn = curentPopup.querySelector(".calc-cansel-btn-no"); 831 if (backBtn) { 832 const link = `popup-calc_${dataStep}`; 833 backBtn.setAttribute("data-popup", link); 834 } 835 } 836 837 popupOpen(curentPopup); 838 e.preventDefault(); 839 });
840 } 841} 842 843const popupCloseIcon = document.querySelectorAll(".popup-close"); 844if (popupCloseIcon.length > 0) { 845 for (let index = 0; index < popupCloseIcon.length; index++) { 846 const el = popupCloseIcon[index]; 847 el.addEventListener("click", function (e) { 848 // console.log("ÑеÑÑ"); 849 popupClose(el.closest(".popup.open")); //ближайÑий ÑодиÑÐµÐ»Ñ ÐºÐ»Ð°ÑÑа popup 850 e.preventDefault(); 851 }); 852 } 853} 854 855function popupOpen(curentPopup) { 856 if (curentPopup && unlock) { 857 const popupActive = document.querySelector(".popup.open"); 858 // закÑÑваем ÑекÑÑий оÑкÑÑÑÑй попап, еÑли он еÑÑÑ 859 if (popupActive) { 860 if (popupActive.classList.contains("popup-calc_result")) { 861 popupActive.style.zIndex = 800; 862 } else { 863 popupClose(popupActive, false); 864 } 865 } else { 866 bodyLock(); 867 } 868 // console.log(curentPopup); 869 curentPopup.classList.add("open"); 870 curentPopup.addEventListener("click", function (e) { 871 // console.log("ÑеÑÑ"); 872 if (!e.target.closest(".popup__content")) { 873 // еÑли клик бÑл по облаÑÑи вокÑÑг попапа Ñо ниÑего не делаем, еÑли ÑÑо не калÑкÑлÑÑÐ¾Ñ 874 if (!curentPopup.classList.contains("popup-calc")) { 875 popupClose(e.target.closest(".popup.open")); 876 } 877 } 878 }); 879 } 880} 881 882function popupClose(popupActive, doUnlock = true) { 883 // console.log("popupClose"); 884 if (unlock) { 885 popupActive.classList.remove("open"); 886 if (doUnlock) { 887 const popupActiveMore = document.querySelector(".popup.open"); 888 if (!popupActiveMore) { 889 bodyUnLock(); 890 } 891 } 892 } 893} 894 895// добавлÑем боди padding-right пÑи оÑкÑÑÑии попапа, на ÑиÑÐ¸Ð½Ñ ÑкÑолл-баÑа 896function bodyLock() { 897 const lockPaddingValue = window.innerWidth - document.querySelector(".header").offsetWidth + "px"; 898 // console.log(lockPaddingValue); 899 for (let index = 0; index < lockPadding.length; index++) { 900 const el = lockPadding[index]; 901 el.style.marginRight = lockPaddingValue; 902 // console.log(el.style.marginRight); 903 } 904 body.style.paddingRight = lockPaddingValue; 905 // console.log(body.style.paddingRight); 906 body.classList.add("lock"); 907 908 unlock = false; 909 setTimeout(function () { 910 unlock = true; 911 }, timeout); 912} 913 914function bodyUnLock() { 915 setTimeout(function () { 916 for (let index = 0; index < lockPadding.length; index++) { 917 const el = lockPadding[index]; 918 el.style.marginRight = "0px"; 919 } 920 body.style.paddingRight = "0px"; 921 body.classList.remove("lock"); 922 }, timeout); 923 924 unlock = false; 925 setTimeout(function () { 926 unlock = true; 927 }, timeout); 928} 929 930document.addEventListener("keydown", function (e) { 931 if (e.key === "Escape") { 932 const popupActive = document.querySelector(".popup.open"); 933 popupClose(popupActive); 934 } 935}); 936 937// ÑбÑÐ¾Ñ Ð¿Ð°ÑамеÑÑов калÑкÑлÑÑоÑа: 938const canselCalcBtn = document.querySelector(".calc-cansel-btn-yes"); 939if (canselCalcBtn) { 940 canselCalcBtn.addEventListener("click", function (e) { 941 window.history.pushState({}, document.title, window.location.pathname); 942 urlParams = new URLSearchParams(window.location.search); 943 location.reload(); 944 }); 945} 946 947const canselCalcBtnNo = document.querySelector(".calc-cansel-btn-no"); 948if (canselCalcBtnNo) { 949 canselCalcBtnNo.addEventListener("click", function (e) { 950 popupClose(e.target.closest(".popup")); 951 }); 952} 953 954// -------------------------------------------- end popup: --------------------------------------------- 955//#endregion 956 957// // -------------------------------------------- start BURGER: --------------------------------------------- 958// //#region burger 959// document.addEventListener('DOMContentLoaded', function() { 960// // ФÑнкÑÐ¸Ñ Ð´Ð»Ñ Ð¾ÑкÑÑÑÐ¸Ñ popup 961// function popupOpen(popupElement) { 962// // ÐÑоÑÑой пÑимеÑ: делаем popup видимÑм 963// popupElement.style.display = 'block'; 964// // ÐдеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ добавиÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð¿ÑокÑÑÑки body и дÑÑгие ÑÑÑекÑÑ 965// } 966 967// // ФÑнкÑÐ¸Ñ Ð´Ð»Ñ Ð·Ð°ÐºÑÑÑÐ¸Ñ popup 968// function popupClose(popupElement) { 969// // ÐÑоÑÑой пÑимеÑ: ÑкÑÑваем popup 970// popupElement.style.display = 'none'; 971// // ÐдеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ добавиÑÑ ÑазблокиÑÐ¾Ð²ÐºÑ body и дÑÑгие ÑÑÑекÑÑ 972// } 973 974// // ÐолÑÑаем ÑлеменÑÑ Ð±ÑÑгеÑ-Ð¼ÐµÐ½Ñ Ð¸ popup 975// const burger = document.querySelector(".burger"); 976// if (!burger) return; // еÑли бÑÑгеÑ-ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð½Ðµ найден, вÑÑ Ð¾Ð´Ð¸Ð¼ 977 978// const popup = document.querySelector("#popup-menu"); 979// const popupContent = popup.querySelector(".popup__content"); 980 981// // ÐолÑÑаем оÑигиналÑное навигаÑионное Ð¼ÐµÐ½Ñ 982// const originalNav = document.querySelector(".header__nav"); 983// // ÐÑли нÑжно веÑнÑÑÑ Ð¼ÐµÐ½Ñ Ð² иÑÑ Ð¾Ð´Ð½Ð¾Ðµ меÑÑо пÑи закÑÑÑии popup 984// const headerNavWrap = document.querySelector(".header__nav-wrap"); 985 986// // ÐбÑабоÑÑик клика по бÑÑгеÑÑ 987// burger.addEventListener("click", function(e) { 988// e.preventDefault(); 989// // ÐÑкÑÑваем popup 990// popupOpen(popup); 991// popup.classList.add("open"); 992 993// // СоздаÑм клон оÑигиналÑного Ð¼ÐµÐ½Ñ (глÑбокое клониÑование) 994// const navClone = originalNav.cloneNode(true); 995 996// // ÐÑиÑаем ÑодеÑжимое popup и вÑÑавлÑем клон 997// popupContent.innerHTML = ""; 998// popupContent.appendChild(navClone); 999 1000// // ÐобавлÑем делегиÑованнÑй обÑабоÑÑик Ð´Ð»Ñ ÐºÐ»Ð¸ÐºÐ¾Ð² по ÑÑÑлкам в popup 1001// popupContent.addEventListener("click", onPopupContentClick);
1002// }); 1003 1004// // ÐбÑабоÑÑик клика по иконке закÑÑÑÐ¸Ñ popup 1005// const popupCloseIcon = popup.querySelector(".popup__close"); 1006// if (popupCloseIcon) { 1007// popupCloseIcon.addEventListener("click", function(e) { 1008// e.preventDefault(); 1009// closeBurgerPopup(); 1010// }); 1011// } 1012 1013// // ÐелегиÑованнÑй обÑабоÑÑик: пÑи клике по ÑÑÑлке внÑÑÑи клона закÑÑваем popup 1014// function onPopupContentClick(e) { 1015// const link = e.target.closest("a"); 1016// if (link) { 1017// // ÐобавлÑем неболÑÑÑÑ Ð·Ð°Ð´ÐµÑжкÑ, ÑÑÐ¾Ð±Ñ Ð±ÑаÑÐ·ÐµÑ ÑÑпел обÑабоÑаÑÑ Ð¿ÐµÑÐµÑ Ð¾Ð´ по ÑÑÑлке 1018// setTimeout(() => { 1019// closeBurgerPopup(); 1020// }, 100); 1021// } 1022// } 1023 1024// // ФÑнкÑÐ¸Ñ Ð·Ð°ÐºÑÑÑÐ¸Ñ popup и оÑиÑÑки клониÑованного Ð¼ÐµÐ½Ñ 1025// function closeBurgerPopup() { 1026// popup.classList.remove("open"); 1027// popupClose(popup); 1028// // УдалÑем делегиÑованнÑй обÑабоÑÑик, ÑÑÐ¾Ð±Ñ Ð¸Ð·Ð±ÐµÐ¶Ð°ÑÑ Ð¿Ð¾Ð²ÑоÑного навеÑÐ¸Ð²Ð°Ð½Ð¸Ñ 1029// popupContent.removeEventListener("click", onPopupContentClick); 1030// // ÐÑли ÑÑебÑеÑÑÑ Ð²ÐµÑнÑÑÑ Ð¾ÑигиналÑное Ð¼ÐµÐ½Ñ Ð¾Ð±ÑаÑно в иÑÑ Ð¾Ð´Ð½Ð¾Ðµ меÑÑо: 1031// if (!headerNavWrap.contains(originalNav)) { 1032// headerNavWrap.appendChild(originalNav); 1033// } 1034// } 1035// }); 1036 1037// // -------------------------------------------- end BURGER --------------------------------------------- 1038// //#endregion 1039 1040// -------------------------------------------- start ÐÑки: --------------------------------------------- 1041// //#region cookie 1042// function setCookie(name, value, lifetimeDays = 30, path = "/") { 1043// var expires = ""; 1044// if (lifetimeDays) { 1045// var date = new Date(); 1046// date.setTime(date.getTime() + lifetimeDays * 24 * 60 * 60 * 1000); 1047// expires = "; expires=" + date.toUTCString(); 1048// } 1049// document.cookie = name + "=" + (value || "") + expires + "; path=" + path; 1050// } 1051 1052// function getCookie(name) { 1053// var nameEQ = name + "="; 1054// var cookies = document.cookie.split(";"); 1055// for (var i = 0; i < cookies.length; i++) { 1056// var c = cookies[i]; 1057// while (c.charAt(0) == " ") c = c.substring(1, c.length); 1058// if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); 1059// } 1060// return null; 1061// } 1062 1063// if (!getCookie("CookiePolicyAccepted")) { 1064// $(".cookie").show(); 1065// } else { 1066// $(".cookie").hide(); 1067// } 1068 1069// function acceptCookiePolicy() { 1070// // console.log("acceptCookiePolicy"); 1071// setCookie("CookiePolicyAccepted", true); 1072// $(".cookie").fadeTo(500, 0); 1073// setTimeout(() => { 1074// $(".cookie").hide(); 1075// }, 500); 1076// } 1077// function closeCookiePolicyNotification() { 1078// // console.log("closeCookiePolicyNotification"); 1079// $(".cookie").fadeOut(300); 1080// } 1081 1082// const cookieBtn = document.querySelector(".cookie__btn"); 1083// if (cookieBtn) { 1084// cookieBtn.addEventListener("click", function (e) { 1085// // console.log("ÑеÑÑ"); 1086// e.preventDefault(); 1087// acceptCookiePolicy(); 1088// }); 1089// } 1090 1091// const cookieCloseBtn = document.querySelector(".cookie__close"); 1092// if (cookieCloseBtn) { 1093// cookieCloseBtn.addEventListener("click", function (e) { 1094// // console.log("ÑеÑÑ"); 1095// e.preventDefault(); 1096// closeCookiePolicyNotification(); 1097// }); 1098// } 1099// -------------------------------------------- end ÐÑки --------------------------------------------- 1100//#endregion 1101 1102// -------------------------------------------- start ÐаÑÑа --------------------------------------------- 1103//#region ÐаÑÑа 1104 1105// ФÑнкÑÐ¸Ñ ymaps.ready() бÑÐ´ÐµÑ Ð²Ñзвана, когда 1106// загÑÑзÑÑÑÑ Ð²Ñе компоненÑÑ API, а Ñакже когда бÑÐ´ÐµÑ Ð³Ð¾Ñово DOM-деÑево. 1107const map = document.getElementById("map"); 1108const map2 = document.getElementById("mapTwo"); 1109 1110 1111if (map) { 1112 setTimeout(function() { 1113 initMap(); // ÐниÑиализиÑÑем каÑÑÑ ÑеÑез 2 ÑекÑÐ½Ð´Ñ (или дÑÑгое знаÑение) 1114 }, 5000); 1115 1116 1117 // ÐÐ»Ð°Ð²Ð½Ð°Ñ ÑÑнкÑиÑ, вÑзÑваеÑÑÑ Ð¿Ñи запÑÑке ÑкÑипÑа 1118 async function initMap() { 1119 // ÐÑÐ¾Ð¼Ð¸Ñ `ymaps3.ready` бÑÐ´ÐµÑ Ð·Ð°Ñезолвлен, когда загÑÑзÑÑÑÑ Ð²Ñе компоненÑÑ Ð¾Ñновного модÑÐ»Ñ API 1120 await ymaps3.ready; 1121 1122 // ÐмпоÑÑ Ð¼Ð¾Ð´Ñлей Ð´Ð»Ñ ÑлеменÑов ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð° каÑÑе 1123 const { YMap, YMapDefaultSchemeLayer, YMapDefaultFeaturesLayer, YMapMarker } = ymaps3; 1124 1125 // ÐооÑдинаÑÑ ÑенÑÑа каÑÑÑ 1126 1127 // ÐниÑилиазиÑÑем каÑÑÑ 1128 // Создание обÑекÑа каÑÑÑ 1129 if (document.getElementById("map")) { 1130 const map = new YMap( 1131 // ÐеÑедаÑм ÑÑÑÐ»ÐºÑ Ð½Ð° HTMLElement конÑейнеÑа 1132 document.getElementById("map"), 1133 // ÐеÑедаÑм паÑамеÑÑÑ Ð¸Ð½Ð¸ÑиализаÑии каÑÑÑ 1134 { 1135 location: { 1136 // ÐооÑдинаÑÑ ÑенÑÑа каÑÑÑ 1137 center: [30.312446, 59.902154], 1138 1139 // УÑÐ¾Ð²ÐµÐ½Ñ Ð¼Ð°ÑÑÑабиÑÐ¾Ð²Ð°Ð½Ð¸Ñ 1140 zoom: 12.5, 1141 }, 1142 }, 1143 [ 1144 // ÐобавлÑем Ñлой, ÑкÑÑваем POI 1145 new YMapDefaultSchemeLayer({ 1146 customization: [ 1147 { 1148 tags: { 1149 any: ["poi", "transit"], 1150 }, 1151 elements: "label", 1152 stylers: [ 1153 { 1154 opacity: 1, 1155 }, 1156 ], 1157 }, 1158 ], 1159 }), 1160 new YMapDefaultFeaturesLayer({}), 1161 ] 1162 ); 1163 1164 // ******************************************************************* 1165 // ÐобавлÑем коллекÑÐ¸Ñ Ð¼Ð°ÑкеÑов 1166 const markersArr = [ 1167 { coordinates: [30.312446, 59.902154], title: "Setl center", dataId: 1, img: "/assets/img/pin.svg" }, 1168 ]; 1169 1170 function renderMarks(arr) { 1171 arr.forEach((obj) => { 1172 const imgContainer = makeImgContainer(obj); 1173 const markerElement = makeMarkerElement(obj); 1174 const marker = makeMarker(obj, imgContainer); 1175 imgContainer.append(markerElement); 1176 map.addChild(marker); 1177 }); 1178 } 1179 1180 renderMarks(markersArr); 1181 1182 // ******************************************************************* 1183 1184 // ФÑнкÑÐ¸Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÐºÐ¾Ð½ÑеиÌнеÑа Ð´Ð»Ñ Ð¼Ð°ÑкеÑа 1185 function makeImgContainer(obj) { 1186 const imgContainer = document.createElement("div"); 1187 imgContainer.className = "marker-wrap"; 1188 imgContainer.setAttribute("data-id", obj.dataId); 1189 return imgContainer; 1190 } 1191 1192 // ФÑнкÑÐ¸Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¼Ð°ÑкеÑа 1193 function makeMarkerElement(obj) { 1194 const markerElement = document.createElement("img"); 1195 markerElement.className = "marker"; 1196 markerElement.src = obj.img; 1197 markerElement.title = obj.title; 1198 return markerElement; 1199 } 1200 1201 // ФÑнкÑÐ¸Ñ Ð¸Ð½Ð¸ÑиализаÑии маÑкеÑа 1202 function makeMarker(obj, container) { 1203 const marker = new YMapMarker( 1204 { 1205 coordinates: obj.coordinates, 1206 // draggable: true, 1207 mapFollowsOnDrag: true, 1208 }, 1209 container 1210 ); 1211 return marker; 1212 } 1213 } 1214 } 1215} 1216 1217// -------------------------------------------- end ÐаÑÑа --------------------------------------------- 1218//#endregion 1219
1220// -------------------------------------- start Url Query -------------------------- 1221//#region url query 1222function parseUrlQuery() { 1223 // console.log("*************** СÑаÑÑ ÑÑнкÑии parseUrlQuery ***************"); 1224 const urlParams = new URLSearchParams(window.location.search); 1225 const filterArr = []; 1226 urlParams.forEach((value, key) => { 1227 filterArr.push({ name: key, value: value }); 1228 }); 1229 // console.log(filterArr); 1230 return filterArr; 1231} 1232 1233function updateUrl() { 1234 const queryString = urlParams.toString(); 1235 // ÐÑли queryString пÑÑÑой, иÑполÑзÑем пÑоÑÑо ÑекÑÑий пÑÑÑ, инаÑе добавлÑем знак "?" 1236 const newUrl = queryString ? "?" + queryString : window.location.pathname; 1237 window.history.pushState({}, "", newUrl); 1238} 1239 1240function setUrlQueryParam(param, value) { 1241 urlParams.set(param, value); 1242 updateUrl(); 1243 pastImageName(); 1244} 1245 1246function delUrlQueryParam(param) { 1247 urlParams.delete(param); 1248 updateUrl(); 1249 pastImageName(); 1250} 1251 1252// ÑÑнкÑии доÑÑаÑÑ Ð¿Ð°ÑмаеÑÑÑ Ð¸Ð· URL: 1253function getTemperature() { 1254 const queryParams = parseUrlQuery(); 1255 let temp = ""; 1256 if (queryParams.filter((item) => item.name == "temperature").length) { 1257 const tempParam = queryParams.filter((item) => item.name == "temperature"); 1258 temp = tempParam[0]["value"]; 1259 } 1260 return temp; 1261} 1262 1263function getInsulation() { 1264 const queryParams = parseUrlQuery(); 1265 let ins = ""; 1266 if (queryParams.filter((item) => item.name == "insulation").length) { 1267 const insParam = queryParams.filter((item) => item.name == "insulation"); 1268 ins = insParam[0]["value"]; 1269 } 1270 return ins; 1271} 1272 1273function getHeater() { 1274 const queryParams = parseUrlQuery(); 1275 let heater = ""; 1276 if (queryParams.filter((item) => item.name == "heater").length) { 1277 const heaterParam = queryParams.filter((item) => item.name == "heater"); 1278 heater = heaterParam[0]["value"]; 1279 } 1280 return heater; 1281} 1282 1283function getType() { 1284 const queryParams = parseUrlQuery(); 1285 let type = ""; 1286 if (queryParams.filter((item) => item.name == "type").length) { 1287 const typeParam = queryParams.filter((item) => item.name == "type"); 1288 type = typeParam[0]["value"]; 1289 } 1290 return type; 1291} 1292 1293function getVolume() { 1294 const queryParams = parseUrlQuery(); 1295 let volume = ""; 1296 if (queryParams.filter((item) => item.name == "volume").length) { 1297 const volumeParam = queryParams.filter((item) => item.name == "volume"); 1298 volume = volumeParam[0]["value"]; 1299 } 1300 return volume; 1301} 1302 1303function getSize() { 1304 let size = ""; 1305 const volume = getVolume(); 1306 if (volume) { 1307 if (volume < 25) { 1308 size = "S"; 1309 } else if (volume < 45) { 1310 size = "M"; 1311 } else { 1312 size = "L"; 1313 } 1314 } 1315 return size; 1316} 1317 1318function getFuels() { 1319 const queryParams = parseUrlQuery(); 1320 const fuels = []; 1321 1322 const fuelBtns = document.querySelectorAll(".checkbox__input[name='fuel']"); 1323 const allFuels = []; 1324 fuelBtns.forEach((item) => { 1325 allFuels.push(item.dataset.name); 1326 }); 1327 1328 allFuels.forEach((el) => { 1329 if (queryParams.filter((item) => item.name == el).length) { 1330 let fuelPar = queryParams.filter((item) => item.name == el)[0]["name"]; 1331 fuels.push(fuelPar); 1332 } 1333 }); 1334 return fuels; 1335} 1336 1337function getCheckedFuels() { 1338 const fuelBtns = document.querySelectorAll(".checkbox__input[name='fuel']"); 1339 let numberOfChecked = 0; 1340 fuelBtns.forEach((el) => { 1341 if (el.checked) { 1342 numberOfChecked++; 1343 } 1344 }); 1345 return numberOfChecked; 1346} 1347 1348function getSections() { 1349 const queryParams = parseUrlQuery(); 1350 let sections = ""; 1351 if (queryParams.filter((item) => item.name == "sections").length) { 1352 const sectionsParam = queryParams.filter((item) => item.name == "sections"); 1353 sections = sectionsParam[0]["value"]; 1354 } 1355 return sections; 1356} 1357 1358function getTrk() { 1359 const queryParams = parseUrlQuery(); 1360 let trk = ""; 1361 if (queryParams.filter((item) => item.name == "trk").length) { 1362 const trkParam = queryParams.filter((item) => item.name == "trk"); 1363 trk = trkParam[0]["value"]; 1364 } 1365 return trk; 1366} 1367 1368function getSide() { 1369 const queryParams = parseUrlQuery(); 1370 let side = ""; 1371 if (queryParams.filter((item) => item.name == "side").length) { 1372 const sideParam = queryParams.filter((item) => item.name == "side"); 1373 side = sideParam[0]["value"]; 1374 } 1375 return side; 1376} 1377 1378function getFast() { 1379 const queryParams = parseUrlQuery(); 1380 let fast = ""; 1381 if (queryParams.filter((item) => item.name == "fast").length) { 1382 const fastParam = queryParams.filter((item) => item.name == "fast"); 1383 fast = fastParam[0]["value"]; 1384 } 1385 return fast; 1386} 1387//#endregion 1388 1389// -------------------------------------- start image name -------------------------- 1390//#region image name 1391//ÑÑнкÑÐ¸Ñ ÑоÑмиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð¸ изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ 1392function getImageName() { 1393 // console.log("*************** СÑаÑÑ ÑÑнкÑии getImageName ***************"); 1394 1395 let name = ""; 1396 1397 const queryParams = parseUrlQuery(); 1398 1399 let type = ""; 1400 let size = ""; 1401 // let fuel = ''; 1402 let sections = ""; 1403 let trk = ""; 1404 let side = ""; 1405 let fast = ""; 1406 1407 // console.log(queryParams); 1408 // Ñип 1409 if (getType()) { 1410 type = getType(); 1411 name = `/assets/img/renders/${type}_S.png`; 1412 } 1413 1414 // обÑем 1415 if (getSize()) { 1416 size = getSize(); 1417 name = `/assets/img/renders/${type}_${size}.png`; 1418 } 1419 1420 // ÑекÑии 1421 if (getSections()) { 1422 sections = getSections(); 1423 name = `/assets/img/renders/${type}_${size}_${sections}r.png`; 1424 } 1425 1426 // ÑÑк 1427 if (getTrk()) { 1428 trk = getTrk(); 1429 name = `/assets/img/renders/${type}_${size}_${sections}r_${trk}k.png`; 1430 } 1431 1432 if (getTrk() == 2 && getSide()) { 1433 side = getSide(); 1434 name = `/assets/img/renders/${type}_${size}_${sections}r_${trk}.${side}k.png`; 1435 } 1436 1437 // ÑкоÑоÑÑÐ½Ð°Ñ Ð²ÑдаÑа 1438 if (getFast()) { 1439 fast = getFast() > 0 ? "f" : ""; 1440 1441 if (fast) { 1442 // console.log(fast); 1443 name = `/assets/img/renders/${type}_${size}_${sections}r_${trk}k_${fast}.png`; 1444 1445 if (getTrk() == 2) { 1446 side = getSide(); 1447 name = `/assets/img/renders/${type}_${size}_${sections}r_${trk}.${side}k_${fast}.png`; 1448 } 1449 } 1450 } 1451 1452 // console.log(name); 1453 return name; 1454} 1455 1456//ÑÑнкÑÐ¸Ñ Ð¿Ð¾Ð´ÑÑановки имени изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ 1457function pastImageName() { 1458 // console.log("*************** СÑаÑÑ ÑÑнкÑии pastImageName ***************");
1459 const imageName = getImageName(); 1460 const images = document.querySelectorAll(".popup__type-img"); 1461 images.forEach((item) => { 1462 item.querySelector("img").src = imageName; 1463 }); 1464} 1465 1466// -------------------------------------- end image name -------------------------- 1467//#endregion 1468 1469// -------------------------------------------- start range-slider: --------------------------------------------- 1470//#region range-slider 1471const slider = document.querySelector(".popup__range-slider"); 1472if (slider) { 1473 rangeSliderInit(slider, 5, 5, 60); 1474} 1475 1476function rangeSliderInit(slider, gap, minRange, maxRange) { 1477 // console.log('**************** СÑаÑÑ ÑÑнкÑии rangeSliderInit ***************");'); 1478 const rangeSlider = slider.querySelector(".range-slider"); 1479 1480 // Ñендж инпÑÑÑ: 1481 const rangeInputs = slider.querySelectorAll(".range-inputs-wrap input"); 1482 const rangeInputMax = slider.querySelector(".max-range"); 1483 1484 // оÑновнÑе паÑамеÑÑÑ: 1485 1486 rangeInputMax.min = minRange; 1487 rangeInputMax.max = maxRange; 1488 rangeInputMax.step = gap; 1489 rangeInputMax.value = minRange; 1490 1491 rangeInputs.forEach((input) => { 1492 input.addEventListener("input", (e) => { 1493 const type = getType(); 1494 const sections = getSections(); 1495 //полÑÑаем знаÑÐµÐ½Ð¸Ñ Ð¸Ð· ÑекÑÑовÑÑ Ð¸Ð½Ð¿ÑÑов: 1496 let minVal = minRange; 1497 let maxVal = parseInt(input.value); 1498 let value = parseInt(input.value); 1499 // огÑаниÑиваем знаÑение max инпÑÑа: 1500 if (type == "Cont" && value >= 40) { 1501 input.value = 40; 1502 value = 40; 1503 maxVal = 40; 1504 } 1505 if (sections > 2 && value <= 25) { 1506 input.value = 25; 1507 value = 25; 1508 maxVal = 25; 1509 } else { 1510 if (maxVal >= maxRange) { 1511 rangeInputMax.value = maxRange; 1512 maxVal = maxRange; 1513 } 1514 } 1515 1516 // console.log("parseInt(input.value)", value); 1517 if (maxVal <= minVal) { 1518 value = minRange; 1519 maxVal = minRange; 1520 } 1521 1522 rangeSlider.style.right = `${100 - ((maxVal - minRange) * 100) / (maxRange - minRange)}%`; 1523 1524 const rangeNumbers = document.querySelectorAll(".popup__range-number"); 1525 1526 if (rangeNumbers.length) { 1527 rangeNumbers.forEach((item) => { 1528 item.classList.remove("popup__range-number_active"); 1529 }); 1530 1531 rangeNumbers.forEach((item) => { 1532 if (item.innerHTML.trim() == value) { 1533 item.classList.add("popup__range-number_active"); 1534 } 1535 }); 1536 } 1537 1538 setUrlQueryParam("volume", value); 1539 }); 1540 }); 1541} 1542// -------------------------------------------- end range-slider: --------------------------------------------- 1543//#endregion 1544 1545// -------------------------------------------- start setCurrentParams: --------------------------------------------- 1546//#region setCurrentParams 1547// ÑÑнкÑÐ¸Ñ ÑÑÑановки ÑекÑÑÐ¸Ñ Ð·Ð½Ð°Ñений ÑилÑÑÑов из urlParams: 1548function setCurrentParams(arr) { 1549 // console.log("*************** СÑаÑÑ ÑÑнкÑии setCurrentParams ***************"); // Ð¸Ð¼Ñ ÑÑнкÑии 1550 // console.log(arr); 1551 let urlParams = new URLSearchParams(window.location.search); 1552 1553 if (!arr) { 1554 window.history.pushState({}, document.title, window.location.pathname); 1555 urlParams = new URLSearchParams(window.location.search); 1556 // console.log("ÑбÑÐ¾Ñ ÑилÑÑÑов"); 1557 } 1558 1559 // Ñаг 1 1560 1561 // Ñаг 2 1562 const tempBtns = document.querySelectorAll(".popup__btn_temp"); 1563 if (tempBtns && arr.filter((item) => item.name === "temperature").length) { 1564 tempBtns.forEach((item) => { 1565 if (arr.filter((el) => el.name === "temperature")[0].value === item.dataset.value) { 1566 item.classList.add("popup__btn_temp_active"); 1567 nextStepBtnTwo.classList.remove("btn_disabled"); 1568 } 1569 }); 1570 } 1571 1572 const insulationBtn = document.querySelector(".checkbox__input[data-name='insulation']"); 1573 // console.log(insulationBtn); 1574 1575 if (insulationBtn && arr.filter((item) => item.name === "insulation").length) { 1576 insulationBtn.checked = true; 1577 } 1578 1579 const heaterBtn = document.querySelector(".checkbox__input[data-name='heater']"); 1580 1581 if (arr.filter((item) => item.name === "heater").length) { 1582 heaterBtn.checked = true; 1583 heaterBtn.closest(".checkbox").classList.remove("checkbox_disabled"); 1584 } 1585 1586 // Ñаг 3 1587 const typeBtns = document.querySelectorAll(".popup__type-item"); 1588 if (typeBtns && arr.filter((item) => item.name === "type").length) { 1589 typeBtns.forEach((item) => { 1590 if (arr.filter((el) => el.name === "type")[0].value === item.dataset.value) { 1591 item.classList.add("popup__type-item_active"); 1592 nextStepBtnThree.classList.remove("btn_disabled"); 1593 } 1594 });
1595 } 1596 1597 // Ñаг 4 1598 const volumeBtn = document.querySelectorAll(".popup__range"); 1599 if (volumeBtn && arr.filter((item) => item.name === "volume").length) { 1600 const slider = document.querySelector(".popup__range-slider"); 1601 volumeBtn.value = arr.filter((el) => el.name === "volume")[0].value; 1602 rangeSliderUpdate(slider, volumeBtn.value); 1603 } 1604 1605 // Ñаг 5 1606 const fuelBtns = document.querySelectorAll(".checkbox__input[name='fuel']"); 1607 const fuels = []; 1608 fuelBtns.forEach((item) => { 1609 fuels.push(item.dataset.name); 1610 }); 1611 1612 if (fuelBtns.length) { 1613 fuelBtns.forEach((item) => { 1614 if (arr.filter((el) => el.name === item.dataset.name).length) { 1615 item.checked = true; 1616 } 1617 }); 1618 } 1619 1620 const sectionsBtns = document.querySelectorAll(".radio__input[data-name='sections']"); 1621 if (sectionsBtns && arr.filter((item) => item.name === "sections").length) { 1622 sectionsBtns.forEach((item) => { 1623 if (arr.filter((el) => el.name === "sections")[0].value === item.dataset.value) { 1624 item.checked = true; 1625 nextStepBtnFive.classList.remove("btn_disabled"); 1626 1627 if (arr.filter((el) => el.name === "volume")[0].value == "S") { 1628 sectionsBtns.forEach((el) => { 1629 if (el.dataset.value > 2) { 1630 el.closest(".radio").classList.remove("radio_disabled"); 1631 } 1632 }); 1633 } 1634 } 1635 }); 1636 } 1637 1638 // Ñаг 6 1639 const trkBtns = document.querySelectorAll(".radio__input[name='trk']"); 1640 1641 if (trkBtns && arr.filter((item) => item.name === "trk").length) { 1642 trkBtns.forEach((item) => { 1643 if (arr.filter((el) => el.name === "trk")[0].value === item.dataset.value) { 1644 item.checked = true; 1645 nextStepBtnSix.classList.remove("btn_disabled"); 1646 } 1647 }); 1648 } 1649 1650 const sideBtns = document.querySelectorAll(".radio__input[name='side']"); 1651 1652 if (sideBtns && arr.filter((item) => item.name === "side").length) { 1653 sideBtns.forEach((item) => { 1654 if (arr.filter((el) => el.name === "side")[0].value === item.dataset.value) { 1655 item.checked = true; 1656 sideBtns.forEach((el) => { 1657 el.closest(".radio").classList.remove("radio_disabled"); 1658 }); 1659 nextStepBtnSix.classList.remove("btn_disabled"); 1660 } 1661 }); 1662 } 1663 1664 // Ñаг 7 1665 const fastBtns = document.querySelectorAll(".radio__input[name='fast']"); 1666 1667 if (fastBtns && arr.filter((item) => item.name === "fast").length) { 1668 fastBtns.forEach((item) => { 1669 if (arr.filter((el) => el.name === "fast")[0].value === item.dataset.value) { 1670 item.checked = true; 1671 } 1672 }); 1673 } 1674} 1675// -------------------------------------------- end setCurrentParams: --------------------------------------------- 1676//#endregion 1677 1678// -------------------------------------------- start rangeSliderUpdate: --------------------------------------------- 1679//#region rangeSliderUpdate 1680//ÑÑнкÑÐ¸Ñ ÑÑÑановки знаÑÐµÐ½Ð¸Ñ ÑÑндж ÑлайдеÑа: 1681function rangeSliderUpdate(slider, value) { 1682 // console.log("*************** СÑаÑÑ ÑÑнкÑии rangeSliderUpdate ***************"); // Ð¸Ð¼Ñ ÑÑнкÑии 1683 const rangeSlider = slider.querySelector(".range-slider"); 1684 const rangeInputMax = slider.querySelector(".max-range"); 1685 1686 // let minVal = 0; 1687 let maxVal = value; 1688 let minRange = rangeInputMax.min; 1689 let maxRange = rangeInputMax.max; 1690 1691 // пÑиÑваиваем знаÑÐµÐ½Ð¸Ñ Ð¸Ð½Ð¿ÑÑам: 1692 rangeInputMax.value = value; 1693 1694 // вÑÑиÑлÑем положение Ñендж инпÑÑов: 1695 rangeSlider.style.right = `${100 - ((maxVal - minRange) * 100) / (maxRange - minRange)}%`; 1696 1697 const rangeNumbers = document.querySelectorAll(".popup__range-number"); 1698 1699 if (rangeNumbers.length) { 1700 rangeNumbers.forEach((item) => { 1701 item.classList.remove("popup__range-number_active"); 1702 }); 1703 1704 rangeNumbers.forEach((item) => { 1705 if (item.innerHTML.trim() == value) { 1706 item.classList.add("popup__range-number_active"); 1707 } 1708 }); 1709 } 1710} 1711// -------------------------------------------- end rangeSliderUpd
1711ate: --------------------------------------------- 1712//#endregion 1713 1714 1715// ---------------------- start ФоÑмиÑование поÑледнего Ñага ----------------- 1716//#region result 1717if (resultCalcBtn) { 1718 resultCalcBtn.addEventListener("click", function (e) { 1719 // console.log("click"); 1720 const finalImg = document.querySelector(".popup__result-img").querySelector("img"); 1721 // console.log(finalImg); 1722 const img = getImageName(); 1723 finalImg.src = img; 1724 1725 // [ 1726 // { 1727 // "name": "temperature", 1728 // "value": "-60" 1729 // }, 1730 // { 1731 // "name": "insulation", 1732 // "value": "1" 1733 // }, 1734 // { 1735 // "name": "heater", 1736 // "value": "1" 1737 // }, 1738 // { 1739 // "name": "type", 1740 // "value": "Close" 1741 // }, 1742 // { 1743 // "name": "volume", 1744 // "value": "60" 1745 // }, 1746 // { 1747 // "name": "sections", 1748 // "value": "4" 1749 // }, 1750 // { 1751 // "name": "diesel", 1752 // "value": "1" 1753 // }, 1754 // { 1755 // "name": "trk", 1756 // "value": "4" 1757 // }, 1758 // { 1759 // "name": "petrol-92", 1760 // "value": "1" 1761 // }, 1762 // { 1763 // "name": "petrol-95", 1764 // "value": "1" 1765 // }, 1766 // { 1767 // "name": "other", 1768 // "value": "1" 1769 // }, 1770 // { 1771 // "name": "fast", 1772 // "value": "2" 1773 // } 1774 // ] 1775 1776 // e.preventDefault(); 1777 const params = parseUrlQuery(); 1778 // console.log(params); 1779 let temperature = ""; 1780 if (params.find((param) => param.name == "temperature")) { 1781 temperature = params.find((param) => param.name == "temperature")["value"]; 1782 } 1783 1784 let insulations = ""; 1785 if (params.find((param) => param.name == "insulations")) { 1786 insulations = params.find((param) => param.name == "insulations")["value"]; 1787 } 1788 1789 let heater = ""; 1790 if (params.find((param) => param.name == "heater")) { 1791 heater = params.find((param) => param.name == "heater")["value"]; 1792 } 1793 1794 let type = ""; 1795 if (params.find((param) => param.name == "type")) { 1796 type = params.find((param) => param.name == "type")["value"]; 1797 } 1798 1799 let volume = ""; 1800 if (params.find((param) => param.name == "volume")) { 1801 volume = params.find((param) => param.name == "volume")["value"]; 1802 } 1803 1804 let sections = ""; 1805 if (params.find((param) => param.name == "sections")) { 1806 sections = params.find((param) => param.name == "sections")["value"]; 1807 } 1808 1809 let diesel = ""; 1810 if (params.find((param) => param.name == "diesel")) { 1811 diesel = params.find((param) => param.name == "diesel")["value"]; 1812 } 1813 1814 let trk = ""; 1815 if (params.find((param) => param.name == "trk")) { 1816 trk = params.find((param) => param.name == "trk")["value"]; 1817 } 1818 1819 let petrol92 = ""; 1820 if (params.find((param) => param.name == "petrol-92")) { 1821 petrol92 = params.find((param) => param.name == "petrol-92")["value"]; 1822 } 1823 1824 let petrol95 = ""; 1825 if (params.find((param) => param.name == "petrol-95")) { 1826 petrol95 = params.find((param) => param.name == "petrol-95")["value"]; 1827 } 1828 1829 let other = ""; 1830 if (params.find((param) => param.name == "other")) { 1831 other = params.find((param) => param.name == "other")["value"]; 1832 } 1833 1834 let fast = ""; 1835 if (params.find((param) => param.name == "fast")) { 1836 fast = params.find((param) => param.name == "fast")["value"]; 1837 } 1838 1839 let sectionVolume = parseInt(volume) / parseInt(sections); 1840 let textVolume = ""; 1841 sectionVolume = Math.floor(sectionVolume * 100) / 100; 1842 1843 let titleSections = ""; 1844 switch (sections) { 1845 case "1": 1846 titleSections = "одноÑекÑионнаÑ"; 1847 break; 1848 case "2": 1849 titleSections = "двÑÑ ÑекÑионнаÑ"; 1850 textVolume = `(${sectionVolume}+${sectionVolume})`; 1851 break; 1852 case "3": 1853 titleSections = "ÑÑÐµÑ ÑекÑионнаÑ";
1854 textVolume = `(${sectionVolume}+${sectionVolume}+${sectionVolume})`; 1855 break; 1856 case "4": 1857 titleSections = "ÑеÑÑÑÐµÑ ÑекÑионнаÑ"; 1858 textVolume = `(${sectionVolume}+${sectionVolume}+${sectionVolume}+${sectionVolume})`; 1859 break; 1860 } 1861 1862 let textSections = ""; 1863 switch (sections) { 1864 case "1": 1865 textSections = "одноÑекÑионнÑй"; 1866 break; 1867 case "2": 1868 textSections = "двÑÑ ÑекÑионнÑй"; 1869 break; 1870 case "3": 1871 textSections = "ÑÑÐµÑ ÑекÑионнÑй"; 1872 break; 1873 case "4": 1874 textSections = "ÑеÑÑÑÐµÑ ÑекÑионнÑй"; 1875 break; 1876 } 1877 1878 let titleType = ""; 1879 switch (type) { 1880 case "Open": 1881 titleType = "окÑÑÑом"; 1882 break; 1883 case "Close": 1884 titleType = "закÑÑÑом"; 1885 break; 1886 case "Cont": 1887 titleType = "конÑейнеÑом"; 1888 break; 1889 } 1890 1891 let textBarrier = parseInt(sections) - 1; 1892 1893 // console.log(params); 1894 1895 // TODO надо ÑÑоÑмиÑоваÑÑ ÑоÑмиÑование ÑенÑ, опиÑÐ°Ð½Ð¸Ñ Ð¸ Ñ Ð°ÑакÑеÑиÑÑик, они бÑдÑÑ Ð¸ÑполÑзоваÑÑÑÑ Ð² Ñайле pdf и в ÑоÑÐ¼Ð°Ñ Ð¾Ð±ÑаÑной ÑвÑзи 1896 1897 // TODO поÑÑиÑаÑÑ ÑÑоимоÑÑÑ Ð¸ запиÑаÑÑ Ð² пеÑеменнÑÑ: 1898 const finalPrice = document.querySelector(".popup__result-price"); 1899 const price = setPrice(); 1900 console.log(price); 1901 finalPrice.innerHTML = `${price} ÑÑб.`; 1902 1903 //TODO добавиÑÑ Ð¾Ð¿Ð¸ÑÑание: 1904 const finalDesc = document.querySelector(".popup__result-desc"); 1905 finalDesc.innerHTML = `ÐнÑÑÑиведомÑÑÐ²ÐµÐ½Ð½Ð°Ñ ${titleSections} ÐÐС в ${titleType} иÑполнении обÑим обÑÑмом ${volume}м3`; 1906//TODO добавиÑÑ Ñ Ð°ÑакÑеÑиÑÑики: 1907const finalParams = document.querySelector(".popup__result-params"); 1908finalParams.innerHTML = `РезеÑвÑаÑ:наземнÑй гоÑизонÑалÑнÑй двÑÑÑеннÑй ${textSections} ÑезеÑвÑÐ°Ñ Ð¾Ð±ÑÑмом ${volume} ${textVolume} м. кÑб. из ÑÑали СÑ34 ÑолÑиной 4/4мм;<br>ÐежÑÑенное пÑоÑÑÑанÑÑво геÑмеÑизиÑовано, заполненно азоÑом, ÑÑÑановлена ÑиÑÑема конÑÑÐ¾Ð»Ñ Ð¼ÐµÐ¶ÑÑенного пÑоÑÑÑанÑÑва Ñ ÑиÑеной; <br>ÐÑк-лаз: 700мм Ñ ÐºÑÑÑкой 800мм - ${sections}ÑÑ. <br>ÐеÑегоÑодка: двÑÑÑÐµÐ½Ð½Ð°Ñ Ð¿ÐµÑегоÑодка (СÑÐ°Ð»Ñ Ð¡Ñ3 4/4мм) - ${textBarrier}ÑÑ. <br>СÑÑÐ°Ñ Ð¾Ð²Ð¾ÑнÑе ÑÑмÑ: еÑÑÑ <br>ÐожеменÑÑ (опоÑÑ): еÑÑÑ <br>ÐеÑÑниÑа Ñ Ð¿Ð»Ð¾Ñадкой обÑлÑживаниÑ: еÑÑÑ <br>Ð¢ÐµÑ Ð½Ð¾Ð»Ð¾Ð³Ð¸ÑеÑкий оÑÑек: ÐакÑÑÑÑй, Ñ Ð¿Ð¾Ð´Ð´Ð¾Ð½Ð¾Ð¼ ÑбоÑа пÑоливов <br>ТРÐ: одноÑÑÐºÐ°Ð²Ð½Ð°Ñ Â«GP» Ñ Ð¾Ð´Ð½Ð¾ÑÑÑоÑнÑм оÑÑÑÑÑнÑм ÑÑÑÑойÑÑвом, 50л/мин - ${trk} ÑÑ.(возможна ÑÑÑановка дÑÑÐ³Ð¸Ñ Ð½Ð° 50-80л/мин) <br>Узел наполнениÑ;<br>Узел вÑдаÑи;<br>ÐаÑÑик ÑÑовнÑ: ÐÐÐ-185 Ñ ÑиÑеной ÐС-5 - ${sections} комплекÑа <br>СигнализаÑоÑ: ÐС-Ð-500, диÑплейнÑй <br>СиÑÑема ÑкоÑоÑÑной запÑавки (Ð»Ð¸Ð½Ð¸Ñ Ð²ÑдаÑи Ñоплива в ÐТÐ);<br>Ð¢ÐµÑ Ð½Ð¾Ð»Ð¾Ð³Ð¸ÑеÑкие линии: (наполнениÑ, вÑдаÑи, деаÑÑаÑии, замеÑа и обеÑÑламливаниÑ) - ${sections} комплекÑа <br>ÐÑвеÑение и ÑÐ¸Ñ Ñиловой в иÑполнении ÐÑ : еÑÑÑ <br>СиÑÑема авÑомаÑиÑеÑкого пожаÑоÑÑÑениÑ; <br>ÐаÑÑжное покÑÑÑие: гÑÑнÑ=ÑÐ¼Ð°Ð»Ñ ÐÐÐÐÐСТ <br>ÐолниеоÑвод: еÑÑÑ <br>ÐадпиÑÑ âÐгнеопаÑноâ: 2 ÑÑ. <br>ÐеÑÑоÑок: ÐШС 3,5 (в пÑиклад) <br> 1909ÐлекÑÑиÑеÑкий ÑÐ¸Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ (Ex) â 1 ÑÑ.<br> 1910ЯÑик Ð´Ð»Ñ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð°ÑбиÑÑажнÑÑ Ð¿Ñоб Ñ Ð·Ð°Ð¼ÐºÐ¾Ð¼ â 1 ÑÑ.<br> 1911ÐалибÑовоÑÐ½Ð°Ñ ÑаблиÑа (геомеÑÑиÑеÑкий меÑод).<br> 1912ÐаÑпоÑÑ Ð¸Ð·Ð´ÐµÐ»Ð¸Ñ Ñ Ð¿Ð°ÐºÐµÑом ÑазÑеÑиÑелÑной докÑменÑаÑией - 1 ÑÑ.<br> 1913ÐакÑималÑно поÑÑеблÑÐµÐ¼Ð°Ñ Ð¼Ð¾ÑноÑÑÑ â Ð
1913½Ðµ более 7,0 кÐÑ.<br> 1914ÐÑедел допÑÑкаемой погÑеÑноÑÑи ТРРâ 0,25%.`; 1915 1916 // ÐабаÑиÑÑ, мм: 5000Ñ 2200Ñ 2650 <br> 1917 // ÐаÑÑа, кг: 3700 1918 1919 createCalcFile(); 1920 }); 1921 1922 1923 async function createCalcFile() { 1924 // console.log("******************** СÑаÑÑ ÑÑнкÑии createCalcFile **********************"); 1925 1926 const params = parseUrlQuery(); 1927 const img = getImageName(); 1928 const finalPrice = document.querySelector(".popup__result-price"); 1929 const finalDesc = document.querySelector(".popup__result-desc"); 1930 const finalParams = document.querySelector(".popup__result-params"); 1931 const downlodBtn = document.querySelector(".popup__result-download"); 1932 downlodBtn.classList.add("btn_disabled"); 1933 1934 1935 // const formattedNumber = String($newNumber).padStart(5, '0'); 1936 let formData = new FormData(); 1937 formData.append("image", img); 1938 // formData.append("numberCalc", formattedNumber); 1939 formData.append("price", finalPrice.innerHTML); 1940 formData.append("description", finalDesc.innerHTML); 1941 formData.append("characteristics", finalParams.innerHTML); 1942 1943 let response = await fetch("/backend/create-pdf.php", { 1944 method: "POST", 1945 body: formData, 1946 }); 1947 1948 if (response.ok) { 1949 downlodBtn.classList.remove("btn_disabled"); 1950 } else { 1951 downlodBtn.classList.add("btn_disabled"); 1952 } 1953 1954 downlodBtn.addEventListener("click", async function (e) { 1955 // ÐÑпÑавка AJAX-запÑоÑа 1956 try { 1957 // ÐÑпÑавка запÑоÑа Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Fetch API 1958 const response = await fetch('/backend/post-mail.php', { 1959 method: 'POST', 1960 body: JSON.stringify({ 1961 type: 'sendFile', 1962 }), 1963 }); 1964 1965 if (response.ok) { 1966 const result = await response.text(); 1967 console.log('Файл ÑÑпеÑно оÑпÑавлен:', result); 1968 } else { 1969 console.log('ÐÑоизоÑла оÑибка пÑи оÑпÑавке Ñайла.'); 1970 } 1971 1972 } catch (error) { 1973 console.log('ÐÑоизоÑла оÑибка пÑи оÑпÑавке Ñайла:', error); 1974 } 1975 }) 1976 } 1977} 1978// ---------------------- end ФоÑмиÑование поÑледнего Ñага ----------------- 1979//#endregion 1980 1981// -------------------------------------------- start вÑпомгаÑелÑнÑе ÑÑнкÑии: --------------------------------------------- 1982//#region functions 1983// ÑазблокиÑовка подогоÑеваÑÐµÐ»Ñ Ð¿Ñи вÑбоÑе ÑÑеплиÑелÑ: 1984const insulationBtn = document.querySelector(".insulation"); 1985const heaterBtn = document.querySelector(".heater"); 1986if (insulationBtn && heaterBtn) { 1987 insulationBtn.addEventListener("click", function (e) { 1988 // console.log("click"); 1989 1990 if (insulationBtn.querySelector("input").checked) { 1991 heaterBtn.classList.remove("checkbox_disabled"); 1992 } else { 1993 heaterBtn.classList.add("checkbox_disabled"); 1994 heaterBtn.querySelector("input").checked = false; 1995 delUrlQueryParam("heater"); 1996 } 1997 }); 1998} 1999 2000// ÑÑнкÑÐ¸Ñ Ð¿Ð¾ÐºÐ°Ð·Ð° оÑибки: 2001function showError(popup) { 2002 const error = popup.querySelector(".popup__error-text"); 2003 error.classList.add("popup__error-text_active"); 2004 setTimeout(function () { 2005 error.classList.remove("popup__error-text_active"); 2006 }, 2000); 2007} 2008 2009// ÑÑнкÑÐ¸Ñ Ð¿Ð¾ÐºÐ°Ð·Ð° пÑедÑпÑеждениÑ: 2010function showWarning(popup) { 2011 const desc = popup.querySelector(".popup__info-text"); 2012 if (desc) { 2013 desc.classList.add("popup__info-text_active"); 2014 setTimeout(function () { 2015 desc.classList.remove("popup__info-text_active"); 2016 }, 2000); 2017 } 2018} 2019 2020const btnTemp = document.querySelectorAll(".popup__btn_temp"); 2021if (btnTemp.length) { 2022 const popup = btnTemp[0].closest(".popup"); 2023 const nextBtn = popup.querySelector(".popup__next-btn"); 2024 const recommendation = popup.querySelector(".popup__recommended-wrap");
2025 const insulationBtn = popup.querySelector(".checkbox__input[data-name='insulation']"); 2026 const heaterBtn = popup.querySelector(".checkbox__input[data-name='heater']"); 2027 2028 btnTemp.forEach((btn) => { 2029 btn.addEventListener("click", function () { 2030 // console.log("click"); 2031 btnTemp.forEach((item) => { 2032 item.classList.remove("popup__btn_temp_active"); 2033 }); 2034 2035 btn.classList.add("popup__btn_temp_active"); 2036 nextBtn.classList.remove("btn_disabled"); 2037 2038 if (btn.dataset.value < -40) { 2039 recommendation.style.display = "grid"; 2040 } else { 2041 recommendation.style.display = "none"; 2042 delUrlQueryParam("insulation"); 2043 insulationBtn.checked = false; 2044 delUrlQueryParam("heater"); 2045 heaterBtn.checked = false; 2046 } 2047 }); 2048 }); 2049} 2050 2051//вÑÐ±Ð¾Ñ Ð¿Ð°ÑамеÑÑов и запиÑÑ / Ñдаление Ð¸Ñ Ð² ÑÑÑоке поиÑка. 2052const calcBtns = document.querySelectorAll("[data-calc-btn]"); 2053if (calcBtns.length) { 2054 calcBtns.forEach((btn) => { 2055 btn.addEventListener("click", function (e) { 2056 // console.log("click"); 2057 2058 if (btn.closest(".radio_disabled") || btn.closest(".checkbox_disabled")) { 2059 e.preventDefault(); 2060 const size = getSize(); 2061 if ((btn.dataset.value == "4" || btn.dataset.value == "3") && size == "S") { 2062 showWarning(btn.closest(".popup")); 2063 } 2064 } else { 2065 const name = btn.dataset.name; 2066 const value = btn.dataset.value; 2067 2068 if (btn.type == "checkbox") { 2069 if (btn.checked) { 2070 setUrlQueryParam(name, value); 2071 } else { 2072 delUrlQueryParam(name); 2073 } 2074 } else { 2075 setUrlQueryParam(name, value); 2076 } 2077 } 2078 }); 2079 }); 2080} 2081 2082// подÑвеÑка подÑказки пÑи клике на не акÑивнÑе кнопки: 2083const checkbox = document.querySelectorAll(".checkbox"); 2084if (checkbox.length) {
2085 checkbox.forEach((item) => { 2086 item.addEventListener("click", function (e) { 2087 // console.log("click"); 2088 if (item.classList.contains("checkbox_disabled")) { 2089 e.preventDefault(); 2090 const popup = item.closest(".popup"); 2091 showWarning(popup); 2092 } 2093 }); 2094 }); 2095} 2096 2097function setSideFromTrk() { 2098 // console.log("******************** СÑаÑÑ ÑÑнкÑии setSideFromTrk **********************"); 2099 const trk = getTrk(); 2100 const type = getType(); 2101 const oneSideBtn = document.querySelector(".radio__input[data-name='side'][data-value='1']"); 2102 const twoSideBtn = document.querySelector(".radio__input[data-name='side'][data-value='2']"); 2103 const fuelBtns = document.querySelectorAll(".checkbox__input[name='fuel']"); 2104 const sideBtns = document.querySelectorAll(".checkbox__input[name='side']"); 2105 const trkBtns = Array.from(document.querySelectorAll("[data-calc-btn][data-name='trk']")); 2106 const size = getSize(); 2107 let numberOfChecked = getCheckedFuels(); 2108 2109 if (trk == 1) { 2110 oneSideBtn.closest(".radio").classList.add("radio_disabled"); 2111 twoSideBtn.closest(".radio").classList.add("radio_disabled"); 2112 oneSideBtn.checked = true; 2113 delUrlQueryParam("side"); 2114 } 2115 2116 if (trk == 2) { 2117 oneSideBtn.closest(".radio").classList.remove("radio_disabled"); 2118 twoSideBtn.closest(".radio").classList.remove("radio_disabled"); 2119 oneSideBtn.checked = true; 2120 setUrlQueryParam("side", "1"); 2121 } 2122 2123 if (trk > 2) { 2124 oneSideBtn.closest(".radio").classList.add("radio_disabled"); 2125 twoSideBtn.closest(".radio").classList.add("radio_disabled"); 2126 twoSideBtn.checked = true; 2127 delUrlQueryParam("side"); 2128 } 2129 2130 if (type == "Cont") { 2131 oneSideBtn.closest(".radio").classList.add("radio_disabled"); 2132 twoSideBtn.closest(".radio").classList.add("radio_disabled"); 2133 oneSideBtn.checked = true; 2134 setUrlQueryParam("side", "1"); 2135 } 2136 2137 // еÑли ÑÑо конÑейнеÑ: 2138 if (type == "Cont") { 2139 trkBtns.forEach((item) => { 2140 if (item.dataset.value > 2) { 2141 item.closest(".radio").classList.add("radio_disabled"); 2142 item.checked = false; 2143 } 2144 }); 2145 sideBtns.forEach((item) => { 2146 item.closest(".radio").classList.add("radio_disabled"); 2147 item.checked = false; 2148 }); 2149 } 2150 2151 // еÑли ÑÑо не конÑейнеÑ: 2152 if (type != "Cont") { 2153 if (numberOfChecked == 2) { 2154 trkBtns.forEach((item) => { 2155 if (item.dataset.value < 2) { 2156 item.closest(".radio").classList.add("radio_disabled"); 2157 } 2158 }); 2159 } else if (numberOfChecked == 3) { 2160 trkBtns.forEach((item) => { 2161 if (item.dataset.value < 3) { 2162 item.closest(".radio").classList.add("radio_disabled"); 2163 } 2164 }); 2165 } else if (numberOfChecked == 4) { 2166 trkBtns.forEach((item) => { 2167 if (item.dataset.value < 4) { 2168 item.closest(".radio").classList.add("radio_disabled"); 2169 } 2170 }); 2171 } else { 2172 trkBtns.forEach((item) => { 2173 item.closest(".radio").classList.remove("radio_disabled"); 2174 }); 2175 } 2176 } 2177} 2178 2179function setSections() { 2180 // console.log("******************** СÑаÑÑ ÑÑнкÑии setSections **********************"); 2181 const size = getSize(); 2182 const type = getType(); 2183 const fuels = getFuels();
2184 const side = getSide(); 2185 const sections = getSections(); 2186 const trkBtns = document.querySelectorAll(".radio__input[name='trk']"); 2187 const sideBtns = document.querySelectorAll(".radio__input[name='side']"); 2188 const fuelBtns = document.querySelectorAll(".checkbox__input[name='fuel']"); 2189 const sectionsBtns = document.querySelectorAll(".radio__input[data-name='sections']"); 2190 const desc = document.querySelector(".popup__info-wrap_section"); 2191 const sectionInputOne = sectionsBtns.entries().find((el) => el[1].dataset.value == "1"); 2192 const sectionInputTwo = sectionsBtns.entries().find((el) => el[1].dataset.value == "2"); 2193 const sectionInputThree = sectionsBtns.entries().find((el) => el[1].dataset.value == "3"); 2194 const sectionInputFour = sectionsBtns.entries().find((el) => el[1].dataset.value == "4"); 2195 const radioSectionOne = sectionInputOne[1].closest(".radio"); 2196 const radioSectionTwo = sectionInputTwo[1].closest(".radio"); 2197 const radioSectionThree = sectionInputThree[1].closest(".radio"); 2198 const radioSectionFour = sectionInputFour[1].closest(".radio");
2199 const trkInputOne = trkBtns.entries().find((el) => el[1].dataset.value == "1"); 2200 const trkInputTwo = trkBtns.entries().find((el) => el[1].dataset.value == "2"); 2201 const trkInputThree = trkBtns.entries().find((el) => el[1].dataset.value == "3"); 2202 const trkInputFour = trkBtns.entries().find((el) => el[1].dataset.value == "4"); 2203 const radioTrkOne = trkInputOne[1].closest(".radio"); 2204 const radioTrkTwo = trkInputTwo[1].closest(".radio"); 2205 const radioTrkThree = trkInputThree[1].closest(".radio"); 2206 const radioTrkFour = trkInputFour[1].closest(".radio"); 2207 let numberOfChecked = getCheckedFuels(); 2208 2209 if (numberOfChecked) { 2210 nextStepBtnFive.classList.remove("btn_disabled"); 2211 } else { 2212 nextStepBtnFive.classList.add("btn_disabled"); 2213 } 2214 2215 sectionsBtns.forEach((item) => { 2216 item.closest(".radio").classList.remove("radio_disabled"); 2217 }); 2218 2219 fuelBtns.forEach((item) => { 2220 item.closest(".checkbox").classList.remove("checkbox_disabled"); 2221 }); 2222 2223 trkBtns.forEach((el) => { 2224 el.closest(".radio").classList.remove("radio_disabled"); 2225 }); 2226 desc.style.display = "none"; 2227 2228 sideBtns.forEach((el) => { 2229 el.closest(".radio").classList.remove("radio_disabled"); 2230 }); 2231 2232 // еÑли ÑÑо маленÑÐºÐ°Ñ Ð±Ð¾Ñка Ñо можно ÑазделиÑÑ ÑолÑко на 2 ÑекÑии, ÑÑк до 4-Ñ : 2233 if (size == "S" || type == "Cont") { 2234 // console.log(`size == "S"`); 2235 desc.style.display = "grid"; 2236 sectionsBtns.forEach((item) => { 2237 if (item.dataset.value > 2) { 2238 item.closest(".radio").classList.add("radio_disabled"); 2239 } 2240 if (item.checked == true && item.dataset.value > 2) { 2241 item.checked = false; 2242 sectionsBtns.forEach((el) => { 2243 if (el.dataset.value == 2) { 2244 el.checked = true; 2245 } 2246 }); 2247 } 2248 }); 2249 2250 if (numberOfChecked == 1) { 2251 if (!sections) { 2252 sectionInputOne[1].checked = true; 2253 setUrlQueryParam("sections", 1); 2254 } 2255 setUrlQueryParam("trk", 1); 2256 delUrlQueryParam("side"); 2257 trkInputOne[1].checked = true; 2258 sideBtns.forEach((el) => { 2259 el.closest(".radio").classList.add("radio_disabled"); 2260 el.checked = false; 2261 }); 2262 } 2263 2264 if (numberOfChecked == 2) { 2265 if (!sections || sections < 2) { 2266 sectionInputTwo[1].checked = true; 2267 setUrlQueryParam("sections", 2); 2268 } 2269 radioSectionOne.classList.add("radio_disabled"); 2270 trkInputTwo[1].checked = true; 2271 radioTrkOne.classList.add("radio_disabled"); 2272 setUrlQueryParam("trk", 2); 2273 setUrlQueryParam("side", 1); 2274 2275 fuelBtns.forEach((item) => { 2276 if (item.checked == false) { 2277 item.closest(".checkbox").classList.add("checkbox_disabled"); 2278 } 2279 }); 2280 } 2281 2282 if (numberOfChecked > 2) { 2283 fuelBtns.forEach((item) => { 2284 if (item.checked == false) { 2285 item.closest(".checkbox").classList.remove("checkbox_disabled"); 2286 } 2287 delUrlQueryParam(item.getAttribute("data-name")); 2288 }); 2289 } 2290 } 2291 2292 // еÑли ÑÑо не конÑÐµÐ¹Ð½ÐµÑ Ð¸ не малÑÐ½ÐµÐºÐ°Ñ Ð±Ð¾Ñка: 2293 if (size != "S" && type != "Cont") { 2294 // console.log(`size != "S" && type != "Cont"`); 2295 2296 if (numberOfChecked == 1) { 2297 if (!sections) { 2298 sectionInputOne[1].checked = true; 2299 setUrlQueryParam("sections", 1); 2300 } 2301 trkInputOne[1].checked = true; 2302 setUrlQueryParam("trk", 1); 2303 delUrlQueryParam("side"); 2304 2305 sideBtns.forEach((el) => { 2306 el.closest(".radio").classList.remove("radio_disabled"); 2307 if (el.dataset.value == 1) { 2308 el.checked = true; 2309 } 2310 }); 2311 } 2312 2313 if (numberOfChecked == 2) { 2314 if (!sections || sections < 2) { 2315 sectionInputTwo[1].checked = true; 2316 setUrlQueryParam("sections", 2); 2317 } 2318 radioSectionOne.classList.add("radio_disabled"); 2319 trkInputTwo[1].checked = true; 2320 setUrlQueryParam("trk", 2); 2321 setUrlQueryParam("side", 1); 2322 2323 sideBtns.forEach((el) => { 2324 el.closest(".radio").classList.remove("radio_disabled"); 2325 if (el.dataset.value == 1) { 2326 el.checked = true; 2327 } 2328 }); 2329 } 2330 2331 if (numberOfChecked == 3) { 2332 if (!sections || sections < 3) { 2333 sectionInputThree[1].checked = true; 2334 setUrlQueryParam("sections", 3); 2335 } 2336 radioSectionOne.classList.add("radio_disabled"); 2337 radioSectionTwo.classList.add("radio_disabled"); 2338 trkInputThree[1].checked = true; 2339 setUrlQueryParam("trk", 3); 2340 delUrlQueryParam("side"); 2341 2342 sideBtns.forEach((el) => { 2343 el.closest(".radio").classList.add("radio_disabled"); 2344 if (el.dataset.value == 2) { 2345 el.checked = true; 2346 } 2347 }); 2348 } 2349 2350 if (numberOfChecked == 4) { 2351 if (!sections || sections < 4) { 2352 sectionInputFour[1].checked = true; 2353 setUrlQueryParam("sections", 4); 2354 } 2355 radioSectionOne.classList.add("radio_disabled"); 2356 radioSectionTwo.classList.add("radio_disabled"); 2357 radioSectionThree.classList.add("radio_disabled"); 2358 trkInputFour[1].checked = true; 2359 setUrlQueryParam("trk", 4); 2360 delUrlQueryParam("side"); 2361 2362 sideBtns.forEach((el) => { 2363 el.closest(".radio").classList.add("radio_disabled"); 2364 if (el.dataset.value == 2) { 2365 el.checked = true; 2366 } 2367 }); 2368 } 2369 } 2370 2371 // еÑли ÑÑо ÑÑедний конÑейнеÑ: 2372 if (size != "S" && type == "Cont") { 2373 // console.log(`size != "S" && type == "Cont"`); 2374 2375 sideBtns.forEach((el) => { 2376 el.closest(".radio").classList.add("radio_disabled"); 2377 if (el.dataset.value == 1) { 2378 el.checked = true; 2379 } 2380 });
2381 2382 if (numberOfChecked == 1) { 2383 if (!sections) { 2384 sectionInputOne[1].checked = true; 2385 setUrlQueryParam("sections", 1); 2386 } 2387 setUrlQueryParam("trk", 1); 2388 delUrlQueryParam("side"); 2389 trkInputOne[1].checked = true; 2390 sideBtns.forEach((el) => { 2391 el.closest(".radio").classList.add("radio_disabled"); 2392 el.checked = false; 2393 }); 2394 } 2395 2396 if (numberOfChecked == 2) { 2397 if (!sections || sections < 2) { 2398 sectionInputTwo[1].checked = true; 2399 setUrlQueryParam("sections", 2); 2400 } 2401 radioSectionOne.classList.add("radio_disabled"); 2402 trkInputTwo[1].checked = true; 2403 radioTrkOne.classList.add("radio_disabled"); 2404 setUrlQueryParam("trk", 2); 2405 setUrlQueryParam("side", 1); 2406 2407 fuelBtns.forEach((item) => { 2408 if (item.checked == false) { 2409 item.closest(".checkbox").classList.add("checkbox_disabled"); 2410 } 2411 }); 2412 } 2413 2414 if (numberOfChecked > 2) { 2415 fuelBtns.forEach((item) => { 2416 if (item.checked == false) { 2417 item.closest(".checkbox").classList.remove("checkbox_disabled"); 2418 } 2419 delUrlQueryParam(item.getAttribute("data-name")); 2420 }); 2421 } 2422 } 2423 2424 // еÑли ÑÑо малÑй конÑейнеÑ: 2425 if (size == "S" && type == "Cont") { 2426 // console.log(`size == "S" && type == "Cont"`); 2427 2428 sideBtns.forEach((el) => { 2429 el.closest(".radio").classList.add("radio_disabled"); 2430 if (el.dataset.value == 1) { 2431 el.checked = true; 2432 } 2433 }); 2434 2435 if (numberOfChecked == 1) { 2436 if (!sections) { 2437 sectionInputOne[1].checked = true; 2438 setUrlQueryParam("sections", 1); 2439 } 2440 setUrlQueryParam("trk", 1); 2441 delUrlQueryParam("side"); 2442 trkInputOne[1].checked = true; 2443 sideBtns.forEach((el) => { 2444 el.closest(".radio").classList.add("radio_disabled"); 2445 el.checked = false; 2446 }); 2447 } 2448 2449 if (numberOfChecked == 2) { 2450 if (!sections || sections < 2) { 2451 sectionInputTwo[1].checked = true; 2452 setUrlQueryParam("sections", 2); 2453 } 2454 radioSectionOne.classList.add("radio_disabled"); 2455 trkInputTwo[1].checked = true; 2456 radioTrkOne.classList.add("radio_disabled"); 2457 setUrlQueryParam("trk", 2); 2458 setUrlQueryParam("side", 1); 2459 2460 fuelBtns.forEach((item) => { 2461 if (item.checked == false) { 2462 item.closest(".checkbox").classList.add("checkbox_disabled"); 2463 } 2464 }); 2465 } 2466 2467 if (numberOfChecked > 2) { 2468 fuelBtns.forEach((item) => { 2469 if (item.checked == false) { 2470 item.closest(".checkbox").classList.remove("checkbox_disabled"); 2471 } 2472 delUrlQueryParam(item.getAttribute("data-name")); 2473 }); 2474 } 2475 } 2476 2477 // блокиÑовка колиÑеÑÑва видов Ñоплива в завиÑимоÑÑи Ð¾Ñ Ð¾Ð±Ñема: 2478 numberOfChecked = getCheckedFuels(); 2479 2480 if (size == "S" && numberOfChecked == 2) { 2481 fuelBtns.forEach((item) => { 2482 if (item.checked == false) { 2483 item.closest(".checkbox").classList.add("checkbox_disabled"); 2484 } 2485 }); 2486 } 2487 if (type == "Cont" && numberOfChecked == 2) { 2488 fuelBtns.forEach((item) => { 2489 if (item.checked == false) { 2490 item.closest(".checkbox").classList.add("checkbox_disabled"); 2491 } 2492 }); 2493 } 2494} 2495 2496// -------------------------------------------- end вÑпомогаÑелÑнÑе ÑÑнкÑии: --------------------------------------------- 2497//#endregion 2498 2499// --------------------------------------------- start обÑабоÑка ÑобÑÑий кнопок калÑкÑлÑÑоÑа: --------------------------------------------- 2500//#region calc btns 2501// обÑабоÑка ÑобÑÑий Ð´Ð»Ñ ÐºÐ½Ð¾Ð¿Ð¾Ðº вÑбоÑа Ñипа: 2502const typeBtns = document.querySelectorAll(".popup__type-item"); 2503if (typeBtns.length) { 2504 typeBtns.forEach((btn) => { 2505 btn.addEventListener("click", function () { 2506 // console.log("click"); 2507 const size = getSize(); 2508 const trk = getTrk(); 2509 const sections = getSections(); 2510 const side = getSide(); 2511 const type = getType(); 2512 const sectionsBtns = document.querySelectorAll(".radio__input[data-name='sections']"); 2513 const sideBtns = document.querySelectorAll(".radio__input[data-name='side']"); 2514 const fuelBtns = document.querySelectorAll(".checkbox__input[name='fuel']"); 2515 const trkBtns = document.querySelectorAll(".radio__input[data-name='trk']"); 2516 const btnSectionOne = document.querySelector(".radio__input[data-name='sections'][data-value='1']"); 2517 const btnSectionTwo = document.querySelector(".radio__input[data-name='sections'][data-value='2']"); 2518 const btnSideOne = document.querySelector(".radio__input[data-name='side'][data-value='1']"); 2519 const descVol = document.querySelector(".popup__info-text_volume"); 2520 const descTrcCont = document.querySelector(".popup__info-text_trk-cont"); 2521 const descTrc = document.querySelector(".popup__info-text_trk"); 2522 const descFuel = document.querySelector(".popup__info-text_fuel"); 2523 2524 const popup = typeBtns[0].closest(".popup"); 2525 const nextBtn = popup.querySelector(".popup__next-btn"); 2526 const slider = document.querySelector(".popup__range-slider"); 2527 const numberListUl = document.querySelector(".popup__range-list"); 2528 const numberList = numberListUl.querySelectorAll(".popup__range-number"); 2529 2530 let activeFuelsQuontity = 0; 2531 fuelBtns.forEach((item) => { 2532 if (item.checked) { 2533 activeFuelsQuontity++; 2534 } 2535 }); 2536 // console.log("activeFuelsQuontity", activeFuelsQuontity); 2537 2538 typeBtns.forEach((item) => { 2539 item.classList.remove("popup__type-item_active"); 2540 }); 2541 2542 btn.classList.add("popup__type-item_active"); 2543 nextBtn.classList.remove("btn_disabled"); 2544 2545 if (btn.dataset.value == "Cont") { 2546 if (side == "2") { 2547 sideBtns.forEach((el) => { 2548 el.closest(".radio").classList.remove("radio_disabled"); 2549 if (el.dataset.value == "2") { 2550 el.checked = false; 2551 } 2552 if (el.dataset.value == "1") { 2553 el.checked = true; 2554 } 2555 }); 2556 setUrlQueryParam("side", "1"); 2557 } 2558 2559 trkBtns.forEach((el) => { 2560 if (el.dataset.value > 2) { 2561 el.closest(".radio").classList.add("radio_disabled"); 2562 } 2563 }); 2564 sideBtns.forEach((el) => { 2565 el.closest(".radio").classList.add("radio_disabled"); 2566 }); 2567 2568 descVol.style.display = "block"; 2569 descTrcCont.style.display = "block"; 2570 descFuel.style.display = "block"; 2571 descTrc.style.display = "block"; 2572 numberList.forEach((item) => { 2573 if (item.innerHTML.trim() > 40) { 2574 item.classList.add("popup__range-number_hidden"); 2575 } 2576 2577 if (size == "L") {
2578 rangeSliderUpdate(slider, 40); 2579 setUrlQueryParam("volume", "40"); 2580 } 2581 2582 if (trk > "2") { 2583 setUrlQueryParam("trk", "2"); 2584 setUrlQueryParam("side", "1"); 2585 } 2586 2587 if (activeFuelsQuontity > 2) { 2588 fuelBtns.forEach((item) => { 2589 item.checked = false; 2590 item.closest(".checkbox").classList.remove("checkbox_disabled"); 2591 delUrlQueryParam(item.dataset.name); 2592 nextStepBtnFive.classList.add("btn_disabled"); 2593 }); 2594 } else if (activeFuelsQuontity == 2) { 2595 fuelBtns.forEach((item) => { 2596 if (!item.checked) { 2597 item.closest(".checkbox").classList.remove("checkbox_disabled"); 2598 } 2599 }); 2600 } 2601 }); 2602 } else { 2603 fuelBtns.forEach((item) => { 2604 item.closest(".checkbox").classList.remove("checkbox_disabled"); 2605 }); 2606 2607 descVol.style.display = "none"; 2608 descTrcCont.style.display = "none"; 2609 descFuel.style.display = "none"; 2610 descTrc.style.display = "none"; 2611 numberList.forEach((item) => { 2612 if (item.innerHTML.trim() > 40) { 2613 item.classList.remove("popup__range-number_hidden"); 2614 } 2615 }); 2616 2617 // console.log(type); 2618 if (size == "S" || type == "Cont") { 2619 desc.style.display = "grid"; 2620 sectionsBtns.forEach((el) => { 2621 if (el.dataset.value > 2) { 2622 el.closest(".radio").classList.add("radio_disabled"); 2623 el.checked = false; 2624 } 2625 if (item.checked == true && item.dataset.value > 2) { 2626 item.checked = false; 2627 sectionsBtns.forEach((el) => { 2628 if (el.dataset.value == 2) { 2629 el.checked = true; 2630 } 2631 }); 2632 } 2633 }); 2634 } 2635 2636 if (activeFuelsQuontity > 2) { 2637 fuelBtns.forEach((item) => { 2638 item.checked = false; 2639 item.closest(".checkbox").classList.remove("checkbox_disabled"); 2640 delUrlQueryParam(item.dataset.name); 2641 nextStepBtnFive.classList.add("btn_disabled"); 2642 }); 2643 } else if (activeFuelsQuontity == 2) { 2644 fuelBtns.forEach((item) => { 2645 if (!item.checked) { 2646 item.closest(".checkbox").classList.add("checkbox_disabled"); 2647 } 2648 }); 2649 } 2650 2651 // TODO добавиÑÑ Ð¿ÑовеÑÐºÑ Ð½Ð° колиÑеÑÑво вÑбÑанного Ñоплива? 2652 } 2653 }); 2654 }); 2655} 2656 2657const trkBtns = document.querySelectorAll("[data-calc-btn][data-name='trk']"); 2658if (trkBtns.length) { 2659 trkBtns.forEach((item) => { 2660 item.addEventListener("click", function () { 2661 // console.log("click"); 2662 setSideFromTrk(); 2663 }); 2664 }); 2665 2666 // ÑÑнкÑÐ¸Ñ ÑабоÑÑ Ñ Ñадиокнопками Ð´Ð»Ñ ÑÑоÑон: 2667} 2668 2669const fuelBtns = document.querySelectorAll(".checkbox__input[name='fuel']"); 2670if (fuelBtns.length) { 2671 // подÑÑÐµÑ ÐºÐ¾Ð»Ð¸ÑеÑÑва вÑбÑаннÑÑ Ð²Ð¸Ð´Ð¾Ð² Ñоплива: 2672 2673 fuelBtns.forEach((item) => { 2674 item.addEventListener("change", function (e) { 2675 // console.log("change"); 2676 const sections = getSections(); 2677 if (!sections) { 2678 setUrlQueryParam("sections", 1); 2679 } 2680 setSections(); 2681 }); 2682 }); 2683} 2684 2685const volumeInput = document.querySelector(".popup__range"); 2686if (volumeInput) { 2687 volumeInput.addEventListener("input", function () { 2688 // console.log("input"); 2689 const size = getSize(); 2690 if (size == "S") { 2691 const volume = volumeInput.value; 2692 } 2693 }); 2694} 2695 2696// ÐÑивÑзÑваем обÑабоÑÑик клика к ÑодиÑелÑÑÐºÐ¾Ð¼Ñ ÐºÐ¾Ð½ÑейнеÑÑ Ñ Ð²Ð¸Ð·ÑалÑнÑм ÑÑеком ÑлайдеÑа 2697const sliderContainer = document.querySelector('.popup__range-slider'); 2698if (sliderContainer) { 2699 sliderContainer.addEventListener('click', function(e) { 2700 // ÐолÑÑаем ÑазмеÑÑ ÐºÐ¾Ð½ÑейнеÑа, оÑноÑиÑелÑно коÑоÑого бÑдем ÑÑиÑаÑÑ ÐºÐ¾Ð¾ÑдинаÑÑ 2701 const rect = sliderContainer.getBoundingClientRect(); 2702 const clickX = e.clientX - rect.left; // кооÑдинаÑа клика оÑноÑиÑелÑно конÑейнеÑа 2703 const containerWidth = rect.width; 2704 2705 // ÐÐ°Ñ Ð¾Ð´Ð¸Ð¼ input-ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¿Ð¾Ð»Ð·Ñнка 2706 const slider = document.getElementById('volume'); 2707 if (!slider) return; 2708 2709 // ЧиÑаем минималÑное, макÑималÑное знаÑÐµÐ½Ð¸Ñ Ð¸ ÑаÐ
2709³ из аÑÑибÑÑов input 2710 const min = parseInt(slider.min, 10); 2711 const max = parseInt(slider.max, 10); 2712 const step = parseInt(slider.step, 10); 2713 2714 // ÐÑÑиÑлÑем Ð´Ð¾Ð»Ñ Ð¾Ñ ÑиÑÐ¸Ð½Ñ ÐºÐ¾Ð½ÑейнеÑа, где пÑоизоÑÑл клик 2715 let fraction = clickX / containerWidth; 2716 fraction = Math.max(0, Math.min(1, fraction)); // огÑаниÑиваем Ð¾Ñ 0 до 1 2717 2718 // ÐÑÑиÑлÑем новое знаÑение в диапазоне [min, max] 2719 let newValue = min + fraction * (max - min); 2720 // ÐкÑÑглÑем до ближайÑего знаÑениÑ, кÑаÑного step 2721 newValue = Math.round(newValue / step) * step; 2722 2723 // ÐбновлÑем знаÑение ползÑнка 2724 slider.value = newValue; 2725 2726 // ÐÑли Ñ Ð²Ð°Ñ ÐµÑÑÑ ÑÑнкÑÐ¸Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ð¸Ð·ÑалÑной полоÑÑ, вÑзовиÑе еÑ: 2727 const visualSlider = document.querySelector('.range-slider'); 2728 if (visualSlider) { 2729 // ÐапÑимеÑ, вÑÑиÑлÑем пÑоÑенÑное знаÑение 2730 const percent = ((newValue - min) / (max - min)) * 100; 2731 visualSlider.style.right = (100 - percent) + '%'; 2732 } 2733 2734 // ÐенеÑиÑÑем ÑобÑÑие input Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ ÑÑабоÑали оÑÑалÑнÑе обÑабоÑÑики 2735 slider.dispatchEvent(new Event('input', { bubbles: true })); 2736 }); 2737} 2738 2739 2740 2741// -------------------------------------- end обÑабоÑка ÑобÑÑий кнопок калÑкÑлÑÑоÑа ---------------- 2742//#endregion 2743 2744// -------------------------------------- start обÑабоÑка ÑобÑÑий кнопок пеÑÐµÑ Ð¾Ð´Ð° на ÑледÑÑÑий Ñаг ---------------- 2745//#region calc steps 2746// пеÑÐµÑ Ð¾Ð´ на Ñаг 4 - вÑбоÑа обÑема: 2747nextStepBtnThree.addEventListener("click", function () { 2748 // console.log("click"); 2749 const size = getSize(); 2750 if (!size) { 2751 setUrlQueryParam("volume", "5"); 2752 } 2753}); 2754 2755// пеÑÐµÑ Ð¾Ð´ на Ñаг 5 - вÑÐ±Ð¾Ñ Ñоплива: 2756nextStepBtnFour.addEventListener("click", function () { 2757 // console.log("click"); 2758 const sections = getSections(); 2759 if (!sections) { 2760 setUrlQueryParam("sections", "1"); 2761 } 2762 setSections(); 2763}); 2764 2765// пеÑÐµÑ Ð¾Ð´ на Ñаг 6 - вÑÐ±Ð¾Ñ Ð¢Ð Ð: 2766nextStepBtnFive.addEventListener("click", function () { 2767 // console.log("click"); 2768 const trk = getTrk(); 2769 if (!trk) { 2770 setUrlQueryParam("trk", "1"); 2771 } 2772 setSideFromTrk(); 2773}); 2774// -------------------------------------- end обÑабоÑка ÑобÑÑий кнопок пеÑÐµÑ Ð¾Ð´Ð° на ÑледÑÑÑий Ñаг ---------------- 2775//#endregion 2776 2777const queryParams = parseUrlQuery(); 2778setCurrentParams(queryParams); 2779 2780// -------------------------------------- start ÑаÑÑÐµÑ ÑÐµÐ½Ñ ---------------- 2781//#region calc price 2782 2783async function fetchToDB(options) { 2784 let responseHouses = await fetch(options.script, { 2785 method: "POST", 2786 headers: { 2787 "Content-Type": "application/json;charset=utf-8", 2788 }, 2789 body: JSON.stringify(options), 2790 }); 2791 2792 let result = []; 2793 if (responseHouses.ok) { 2794 // console.log("ok"); 2795 result = await responseHouses.json(); 2796 // console.log(result); 2797 // arr = Object.values(result.response); 2798 // console.log(result); 2799 } else { 2800 console.log("error"); 2801 } 2802 2803 return await result; 2804} 2805 2806async function getPriceAZS() { 2807 const options = { 2808 script: "/backend/getInfo.php", 2809 function: "get", 2810 table: "price", 2811 }; 2812 2813 let arr = []; 2814 2815 arr = fetchToDB(options); 2816 return arr; 2817} 2818 2819async function getPriceHeating() { 2820 const options = { 2821 script: "/backend/getInfo.php", 2822 function: "get", 2823 table: "heating", 2824 }; 2825 2826 let arr = []; 2827 2828 arr = fetchToDB(options); 2829 return arr; 2830} 2831 2832let heating = await getPriceHeating(); 2833let price = await getPriceAZS(); 2834 2835function setPrice() { 2836 let copyPrice = [...price]; 2837 let copyHeating = [...heating]; 2838 const params = parseUrlQuery(); 2839 2840 // ÑилÑÑÑаÑÐ¸Ñ ÑаблиÑÑ Ñен: 2841 if (params.find((param) => param.name == "type")) { 2842 copyPrice = filterPrice(params.find((param) => param.name == "type")["value"], "type", copyPrice); 2843 } 2844 2845 if (params.find((param) => param.name == "volume")) { 2846 copyPrice = filterPrice(params.find((param) => param.name == "volume")["value"], "volume", copyPrice); 2847 copyHeating = filterPrice(params.find((param) => param.name == "volume")["value"], "volume", copyHeating); 2848 } 2849 console.log("copyPrice", copyPrice); 2850 2851 if (params.find((param) => param.name == "sections")) { 2852 copyPrice = filterPrice(params.find((param) => param.name == "sections")["value"], "sections", copyPrice); 2853 } 2854 2855 if (params.find((param) => param.name == "trk")) { 2856 let value = ""; 2857 if (params.find((param) => param.name == "trk")["value"] == "2" && params.find((param) => param.name == "side")) { 2858 value = 2859 params.find((param) => param.name == "trk")["value"] + 2860 "_" + 2861 params.find((param) => param.name == "side")["value"]; 2862 } else { 2863 value = params.find((param) => param.name == "trk")["value"]; 2864 } 2865 copyPrice = filterPrice(value, "trk", copyPrice); 2866 } 2867 2868 if (params.find((param) => param.name == "fast")) { 2869 let value = ""; 2870 2871 if (params.find((param) => param.name == "fast") && params.find((param) => param.name == "fast")["value"] != "0") { 2872 value = "f"; 2873 } else { 2874 value = "0"; 2875 } 2876 copyPrice = filterPrice(value, "fast", copyPrice); 2877 } 2878 console.log("copyPrice", copyPrice); 2879 // console.log("copyHeating", copyHeating); 2880 let priceAZS = parseInt(copyPrice[0].price); 2881 // console.log("priceAZS", priceAZS); 2882 2883 if ( 2884 params.find((param) => param.name == "insulation") && 2885 params.find((param) => param.name == "insulation")["value"] == "1" 2886 ) { 2887 priceAZS += parseInt(copyHeating[0]["insulation"]); 2888 // console.log("priceAZS", priceAZS); 2889 } 2890 2891 if ( 2892 params.find((param) => param.name == "heater") && 2893 params.find((param) => param.name == "heater")["value"] == "1" 2894 ) { 2895 priceAZS += parseInt(copyHeating[0]["heater"]); 2896 // console.log("priceAZS", priceAZS); 2897 } 2898
2899 const textPrice = priceAZS.toLocaleString("ru-RU", { 2900 minimumFractionDigits: 2, 2901 maximumFractionDigits: 2, 2902 }); 2903 return textPrice; 2904} 2905 2906function filterPrice(value, name, arr) { 2907 return arr.filter((item) => item[name].toLowerCase() == value.toLowerCase()); 2908} 2909// -------------------------------------- end ÑаÑÑÐµÑ ÑÐµÐ½Ñ ---------------- 2910//#endregion 2911 2912// const advantagesCard = document.querySelectorAll(".advantages__card"); 2913// // console.log(advantagesCard); 2914// if (advantagesCard.length > 0) { 2915// advantagesCard.forEach((item) => { 2916// if (item == advantagesCard[0]) { 2917// // const svgAnimateNo = item.querySelector('.svgAnimateNo') 2918// const svgAnimateYes = item.querySelector('.svgAnimateYes'); 2919// const animationItems = svgAnimateYes.querySelectorAll('animateTransform'); 2920// animationItems.forEach(el => el.removeAttribute('begin')); 2921// console.log(animationItems); 2922// // console.log(svgAnimateYes); 2923 2924// // svgAnimateYes.style.display = 'none'; 2925// // svgAnimateNo.style.display = 'block'; 2926 2927// item.addEventListener('click', () => { 2928// animationItems.forEach(el => el.setAttribute('begin', '0s')); 2929// console.log('dfgjdsfghdfgkjedrjg'); 2930// // svgAnimateYes.style.display = 'block'; 2931// // svgAnimateNo.style.display = 'none'; 2932// setTimeout(() => animationItems.forEach(el => el.removeAttribute('begin')), 1000); 2933// // setTimeout(() => svgAnimateNo.style.display = 'block', 1000); 2934 2935// }) 2936// } 2937// }) 2938// } 2939 2940// document.activeElement.addEventListener('click', (e) => { 2941// console.log(e.target); 2942// }); 2943 2944const additionBtns = document.querySelectorAll('.off-card__btn'); 2945if (additionBtns && window.innerWidth <= 960) { 2946 additionBtns.forEach((btn) => { 2947 btn.classList.add('btn'); 2948 btn.classList.add('btn_trans-orange'); 2949 }) 2950} 2951 2952if (additionBtns && window.innerWidth > 960) { 2953 additionBtns.forEach((btn) => { 2954 btn.remove; 2955 }) 2956} 2957 2958const advantagesCards = document.querySelectorAll('.advantages__card'); 2959 2960if (advantagesCards.length > 0) { 2961 advantagesCards.forEach((item) => { 2962 const animate = item.querySelectorAll('animateTransform'); 2963 item.addEventListener('mouseover', function() { 2964 animate.forEach((el) => { 2965 el.beginElement(); 2966 }) 2967 }) 2968 2969 const animate2 = item.querySelectorAll('animateMotion'); 2970 item.addEventListener('mouseover', function() { 2971 animate2.forEach((el) => { 2972 el.beginElement(); 2973 }) 2974 }) 2975 }) 2976} 2977 2978 2979 2980$(document).ready(function() { 2981 $('.loader').hide(); 2982 // ÐбÑабоÑÑик клика на ÐºÐ½Ð¾Ð¿ÐºÑ 2983 $('#btn-zap-1').click(function() { 2984 $('.loader').show(); 2985 2986 // ÐоказÑваем модалÑное окно 2987 $('#modal-zap-1').css('z-index', -1).animate({ 'z-index': 1000 }, 10); 2988 $('#modal-zap-1').css('opacity', 0).animate({ opacity: 1 }, 100); 2989 2990 setTimeout(function() { 2991 $('.loader').hide(); 2992 }, 500); 2993 2994 }); 2995 2996 // ÐбÑабоÑÑик клика на ÐºÐ½Ð¾Ð¿ÐºÑ Ð·Ð°ÐºÑÑÑÐ¸Ñ Ð¼Ð¾Ð´Ð°Ð»Ñного окна 2997 $('#modal-zap-1 .modal-zapravka__close').click(function() { 2998 // СкÑÑваем модалÑное окно 2999 $('#modal-zap-1').animate({ opacity: 0 }, 400); 3000 $('#modal-zap-1').animate({ 'z-index': -1 }, 400); 3001 }); 3002 3003 // ÐополниÑелÑно: закÑÑÑие модалÑного окна по ÐºÐ»Ð¸ÐºÑ Ð²Ð½Ðµ его облаÑÑи 3004 $(document).mouseup(function(e) { 3005 var modal = $('#modal-zap-1 .modal-zapravka__body'); 3006 if (!modal.is(e.target) && modal.has(e.target).length === 0) { 3007 $('#modal-zap-1').animate({ opacity: 0 }, 400); 3008 $('#modal-zap-1').animate({ 'z-index': -1 }, 400); 3009 3010 } 3011 }); 3012 3013 3014 3015 // ÐбÑабоÑÑик клика на ÐºÐ½Ð¾Ð¿ÐºÑ 3016 $('#btn-zap-2').click(function() { 3017 $('.loader').show(); 3018 3019 // ÐоказÑваем модалÑное окно 3020 $('#modal-zap-2').css('z-index', -1).animate({ 'z-index': 1000 }, 10); 3021 $('#modal-zap-2').css('opacity', 0).animate({ opacity: 1 }, 100); 3022 setTimeout(function() { 3023 $('.loader').hide(); 3024 }, 500); 3025 3026 }); 3027 3028 // ÐбÑабоÑÑик клика на ÐºÐ½Ð¾Ð¿ÐºÑ Ð·Ð°ÐºÑÑÑÐ¸Ñ Ð¼Ð¾Ð´Ð°Ð»Ñного окна
3029 $('#modal-zap-2 .modal-zapravka__close').click(function() { 3030 // СкÑÑваем модалÑное окно 3031 $('#modal-zap-2').animate({ opacity: 0 }, 100); 3032 $('#modal-zap-2').animate({ 'z-index': -1 }, 10); 3033 }); 3034 3035 // ÐополниÑелÑно: закÑÑÑие модалÑного окна по ÐºÐ»Ð¸ÐºÑ Ð²Ð½Ðµ его облаÑÑи 3036 $(document).mouseup(function(e) { 3037 var modal = $('#modal-zap-2 .modal-zapravka__body'); 3038 if (!modal.is(e.target) && modal.has(e.target).length === 0) { 3039 $('#modal-zap-2').animate({ opacity: 0 }, 100); 3040 $('#modal-zap-2').animate({ 'z-index': -1 }, 10); 3041 3042 } 3043 }); 3044 3045 3046 3047 // ÐбÑабоÑÑик клика на ÐºÐ½Ð¾Ð¿ÐºÑ 3048 $('#btn-zap-3').click(function() { 3049 // ÐоказÑваем модалÑное окно 3050 $('.loader').show(); 3051 $('#modal-zap-3').css('z-index', -1).animate({ 'z-index': 1000 }, 10); 3052 $('#modal-zap-3').css('opacity', 0).animate({ opacity: 1 }, 100); 3053 setTimeout(function() { 3054 $('.loader').hide(); 3055 }, 500); 3056 }); 3057 3058 // ÐбÑабоÑÑик клика на ÐºÐ½Ð¾Ð¿ÐºÑ Ð·Ð°ÐºÑÑÑÐ¸Ñ Ð¼Ð¾Ð´Ð°Ð»Ñного окна 3059 $('#modal-zap-3 .modal-zapravka__close').click(function() { 3060 // СкÑÑваем модалÑное окно 3061 $('#modal-zap-3').animate({ opacity: 0 }, 100); 3062 $('#modal-zap-3').animate({ 'z-index': -1 }, 10); 3063 }); 3064 3065 // ÐополниÑелÑно: закÑÑÑие модалÑного окна по ÐºÐ»Ð¸ÐºÑ Ð²Ð½Ðµ его облаÑÑи 3066 $(document).mouseup(function(e) { 3067 var modal = $('#modal-zap-3 .modal-zapravka__body'); 3068 if (!modal.is(e.target) && modal.has(e.target).length === 0) { 3069 $('#modal-zap-3').animate({ opacity: 0 }, 100); 3070 $('#modal-zap-3').animate({ 'z-index': -1 }, 10); 3071 3072 } 3073 }); 3074});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.