const yearsSince2011 = new Date().getFullYear() - 2011; function esc(s) { return String(s||'').replace(/&/g,'&').replace(/"/g,'"').replace(//g,'>'); } function imgSrc(path) { if (!path) return './img/hero-bg.webp'; if (path.startsWith('./')) return path; if (path.startsWith('http')) return path; if (/^(equipment|partner|license|activity|hero)_images\//.test(path)) return '/data/' + path; return './img/' + path; } function renderHero(data) { var h = data.hero || {}; var stats = data.hero_stats || []; var phone800 = h.phone_800 || '8 (800) 555-29-31'; var phoneEkb = h.phone_ekb || '8 (343) 237-25-66'; var email = h.email || 'sts_zakaz@mail.ru'; var address = h.address || 'г. Екатеринбург, ул. Московская, 11, оф. 702'; var contactsHtml = ''; if (phone800 && phoneEkb) { contactsHtml += '
' + phone800 + '
' + phoneEkb + '
'; } contactsHtml += '
' + email + '
'; contactsHtml += '
' + address + '
'; var statsHtml = ''; stats.forEach(function(s) { var val = s.is_dynamic == 1 ? yearsSince2011 : s.value; statsHtml += '
' + val + '
' + s.label + '
'; }); var badgeHtml = h.badge_text ? '
' + h.badge_text + '
' : ''; var h1text = (h.h1_text || 'демонтаж нефтегазопроводов по России, утилизация отходов').replace('{years}', yearsSince2011); return badgeHtml + '

' + h1text + '

' + '

' + (h.subtitle || '').replace('{years}', yearsSince2011) + '

' + '
' + contactsHtml + '
' + '
' + '' + (h.button1_text || 'Оставить заявку') + '' + '' + (h.button2_text || 'Наши услуги') + '' + '
' + '
' + statsHtml + '
'; } function renderAbout(data) { var a = data.about || {}; var features = data.about_features || []; var featsHtml = features.map(function(f) { return '
' + (f.svg_icon || '') + '
' + f.title + '' + (f.description || '') + '
'; }).join(''); return '

О компании

' + (a.section_subtitle || '') + '

' + '
' + '
' + '

' + (a.main_heading || '') + '

' + (a.paragraph_1 ? '

' + a.paragraph_1 + '

' : '') + (a.paragraph_2 ? '

' + a.paragraph_2 + '

' : '') + (a.paragraph_3 ? '

' + a.paragraph_3 + '

' : '') + '
' + featsHtml + '
'; } function renderServices(data) { var services = data.services || []; var st = data.settings || {}; var cardsHtml = services.map(function(s) { var items = []; try { items = JSON.parse(s.items || '[]'); } catch(e) {} return '
' + '
' + (s.svg_icon || '') + '
' + '

' + s.title + '

' + (s.description || '') + '

' + (items.length ? '' : '') + '
'; }).join(''); return '

Наши услуги

' + (st.section_services_subtitle || '') + '

' + '
' + cardsHtml + '
'; } function renderSchemes(data) { var schemes = data.work_schemes || []; var st = data.settings || {}; var cardsHtml = schemes.map(function(s) { var items = []; try { items = JSON.parse(s.items || '[]'); } catch(e) {} return '
' + '
' + (s.svg_icon || '') + '
' + '

' + s.title + '

' + (s.description || '') + '

' + (items.length ? '' : '') + '
'; }).join(''); return '

Гибкие схемы работы

' + (st.section_schemes_subtitle || '') + '

' + '
' + cardsHtml + '
'; } function renderProcess(data) { var steps = data.process_steps || []; var st = data.settings || {}; var stepsHtml = steps.map(function(s) { return '
' + (s.step_number || s.sort_order + 1) + '

' + s.title + '

' + (s.description || '') + '

'; }).join(''); return '

Этапы работы

' + (st.section_process_subtitle || '') + '

' + '
' + stepsHtml + '
'; } function renderEquipment(data) { var eq = data.equipment || []; var gallery = data.equipment_gallery || []; var st = data.settings || {}; function getImages(e) { var imgs = []; if (gallery.length) { gallery.filter(function(g) { return g.equipment_id === e.id; }).forEach(function(g) { if (g.image_path) imgs.push(g.image_path); }); } if (imgs.length === 0 && e.image_path) imgs.push(e.image_path); return imgs; } var cardsHtml = eq.map(function(e) { var specs = []; try { specs = JSON.parse(e.specs || '[]'); } catch(e2) {} var imgs = getImages(e); var imgHtml = imgs.length > 0 ? '' + esc(e.name) + '' : '
Нет фото
'; return '
' + imgHtml + '
' + esc(e.brand || '') + '
' + '

' + esc(e.name) + '

' + (e.qty ? '
' + esc(e.qty) + '
' : '') + (specs.length ? '
' + specs.map(function(sp) { return '
' + esc(sp.label) + '' + esc(sp.value) + '
'; }).join('') + '
' : '') + '
'; }).join(''); return '

Наша спецтехника

' + esc(st.section_equipment_subtitle || '') + '

' + '
' + cardsHtml + '
'; } function renderGeography(data) { var geo = data.geo || {}; var regions = data.geo_regions || []; var st = data.settings || {}; var regionsHtml = regions.map(function(r) { return '
' + (r.name || '') + '
'; }).join(''); return '

География присутствия

' + (geo.section_subtitle || st.section_services_subtitle || '') + '

' + '
' + regionsHtml + '
' + (geo.difficult_title ? '

' + geo.difficult_title + '

' + (geo.difficult_desc || '') + '

' : '') + '
'; } function renderLicenses(data) { var licenses = data.licenses || []; var gallery = data.license_gallery || []; var st = data.settings || {}; var cardsHtml = licenses.map(function(l) { return '
' + (l.svg_icon || '') + '

' + l.title + '

' + (l.description || '') + '

'; }).join(''); var galleryHtml = gallery.map(function(g) { return ''; }).join(''); return '

Лицензии и разрешения

' + (st.section_licenses_subtitle || '') + '

' + '
' + cardsHtml + '
' + (gallery.length ? '' : ''); } function renderActivity(data) { var acts = data.public_activities || []; var gallery = data.activity_gallery || []; var st = data.settings || {}; var cardsHtml = acts.map(function(a) { return '
' + (a.svg_icon || '') + '

' + a.title + '

' + (a.description || '') + '

'; }).join(''); var galleryHtml = gallery.length ? '' : ''; return '

Общественная деятельность

' + (st.section_activity_subtitle || '') + '

' + '
' + cardsHtml + '
' + galleryHtml; } function renderPartners(data) { var partners = data.partners || []; var st = data.settings || {}; var duplicated = partners.concat(partners); var trackHtml = duplicated.map(function(p) { return '' + esc(p.name || '') + ''; }).join(''); return '

Наши партнёры

' + (st.section_partners_subtitle || '') + '

' + '
' + trackHtml + '
'; } function renderContacts(data) { var s = data.settings || {}; var h = data.hero || {}; var phone800 = h.phone_800 || s.contact_phone_800 || '8 (800) 555-29-31'; var phoneEkb = h.phone_ekb || s.contact_phone_ekb || '8 (343) 237-25-66'; var email = h.email || s.contact_email || 'sts_zakaz@mail.ru'; var address = h.address || s.contact_address || 'г. Екатеринбург, ул. Московская, 11, оф. 702'; var workHours = (s.contact_work_hours || 'Пн–Пт: 9:00 – 18:00|Сб: 10:00 – 15:00').replace(/\|/g, '
'); var mapImg = s.contact_map_image || './img/secret.webp'; return '

Свяжитесь с нами

' + (s.section_contacts_subtitle || '') + '

' + '
' + '
' + '' + '' + '

Адрес

' + address + '

' + '

Режим работы

' + workHours + '

' + '
' + '
' + '

' + (s.form_title || 'Оставить заявку') + '

' + '

' + (s.form_subtitle || 'Заполните форму и мы свяжемся с вами') + '

' + '
' + '
' + '
' + '
' + '' + '' + '
' + '

Заявка отправлена!

Мы свяжемся с вами в ближайшее время

' + '
'; } function renderAll(data) { return { heroContent: renderHero(data), aboutContainer: renderAbout(data), servicesContainer: renderServices(data), schemesContainer: renderSchemes(data), processContainer: renderProcess(data), equipmentContainer: renderEquipment(data), geographyContainer: renderGeography(data), licensesContainer: renderLicenses(data), activityContainer: renderActivity(data), contactsContainer: renderContacts(data), partnersContainer: renderPartners(data) }; } module.exports = { renderAll };