var thelastofor = 'zeroorders'; var datajso = {"type":"FeatureCollection","metadata":{"name":"Ростов-на-Дону – для доставки","creator":"Yandex Map Constructor"},"features":[{"type":"Feature","id":0,"geometry":{"type":"Polygon","coordinates":[[[39.549167707618935,47.225804126101316],[39.558653613835425,47.21767871819853],[39.585645379829025,47.20569172429896],[39.60775686045875,47.19216186141886],[39.606452981633005,47.15372975732574],[39.61644404759124,47.09237389893102],[39.635018182397125,47.079281763878406],[39.747814620117,47.0705704772688],[39.81304594335916,47.09777328134764],[39.87278410253887,47.1254307589003],[39.877075636962665,47.1311713882308],[39.866260970214626,47.204806962158564],[39.86239858923318,47.23123917748557],[39.935097182372814,47.28724681390628],[39.93213602362039,47.29311583629893],[39.92565580664035,47.30067744124441],[39.924196684936256,47.30485191522438],[39.923939192870755,47.31549094497678],[39.91622515974389,47.31651241196848],[39.91344639120446,47.31664374199411],[39.9126631861721,47.31737334726706],[39.90973421392783,47.31727120313906],[39.81307812986706,47.331686152411535],[39.74283092465945,47.332532375300914],[39.74038475003786,47.328097499363935],[39.72703807797976,47.32497535539569],[39.686350926805204,47.31578989144247],[39.660279855180455,47.31772335472899],[39.65837012236186,47.31847483255422],[39.65448628370828,47.319073088765364],[39.620411500383106,47.309609627846285],[39.59414730970923,47.29092577979373],[39.58573590223852,47.284676885971436],[39.576552018571526,47.27579867557223],[39.574663743425035,47.27059955391404],[39.575007066178955,47.25990761027246],[39.570906474845415,47.25172199229118],[39.56515581871751,47.24894597407172],[39.55764563347579,47.24935508069146],[39.54987795616866,47.24774785782356],[39.54678805138352,47.24473783572569],[39.54417021538493,47.237285098811796],[39.54457133019266,47.23497805399777],[39.53882067406472,47.236527208925146],[39.53242628777324,47.231294974432856],[39.549167707618935,47.225804126101316]]]},"properties":{"description":"27.delivery","fill":"#1bad03","fill-opacity":0.2,"stroke":"#1bad03","stroke-width":"2","stroke-opacity":0.9}}]}; var default_delivery_module = '27.delivery'; var center_map_module = [47.222109, 39.718813]; var script2 = document.createElement('script'); script2.src = '/sc-modules/yamaps-calculate/connector/script_modal.js?v=31137a6ca0fdf4654b41b0dcd78ec1f673'; script2.async = true; script2.onload = function() {//console.log('Второй скрипт успешно загружен.'); }; script2.onerror = function() {//console.error('Ошибка загрузки второго скрипта.'); }; document.body.appendChild(script2); function makeDeliveryTimeRequired11() { var dd = $(document).find('.wa-desired-date-wrapper'); var parent = dd.closest('.wa-plugin-fields-wrapper'); var label = parent.find('.wa-label'); var new_label = 'Желаемое время доставки'; label.html(new_label); parent.find('#wahtmlcontrol_details_custom_desired_delivery_interval').prop('required', true).addClass('wa-select'); } function validateFields11(){ var dd = $(document).find('.wa-desired-date-wrapper'); var parent = dd.closest('.wa-plugin-fields-wrapper'); var date_inp = dd.find('#wahtmlcontrol_details_custom_desired_delivery_date_str'); var time_select = dd.find('select[name="details[custom][desired_delivery.interval]"]'); var date_val = date_inp.val() || false; var time_val = time_select.val() || false; //var buttonsubmit = document.querySelector('.js-submit-order-button'); parent.find('.wa-error-text').remove(); date_inp.removeClass('wa-error'); time_select.removeClass('wa-error'); if(!date_val || date_val == ''){ date_inp.addClass('wa-error'); date_inp.after('
Обязательное поле
'); //if (buttonsubmit) buttonsubmit.classList.add('d-none'); } else if(!time_val || time_val == ''){ time_select.addClass('wa-error'); time_select.after('
Обязательное поле
'); //if (buttonsubmit) buttonsubmit.classList.add('d-none'); } else { //if (buttonsubmit) buttonsubmit.classList.remove('d-none'); } } function validateFields2(){ var dd = $(document).find('.wa-desired-date-wrapper'); var parent = dd.closest('.wa-plugin-fields-wrapper'); var date_inp = dd.find('#wahtmlcontrol_details_custom_desired_delivery_date_str'); var time_select = dd.find('select[name="details[custom][desired_delivery.interval]"]'); var date_val = date_inp.val() || false; var time_val = time_select.val() || false; var buttonsubmit = document.querySelector('.js-submit-order-button'); parent.find('.wa-error-text').remove(); date_inp.removeClass('wa-error'); time_select.removeClass('wa-error'); if(!date_val || date_val == ''){ if (buttonsubmit) buttonsubmit.classList.add('d-none'); } else if(!time_val || time_val == ''){ if (buttonsubmit) buttonsubmit.classList.add('d-none'); } else { if (buttonsubmit) buttonsubmit.classList.remove('d-none'); } } $(document).on('focus', '#wahtmlcontrol_details_custom_desired_delivery_date_str', function() { //$(this).removeClass('wa-error'); //$(this).closest('.wa-field-wrapper').find('.wa-error-text').remove(); }); $(document).on('focus', '#wahtmlcontrol_details_custom_desired_delivery_interval', function() { //$(this).removeClass('wa-error'); // $(this).closest('.wa-field-wrapper').find('.wa-error-text').remove(); }); $(document).on('wa_order_form_ready', function (e) { //makeDeliveryTimeRequired(); }); $(document).on('wa_order_form_changed', function (e) { //makeDeliveryTimeRequired(); }); $(document).on('wa_order_form_region_changed', function () { //makeDeliveryTimeRequired(); }); $(document).on('wa_order_form_details_changed', function () { // makeDeliveryTimeRequired(); }); $(document).on('click', '.js-submit-order-button', function () { //validateFields(); }); //const intervalId = setInterval(validateFields2, 700); // эмулируем смену адреса для надежного просчета стоимости доставки let isDeliveryCoastFixed = false; function fixDeliveryCoast() { console.log('Start check delivery'); if (isDeliveryCoastFixed) return; console.log('Trying to fix delivery coast...'); const input = document.querySelector('input[name="details[shipping_address][street]"]'); if (input && input.offsetParent !== null) { input.focus(); const clickEvent = new MouseEvent('click', { bubbles: true, view: window }); input.dispatchEvent(clickEvent); input.dispatchEvent(new Event('focus', { bubbles: true })); setTimeout(function() { input.blur(); input.dispatchEvent(new Event('blur', { bubbles: true })); input.dispatchEvent(new Event('change', { bubbles: true })); console.log('Delivery coast fixed successfully!'); isDeliveryCoastFixed = true; }, 300); } else { console.log('Input not available yet'); } } // Запускаем в несколько этапов setTimeout(fixDeliveryCoast, 7000); // Первая попытка setTimeout(fixDeliveryCoast, 9000); // Вторая попытка setTimeout(fixDeliveryCoast, 12000); // Третья попытка setTimeout(fixDeliveryCoast, 15000); // Финальная попытка // Фикс стоимости доставки после ввода адреса (function() { const ADDRESS_INPUT_SELECTOR = 'input[name="details[shipping_address][street]"]'; const COOLDOWN_TIME = 4000; const FIX_DELAY = 300; const SUCCESS_DELAY = 3000; let successTimer = null; let lastTriggerTime = 0; function fixDelivery2Cost() { try { console.log('Trying to fix delivery cost...'); const input = document.querySelector(ADDRESS_INPUT_SELECTOR); if (input && window.getComputedStyle(input).display !== 'none') { input.focus(); const clickEvent = new MouseEvent('click', { bubbles: true, view: window }); input.dispatchEvent(clickEvent); input.dispatchEvent(new Event('focus', { bubbles: true })); setTimeout(() => { input.blur(); input.dispatchEvent(new Event('blur', { bubbles: true })); input.dispatchEvent(new Event('change', { bubbles: true })); console.log('Delivery cost fixed successfully!'); }, FIX_DELAY); } else { console.log('Input not available or hidden'); } } catch (error) { console.error('Error fixing delivery cost:', error); } } function successInputAddress() { console.log('Success: 3 seconds after address input blur'); fixDelivery2Cost(); } document.addEventListener('focus', (e) => { if (e.target.matches(ADDRESS_INPUT_SELECTOR)) { clearTimeout(successTimer); console.log('Address input focused'); } }, true); document.addEventListener('blur', (e) => { if (e.target.matches(ADDRESS_INPUT_SELECTOR)) { clearTimeout(successTimer); const currentTime = Date.now(); if (currentTime - lastTriggerTime >= COOLDOWN_TIME) { successTimer = setTimeout(() => { lastTriggerTime = Date.now(); successInputAddress(); }, SUCCESS_DELAY); console.log('Address input blurred - timer started'); } else { console.log('Address input blurred - cooldown active, skipping'); } } }, true); })();