Сотрудники УМВД России по Одинцовскому городскому округу провели рабочую встречу с жителями жилого компл…
25 июля 2024
Источник фото: МедиаБанк Подмосковья\ Мария Шматкова
25 июля 2024
Глава Одинцовского округа Андрей Иванов и школьники посетили новое кафе «Спортсмены».
25 июля 2024
День открытых дверей прошел в подразделении, расположенном в рабочем поселке Новоивановское.
25 июля 2024
Девелопер проекта ГК «Гранель» уже сдал в эксплуатацию шесть корпусов.
25 июля 2024
Напомним, что по указу президента Российской Федерации 2024 год объявлен Годом семьи.
25 июля 2024
В Одинцовском округе определили зону регламентированного пребывания иностранных граждан, Июль
25 июля 2024
Глава Одинцовского округа Андрей Иванов проверил ход капитального ремонта сетей теплоснабжения в поселке…
19 июля 2024
Глава Одинцовского округа Андрей Иванов вместе с депутатами Андреем Яцышиным и Владимиром Виницким, нача…
19 июля 2024
В посёлке Горбольницы 45 территориального управления Захаровское близится к завершению благоустройство д…
19 июля 2024
«Большое количество обращений связано с транспортной доступностью школы в Немчиновке.
19 июля 2024
Услуга предоставляется бесплатно, а результат направляется в личный кабинет заявителя.
19 июля 2024
В ходе подготовки электросетевого комплекса к предстоящему осенне-зимнему периоду и с целью повышения на…
18 июля 2024
С собой необходимо принести паспорт, полис ОМС и СНИЛС.
18 июля 2024
сезона. Основное время встречи завершилось со счётом 3:0 в пользу подопечных Игоря Звездина.
18 июля 2024
Фото: Министерство жилищной политики Московской области
18 июля 2024
В Одинцовском парке культуры, спорта и отдыха 20 июля пройдёт фитнес-марафон в рамках акции «Ночь в парк…
18 июля 2024
Музей-заповедник А.С.Пушкина - Виджет музея var globalSetups = {};globalSetups["searchPlaceholder"] = "поиск по справочнику культурных объектов";globalSetups["inTheCity"] = "В городе";globalSetups["inTheTheme"] = "В категории";globalSetups["no-found"] = "<span style='padding: 10px'>не найдено</span>";globalSetups["tgIncFreeName"] = "свободно:"; var openEvent = null; var lang_code = ''; (function(m,e,t,r,i,k,a){ m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)}; m[i].l=1*new Date(); for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }} k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a) })(window, document,'script','https://mc.yandex.ru/metrika/tag.js', 'ym'); ym(58983796, "init", { clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true, trackHash:true, ecommerce: "dataLayer" }); window.dataLayer = window.dataLayer || []; var userinfo = {}; var currency_code = '&#8381;'; lang_code = '0'; function tgOnlyTidNormalize(str) { return String(str == null ? '' : str) .toLowerCase() .replace(/ё/g, 'е') .replace(/\s+/g, ' ') .trim(); } function tgOnlyTidDateTs(dateStr) { let p = String(dateStr || '').split('.'); if (p.length !== 3) { return 0; } return new Date( parseInt(p[2], 10), parseInt(p[1], 10) - 1, parseInt(p[0], 10) ).getTime(); } function tgOnlyTidDateLabel(dateStr) { let p = String(dateStr || '').split('.'); if (p.length !== 3) { return dateStr; } let date = new Date( parseInt(p[2], 10), parseInt(p[1], 10) - 1, parseInt(p[0], 10) ); let months = ['янв', 'фев', 'мар', 'апр', 'мая', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек']; let week = ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб']; return '' + '<span class="tg-onlytid-date-day">' + parseInt(p[0], 10) + '</span>' + '<span class="tg-onlytid-date-meta">' + months[date.getMonth()] + ' · ' + week[date.getDay()] + '</span>'; } function tgInitOnlyTidFilters($root) { $root = ($root && $root.length) ? $root : $('.step-onlytid'); let $filters = $root.find('.tg-onlytid-filters'); if (!$filters.length) { return; } let $list = $root.children('.container').first(); let $cards = $list.find('.tg-event-element'); let $calendar = $filters.find('.tg-onlytid-calendar'); $filters.show(); // Календарь строим всегда, даже если список мероприятий пустой let themeToday = $filters.attr('data-theme-today') === '1'; if ( $calendar.length && $filters.attr('data-has-calendar') === '1' && !themeToday ) { tgBuildOnlyTidCalendar($calendar, $cards); } else { $calendar.hide().empty(); } // Кнопка Пушкинской карты только если в списке реально есть значок let hasPushka = $cards.find('.tg-pushka-name').length > 0; $filters .find('.tg-onlytid-pushka') .toggle(hasPushka) .removeClass('active'); function refreshSeparators() { let $currentSep = null; let hasVisibleAfterSep = false; function flushSep() { if ($currentSep) { if ($currentSep.is('[data-theme-id]')) { $currentSep[0].style.setProperty('display', hasVisibleAfterSep ? 'block' : 'none', 'important'); return; } if (hasVisibleAfterSep) { $currentSep.show(); } else { $currentSep.hide(); } } } $list.children('.tg-event-theme_separate, .tg-event-element').each(function() { let $el = $(this); if ($el.hasClass('tg-event-theme_separate')) { flushSep(); $currentSep = $el; hasVisibleAfterSep = false; $el.hide(); return; } // Initial rendering may precede activation of the parent purchase // step. Only the card's filter state determines its category heading. if ($currentSep && $currentSep.is('[data-theme-id]') ? $el.css('display') !== 'none' : $el.is(':visible')) { hasVisibleAfterSep = true; } }); flushSep(); } function tgFilterShow($el) { $el.each(function() { this.style.removeProperty('display'); }); } function tgFilterHide($el) { $el.each(function() { this.style.setProperty('display', 'none', 'important'); }); } function applyFilters() { let q = tgOnlyTidNormalize($filters.find('.tg-onlytid-search').val()); let onlyPushka = $filters.find('.tg-onlytid-pushka').hasClass('active'); let visible = 0; let total = $cards.length; $cards.each(function() { let $card = $(this); let text = tgOnlyTidNormalize( ($card.attr('data-search') || '') + ' ' + $card.text() ); let okSearch = !q || text.indexOf(q) !== -1; let okPushka = !onlyPushka || $card.find('.tg-pushka-name').length > 0; let ok = okSearch && okPushka; if (ok) { tgFilterShow($card); visible++; } else { tgFilterHide($card); } }); $filters.find('.tg-onlytid-count').text(visible + ' из ' + total); if (total === 0) { $filters.find('.tg-onlytid-empty') .show() .text('На выбранную дату мероприятий нет. Выберите другую дату в календаре.'); } else { $filters.find('.tg-onlytid-empty') .toggle(visible === 0) .text('По выбранным фильтрам ничего не найдено'); } refreshSeparators(); } $filters.off('.tgOnlyTid'); $filters.on('input.tgOnlyTid', '.tg-onlytid-search', function() { applyFilters(); }); $filters.on('click.tgOnlyTid', '.tg-onlytid-pushka', function(e) { e.preventDefault(); $(this).toggleClass('active'); applyFilters(); }); $filters.on('click.tgOnlyTid', '.tg-onlytid-clear', function(e) { e.preventDefault(); $filters.find('.tg-onlytid-search').val(''); $filters.find('.tg-onlytid-pushka').removeClass('active'); applyFilters(); }); applyFilters(); } globalSetups["step-hall"] = "Выберите свой билет"; globalSetups["step-user"] = "Укажите Заказчика"; //console.log('globalSetups', globalSetups); var device_vk = ''; var hash = ''; var globalStep = 0; var activeDates = []; var device_ym = 0; maxTicket = 9; device_ym = 26816901; ym(26816901, "init", { clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true, trackHash:true }); var hallPreviewScope = "1:1:0"; var sidhash = 'da957421-ac82-429a-8be2-fc03bb669a75'; var port = 1444; var deviceType = 'pc'; var userinfo = {}; var hs = 'f1c1592588411002af340cbaedd6fc33'; var utm_source = getParameterByName('utm_source'); // Optional tracking must never prevent the widget opening, even when a // browser blocks cookies or contains an old malformed percent-encoded one. (function(){ try{ var cookie=function(name,raw){ var part; try{part=(document.cookie||'').split(';').filter(function(item){return item.trim().indexOf(name+'=')===0;})[0];} catch(_){return '';} if(!part)return ''; var item=part.trim().slice(name.length+1); if(raw)return item; try{return decodeURIComponent(item);}catch(_){return item;} }; var saved=null; try{saved=JSON.parse(cookie('tgutm',true));} catch(_){try{saved=JSON.parse(cookie('tgutm'));}catch(__){}} if(!saved||typeof saved!=='object'||Array.isArray(saved))saved=null; var trackingId=function(value,gaId){ if(typeof value!=='string'&&typeof value!=='number')return ''; value=String(value); if(gaId)value=value.replace(/^GA[0-9]+\.[0-9]+\./,''); return /^[A-Za-z0-9._-]{1,24}$/.test(value)?value:''; }; var tgWidgetPageTracking = {"source":"","medium":"","campaign":"","term":"","content":"","referrer":"","landing":"","findreq":"","ga":"","ya":""}; var tgWidgetHasPageCampaign=['utm_source','utm_medium','utm_campaign','utm_term','utm_content'].some(function(key){return !!getParameterByName(key);}); if(tgWidgetHasPageCampaign||!saved){ tgWidgetPageTracking.ga=trackingId(tgWidgetPageTracking.ga,true)||trackingId(cookie('_ga'),true); var ymCookie=cookie('_ym_uid'); if(!ymCookie){try{ymCookie=GetYMCID();}catch(_){}} tgWidgetPageTracking.ya=trackingId(tgWidgetPageTracking.ya,false)||trackingId(ymCookie,false); var encoded=encodeURIComponent(JSON.stringify(tgWidgetPageTracking)); // Use the same bounded legacy cookie contract as the parent // SDK, without adding storage or changing session identity. while(encoded.length>3800){ var key=Object.keys(tgWidgetPageTracking).reduce(function(a,b){ return encodeURIComponent(tgWidgetPageTracking[a]).length>encodeURIComponent(tgWidgetPageTracking[b]).length?a:b; }); tgWidgetPageTracking[key]=tgWidgetPageTracking[key].slice(0,Math.floor(tgWidgetPageTracking[key].length/2)).replace(/[\uD800-\uDBFF]$/,''); encoded=encodeURIComponent(JSON.stringify(tgWidgetPageTracking)); } document.cookie='tgutm='+encoded+'; path=/; SameSite=Lax'; } }catch(_){ /* Tracking is best effort; checkout continues unchanged. */ } })(); ym(58983796,'reachGoal','tg_startView'); if(device_ym) ym(device_ym,'reachGoal','tg_startView'); if (device_ym && typeof ga === 'function') ga('send', 'event', 'tg', 'startView'); if (device_vk) { window._tmr = window._tmr || []; window._tmr.push({ type: 'reachGoal', id: device_vk, goal: 'tg_startView' }); } globalTHEATER = '';globalStep = 1;globalTID='2'; let arr = []; arr[0] = "f1c1592588411002af340cbaedd6fc33"; arr[1] = '0'; arr[2] = '0'; arr[3] = '2'; arr[4] = '0'; arr[5] = '0'; arr[6] = '0'; arr[7] = ''; function tgPad2(n) { n = parseInt(n, 10); return n < 10 ? '0' + n : '' + n; } function tgDateDotFromAny(dateStr) { dateStr = String(dateStr || '').trim(); // 05.07.2026 if (/^\d{2}\.\d{2}\.\d{4}$/.test(dateStr)) { return dateStr; } // 05-07-2026 if (/^\d{2}-\d{2}-\d{4}$/.test(dateStr)) { let p = dateStr.split('-'); return p[0] + '.' + p[1] + '.' + p[2]; } // 2026-07-05 if (/^\d{4}-\d{2}-\d{2}/.test(dateStr)) { let p = dateStr.substr(0, 10).split('-'); return p[2] + '.' + p[1] + '.' + p[0]; } return dateStr; } function tgBuildOnlyTidCalendar($calendar, $cards) { let activeDates = {}; $cards.each(function() { let dates = String($(this).attr('data-dates') || '').split('|'); dates.forEach(function(date) { date = tgDateDotFromAny(date); if (date) { activeDates[date] = true; } }); }); let monthNames = [ 'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь' ]; let weekNames = ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб']; let $filters = $calendar.closest('.tg-onlytid-filters'); let numOfDays = parseInt($filters.attr('data-days'), 10); if (isNaN(numOfDays) || numOfDays < 1) { numOfDays = 30; } if (numOfDays > 180) { numOfDays = 180; } let startDate = new Date(); startDate.setHours(0, 0, 0, 0); let lastMonth = -1; let lastYear = -1; let html = '' + '<button type="button" class="tg-onlytid-calendar-arrow tg-onlytid-calendar-prev" aria-label="Назад">‹</button>' + '<div class="tg-onlytid-calendar-viewport">' + '<div class="tg-onlytid-calendar-scroll">'; while (numOfDays--) { let year = startDate.getFullYear(); let month = startDate.getMonth(); let day = tgPad2(startDate.getDate()); let monthNum = tgPad2(month + 1); if (lastYear !== year) { lastYear = year; html += '<div class="tg-onlytid-calendar-year">' + year + '</div>'; } if (lastMonth !== month) { lastMonth = month; html += '<div class="tg-onlytid-calendar-month">' + monthNames[month] + '</div>'; } let dotDate = day + '.' + monthNum + '.' + year; let dashDate = day + '-' + monthNum + '-' + year; let isWeekend = startDate.getDay() % 6 === 0; let hasEvents = !!activeDates[dotDate]; let href = '/tickets/f1c1592588411002af340cbaedd6fc33/' + arr[1] + '/' + arr[2] + '/' + arr[3] + '/' + dashDate + ':' + dashDate + '/' + '0/' + (arr[6] ? arr[6] : '') + '/' + (arr[7] ? arr[7] : '') + '/widget4'; html += '' + '<a class="tg-onlytid-calendar-day' + (isWeekend ? ' weekend' : '') + (hasEvents ? ' has-events' : ' no-events') + '" href="' + href + '" data-date="' + dotDate + '">' + '<span class="tg-onlytid-calendar-week">' + weekNames[startDate.getDay()] + '</span>' + '<span class="tg-onlytid-calendar-number">' + day + '</span>' + (hasEvents ? '<span class="tg-onlytid-calendar-dot"></span>' : '') + '</a>'; addDay(startDate); } html += '' + '</div>' + '</div>' + '<button type="button" class="tg-onlytid-calendar-arrow tg-onlytid-calendar-next" aria-label="Вперёд">›</button>'; $calendar.html(html).show(); tgInitOnlyTidCalendarArrows($calendar); } function tgInitOnlyTidCalendarArrows($calendar) { let $viewport = $calendar.find('.tg-onlytid-calendar-viewport'); let $prev = $calendar.find('.tg-onlytid-calendar-prev'); let $next = $calendar.find('.tg-onlytid-calendar-next'); function getStep() { let $day = $calendar.find('.tg-onlytid-calendar-day').first(); if (!$day.length) { return 280; } let dayWidth = $day.outerWidth(true); // примерно 5 дней за одно нажатие return dayWidth * 5; } function updateArrows() { let el = $viewport.get(0); if (!el) { return; } let maxScroll = el.scrollWidth - el.clientWidth; $prev.toggleClass('disabled', el.scrollLeft <= 2); $next.toggleClass('disabled', el.scrollLeft >= maxScroll - 2); } $prev.off('click.tgCalendar').on('click.tgCalendar', function(e) { e.preventDefault(); $viewport.stop(true).animate({ scrollLeft: $viewport.scrollLeft() - getStep() }, 220, updateArrows); }); $next.off('click.tgCalendar').on('click.tgCalendar', function(e) { e.preventDefault(); $viewport.stop(true).animate({ scrollLeft: $viewport.scrollLeft() + getStep() }, 220, updateArrows); }); $viewport.off('scroll.tgCalendar').on('scroll.tgCalendar', updateArrows); setTimeout(updateArrows, 50); } $(document).ready(function() { let $stepEvent = $('.step-event'); let $eventsContain = $stepEvent.children('.container').not('[data-tg5-event-tags]').first(); let $events = $('.tg-events', $eventsContain); let $pageTitle = $('.page-title', $stepEvent); let nuHallPreview = null; let nuLoading = true; let $l = $('<div class="loading128"></div>').appendTo('body'); function showNuHallPreview() { if (!nuLoading || nuHallPreview || !window.TgHallPreview || !window.TgHallPreview.mountInitial || typeof globalSID === 'undefined' || typeof globalEID === 'undefined') return; nuHallPreview = window.TgHallPreview.mountInitial({sid: globalSID, eid: globalEID}); } function finishNuHallPreview() { nuLoading = false; document.removeEventListener('tg-hall-preview-ready', showNuHallPreview); if (nuHallPreview) { nuHallPreview.destroy(); nuHallPreview = null; } } // The bundle loads hall-step in its own ready callback, after this one. document.addEventListener('tg-hall-preview-ready', showNuHallPreview); showNuHallPreview(); const nuZipLevel = 6; const nuZipDebug = false || new URLSearchParams(window.location.hash.slice(1)).get('nu_test') === '1'; const nuStartedAt = performance.now(); function showNuMetrics(xhr, status) { if (!nuZipDebug) return; const nuUrl = new URL(this.url, document.baseURI).href; setTimeout(function() { const entries = performance.getEntriesByName(nuUrl).filter(entry => entry.initiatorType === 'xmlhttprequest' && entry.startTime >= nuStartedAt); const timing = entries[entries.length - 1]; const readNumber = name => { const value = xhr.getResponseHeader(name); return value !== null && value !== '' && Number.isFinite(Number(value)) ? Number(value) : null; }; const metric = { status: xhr.status + ' ' + status, level: xhr.getResponseHeader('X-NU-Gzip-Level') || 'нет данных', json: readNumber('X-NU-Json-Bytes'), body: timing && timing.encodedBodySize > 0 ? timing.encodedBodySize : readNumber('X-NU-Body-Bytes'), request: timing && timing.responseEnd > 0 ? timing.responseEnd - timing.startTime : null, wait: timing && timing.responseStart > 0 ? timing.responseStart - timing.requestStart : null, download: timing && timing.responseStart > 0 ? timing.responseEnd - timing.responseStart : null, api: readNumber('X-NU-Api-Ms'), server: readNumber('X-NU-Server-Ms'), gzip: readNumber('X-NU-Gzip-Ms') }; // Explicit diagnostics remain inspectable without console noise. window.TgNuMetrics = metric; }, 0); } if (window.TgWidget5EventTags) window.TgWidget5EventTags.render(null); $.ajax({ url: "nu", type: "POST", data: {payload: 'eyJ0aGVtZXMiOlsyXSwiZGF0ZV9mcm9tIjoiMjQtMTAtMjAyNiIsImRhdGVfdG8iOiIyMi0wMS0yMDI3IiwiZGF0ZV9hdXRvIjoiWSIsImVpZCI6WzBdLCJzaWQiOlswXSwiaXAiOiIxODUuMTkyLjExMS4xMzAiLCJicm93c2VyIjoidW5rbm93biIsImJyb3dzZXJfdmVyc2lvbiI6InVua25vd24iLCJwbGF0Zm9ybSI6InVua25vd24iLCJkZXZpY2VfdHlwZSI6InBjIiwiZ2EiOiIiLCJxdWVyeSI6IiIsImZpbmRyZXEiOiIiLCJjdXJyZW5jeV9pZCI6IjEiLCJ5YSI6IiIsInNvdXJjZV9tYWluIjoiIiwibWVkaXVtX21haW4iOiIiLCJjYW1wYWlnbl9tYWluIjoiIiwicmVmZXJlciI6IiIsInV0bSI6bnVsbCwiZ2VvX2NvdW50cnkiOiJSVSIsImdlb19yZWdpb24iOiJTdC4tUGV0ZXJzYnVyZyIsImdlb19jaXR5IjoiU3QgUGV0ZXJzYnVyZyIsInNob3dfc2Vzc2lvbnMiOiJ0IiwiZmlyc3RfdGhlYXRlciI6ImFsbCIsImNhdGFsb2dfbmF2aWdhdGlvbiI6IjEiLCJjYXRhbG9nX3RoZWF0ZXJzIjoiMCIsImNhdGFsb2dfdGhlbWVzIjoiMiJ9', zip_level: nuZipLevel, zip_debug: nuZipDebug ? 1 : 0}, dataType: "json", timeout: 30000, complete: [$.ajaxSettings.complete, showNuMetrics] }).done((d) => { // Destroy before the live renderer binds its document/window handlers. finishNuHallPreview(); //cl(d, "nu"); // console.log(d, 'nu'); $l.remove(); //hs let currentThemeAll = {}; const catalogSummary = false; const catalogPage = true; const catalogNavigation = catalogPage && d.catalog_navigation && d.catalog_navigation.version === 1 ? d.catalog_navigation : null; const catalogScope = {"catalogTheaters":"0","catalogThemes":"2","catalogEvents":"0"}; const useGlobalThemes = catalogPage && false; const themeFlag = value => ['1', 't', 'true', 'y'].includes(String(value).toLowerCase()); const themeView = theme => { const globalId = String(theme.global_theme_id || ''); const mapped = useGlobalThemes && /^[1-9][0-9]*$/.test(globalId) && theme.global_theme_name && themeFlag(theme.global_theme_visible); return {id: mapped ? 'global-' + globalId : String(theme.theme_id), name: mapped ? theme.global_theme_name : theme.themes_name}; }; if (catalogPage) { const options = String(arr[7] || '').split(';').filter(option => option && !/^catalog(?:Theaters|Themes|Events):/.test(option)); options.push('catalogTheaters:' + catalogScope.catalogTheaters, 'catalogThemes:' + catalogScope.catalogThemes); if (catalogScope.catalogEvents !== '0') options.push('catalogEvents:' + catalogScope.catalogEvents); arr[7] = options.join(';') + ';'; } let displayedTheaters = catalogNavigation && Array.isArray(catalogNavigation.theaters) ? catalogNavigation.theaters : (Array.isArray(d.theaters) ? d.theaters : []); if (catalogNavigation && Array.isArray(catalogNavigation.themes)) d.themes = catalogNavigation.themes; const venueScope = catalogPage ? catalogScope.catalogTheaters : arr[2]; const requestedVenueIds = !venueScope || venueScope === '0' || venueScope === 'all' ? null : new Set(String(venueScope).split(',')); displayedTheaters = displayedTheaters.filter(theater => !requestedVenueIds || requestedVenueIds.has(String(theater.id))); if((d.theaters || arr[2]=='all' || arr[2].indexOf(',') !== -1) && true && true){ let $stepTheaters = $('.step-theaters').toggle(true && (!catalogPage || displayedTheaters.length > 0)); if (catalogPage) $stepTheaters.removeClass('tg-selected'); let $theaters = $('.container', $stepTheaters); let s = ''; if(!d.theaters) s = 'Площадки недоступны'; else for(const theater of displayedTheaters){ s += '<div class="theaterContainer transition shadow-md'+(theater.id==arr[2]?' active':'')+'"><a href="/tickets/f1c1592588411002af340cbaedd6fc33/'+ arr[1]+'/'+ theater.id+'/'+(catalogPage ? arr[3] : '0')+'/'+(catalogPage ? arr[4] : '0')+'/'+(catalogPage ? arr[5] : '0')+'/'+(arr[6]?arr[6]:'')+'/' +(arr[7]?arr[7]:'')+'/widget4"><div>'; s += '<div data-id="64" class="tg-theater-element" style="background:url(/api/tickets/files/'+sidhash+'/'+theater.file_id+'_ws.jpg) no-repeat center;"></div>'; s += '<div class="name">'+theater.name+'</div>'; s += '<div class="category">'+theater.thname+'</div>'; s += '<div class="city">'+theater.city+' <span class="address">'+theater.address+'</span></div></div></a>'; s += '<div class="code"><a href="https://'+theater.code+'.muscom.ru" target="_blank"><span>'+theater.code+'.muscom.ru</span></a></div>'; //s += '<div class="preview_text"> <span>'+theater.preview_text+'</span></div>'; s += '</div>'; } if (catalogPage && String(arr[2]) !== catalogScope.catalogTheaters) { const allVenuesUrl = '/tickets/' + arr[0] + '/' + arr[1] + '/' + catalogScope.catalogTheaters + '/' + arr[3] + '/' + arr[4] + '/' + arr[5] + '/0/' + arr[7] + '/widget4'; s += '<div class="tg-theater-all"><a href="' + tgEscapeHtml(allVenuesUrl) + '">Все площадки</a></div>'; } $theaters.html(s); $theaters.find('.theaterContainer.active > a').attr('aria-current', 'true'); if (catalogPage && window.TgCatalogNavigation) window.TgCatalogNavigation.renderLinks($theaters[0], { kind: 'venues', layout: "default", label: 'Площадки', selector: '.theaterContainer > a,.tg-theater-all > a', allLabel: 'Все площадки', allSelected: String(arr[2]) === catalogScope.catalogTheaters, nameSelector: '.name', imageSelector: '.tg-theater-element', descriptionSelector: '.city' }); if(!catalogPage && arr[3] === '0' && (arr[2] == 'all' || arr[2].indexOf(',') !== -1)){ $('.step-themes').hide(); return; } } let selectedThemeToday = false; if(d.themes){ let $stepThemes = $('.step-themes'); let $themes = catalogPage ? $('.step-onlytid [data-catalog-themes]') : $('.container', $stepThemes); if (catalogPage) $stepThemes.hide().removeClass('step-show'); let s = '<div class="page-subtitle"></div>'; s += '<div class="tg-themes tg-theme-menu">'; if (catalogPage && String(arr[3]) !== catalogScope.catalogThemes) { const allThemesUrl = '/tickets/' + arr[0] + '/' + arr[1] + '/' + arr[2] + '/' + catalogScope.catalogThemes + '/' + arr[4] + '/' + arr[5] + '/0/' + arr[7] + '/widget4'; s += '<a class="tg-theme-cnt-1" href="' + tgEscapeHtml(allThemesUrl) + '"><div class="tg-theme-element-container"><div class="tg-theme-name">Все категории</div></div></a>'; } let menuThemes = d.themes; if (useGlobalThemes && Array.isArray(d.themes)) { const groups = new Map(); const allowed = catalogScope.catalogThemes === '0' ? null : new Set(String(catalogScope.catalogThemes).split(',')); const selected = String(arr[3]).split(',').filter(id => /^[1-9][0-9]*$/.test(id)); for (const theme of d.themes) { currentThemeAll[theme.theme_id] = theme; if (selected.includes(String(theme.theme_id)) && themeFlag(theme.today)) selectedThemeToday = true; if ((allowed && !allowed.has(String(theme.theme_id))) || (theme.cnt !== undefined && Number(theme.cnt) <= 0) || (themeFlag(theme.hide) && !selected.includes(String(theme.theme_id)))) continue; const view = themeView(theme); if (!groups.has(view.id)) groups.set(view.id, {...theme, themes_name:view.name, localIds:[], cnt:0}); const group = groups.get(view.id); group.localIds.push(String(theme.theme_id)); group.cnt += theme.cnt === undefined ? 1 : Number(theme.cnt); } menuThemes = [...groups.values()].map(group => ({...group, theme_id:group.localIds.join(','), ui_selected:selected.length > 0 && selected.every(id => group.localIds.includes(id))})); } if (typeof d.themes === "undefined") { }else for (let theme of menuThemes){ if (catalogPage && theme.cnt !== undefined && Number(theme.cnt) <= 0) continue; if (catalogSummary && ['t', 'true', '1', 'y'].includes(String(theme.hide).toLowerCase())) continue; if (!useGlobalThemes) currentThemeAll[theme.theme_id] = theme; if (typeof theme.cnt === "undefined") theme.cnt =1; if(theme.theme_id=='2'){ if ( String(theme.today).toLowerCase() === 't' ) { selectedThemeToday = true; } // currentTheme = theme; }//show_sessions:Y;hide_sessions:Y; s += '<a class="tg-theme-cnt-' + (theme.cnt?theme.cnt:'0') + '" href="/tickets/f1c1592588411002af340cbaedd6fc33/'+ arr[1]+'/'+arr[2]+'/' +theme.theme_id+'/'+(catalogPage ? arr[4] : '0')+'/'+(catalogPage ? arr[5] : '0')+'/'+(arr[6]?arr[6]:'')+'/' + (theme.period?"":"" ) +(arr[7]?arr[7]:'')+'/widget4"><div style="'+ (theme.color?'--theme-color:#'+theme.color+';':'')+'" class="tg-theme-element-container '+((theme.ui_selected || theme.theme_id == arr[3])?'active-theme':'') +'"><div data-id="'+theme.theme_id+'" class="tg-theme-element '+((theme.ui_selected || theme.theme_id == arr[3])?'active-theme':'') +'" style="'+ (theme.color?'border-color: #'+theme.color+';box-shadow: inset 1px 1px 2px 1px #'+theme.color+';':'') +( parseInt(theme.file_id)? 'background:url(/api/tickets/files/'+sidhash+'/'+theme.file_id+'_ws.'+theme.ext+') no-repeat center;':'' /*'background:url(http://194.50.143.85/api/tickets/uploads/files/'+theme.dir+'/ws_'+theme.file_id+'.webp) no-repeat center;'*/ )+'"></div><div class="tg-theme-name">' + (useGlobalThemes ? tgEscapeHtml(theme.themes_name) : theme.themes_name) + '</div>'+ ( theme.preview_text ? '<div class="tg-theme-desc">' + (theme.preview_text) + '</div>' : '' )+'</div></a>'; } s += '</div>'; $themes.html(s); $themes.find('.active-theme').closest('a').attr('aria-current', 'true'); if (catalogPage && window.TgCatalogNavigation) window.TgCatalogNavigation.renderLinks($themes[0], { kind: 'themes', layout: "default", label: 'Категории мероприятий', selector: '.tg-themes > a', allLabel: 'Все категории', allSelected: String(arr[3]) === catalogScope.catalogThemes, nameSelector: '.tg-theme-name', imageSelector: '.tg-theme-element', descriptionSelector: '.tg-theme-desc' }); if (catalogPage) $themes.toggle(true); } $('.step-onlytid .tg-onlytid-filters') .attr('data-theme-today', selectedThemeToday ? '1' : '0'); if (selectedThemeToday) { $('.step-onlytid .tg-onlytid-calendar').hide().empty(); } if(d.errorEvents){ if( d.errorEvents == "Билет" || d.errorEvents == "К сожалению, все билеты на данное мероприятие распроданы"){ d.errorEvents = d.errorEvents; } $('.step-event .container').html(d.errorEvents); $('.step-hall .container').html(d.errorEvents); $('.step-onlytid .container').html( '<div class="tg-onlytid-no-events">' + d.errorEvents + '</div>' ); if (typeof tgInitOnlyTidFilters === 'function') { tgInitOnlyTidFilters($('.step-onlytid')); } return; } if(d.error){ let errorText = "Ошибка при загрузке"; if( d.error == "http-code: 0"){ errorText = 'Сервер недоступен. Повторите через несколько минут.'; } $('.step-event .container').html(errorText); $('.step-hall .container').html(errorText); $('.step-onlytid .container').html( '<div class="tg-onlytid-no-events">' + errorText + '</div>' ); if (typeof tgInitOnlyTidFilters === 'function') { tgInitOnlyTidFilters($('.step-onlytid')); } return; } var last_date = ''; function showSesName(session, type){ let s = ''; let t = ''; if(last_date!=session.session_date) { s += '<div class="tg-ses-date-name">'+session.session_date+'</div>'; last_date = session.session_date; } t = session.session_time; let price_text = "0"; if(session.prices){ let p_arr = session.prices.split("-"); if(p_arr[0] == p_arr[1]) price_text = (p_arr[0]/ 100).format(2); else price_text = (p_arr[0]/ 100).format(2) + ' - '+(p_arr[1]/ 100).format(2); } const sessionUrl = '/tickets/' + arr[0] + '/' + arr[1] + '/' + arr[2] + '/' + session.theme_id + '/' + arr[4] + '/' + session.eid + '/' + session.sid + '/' + arr[7] + '/widget4'; const available = Number(session.tg_free) > 0 && !['1', 't', 'true', 'y'].includes(String(session.is_presale).toLowerCase()); const label = [session.session_date || session.start_date, t || session.sname].filter(Boolean).join(', '); const tag = available ? 'a' : 'span'; return '<' + tag + ' class="tg-event-catalog-session"' + (available ? ' href="' + tgEscapeHtml(sessionUrl) + '"' : ' aria-disabled="true"') + '><strong>' + tgEscapeHtml(label || 'Выбрать сеанс') + '</strong>' + (Object.keys(halls).length > 1 && session.hall_name ? '<span>' + tgEscapeHtml(session.hall_name) + '</span>' : '') + (available ? (session.prices ? '<span>' + tgEscapeHtml(price_text) + ' &#8381;</span>' : '') : '<span>Недоступно</span>') + '</' + tag + '>'; s += '<div class="tg-events-session-element-cont"><div><a href="#null"><div eid="'+session.eid+'" sid="'+session.sid+'" hid="'+session.hall_id+'" class="tg-events-session-element tg-open-event'+ ( (session.events_type_id == 2 || session.events_type_id == 4) ? ' complex':'') + '" data-id="'+session.sid+'">'+t+(Object.keys(halls).length > 1?' '+halls[session.hall_id]:'')+'</div></a></div><div class="tg-events-session-element-right"><div class="tg-events-session-element-theater"><div>'+session.t_name+'</div><div class="tg-events-session-element-hall">'+session.hall_name+'</div></div>'+(session.prices?'<div class="tg-events-session-element-price">'+price_text+' &#8381;</div>':'')+'<div class="tg-events-session-element-free">Свободно: '+session.tg_free+'</div></div><div class="tg-events-session-element-button"><a href="#null"><div eid="'+session.eid+'" sid="'+session.sid+'" hid="'+session.hall_id+'" class="tg-events-session-element tg-open-event'+ ( (session.events_type_id == 2 || session.events_type_id == 4) ? ' complex':'') + '" data-id="'+session.sid+'">Купить</div></a></div></div>'; return s; } let events = {}; let halls = {}; let currentTheme = {}; const catalogRows = []; let $stepThemes = $('.step-onlytid'); let $themes = $('.container', $stepThemes); let s = ''; if((d.r && d.r.length) || catalogRows.length){ let eventsPos = {}; for (let k in d.r){ let event = d.r[k]; if(!events [event.eid]){ eventsPos[k] = event.eid; events [event.eid] = {}; events [event.eid]["sessions"] = []; events [event.eid]["ename"] = event.ename; events [event.eid]["age_category"] = event.age_category; events [event.eid]["theme_id"] = event.theme_id; events [event.eid]["short_description"] = event.short_description; events [event.eid]["preview_text"] = event.preview_text; events [event.eid]["detail_text"] = event.detail_text; events [event.eid]["event_tags"] = /^[1-9][0-9]*$/.test(String(globalEID)) && Number(globalEID) <= 2147483647 && Number(event.eid) === Number(globalEID) && Array.isArray(d.event_tags) ? d.event_tags : []; events [event.eid]["session_date"] = event.session_date; events [event.eid]["session_time"] = event.session_time; events [event.eid]["event_type_name"] = event.event_type_name; events [event.eid]["eid"] = event.eid; events [event.eid]["g"] = event.g; events [event.eid]["widget5_session_naming"] = event.widget5_event_naming; events [event.eid]["pushka"] = event.pushka; if(event.is_presale) events [event.eid]["presale_text"] = event.presale_text; if(event.file_id){ //events [event.eid]["preview_file"] = event.file_id+'.'+event.ext; events [event.eid]["preview_file"] = event.file_id+'_wxm.'+event.ext; events [event.eid]["preview_file_300"] = event.file_id+'_ws.'+event.ext; } } if(event.hall_id){ halls[event.hall_id] = event.hall_name; } events [event.eid]["sessions"].push(event); } //console.log('currentThemeAll', currentThemeAll); // Keep event order within a category, but render each category once. const eventsByTheme = new Map(); for (const eid of Object.values(eventsPos)) { const themeId = themeView(currentThemeAll[events[eid].theme_id] || {theme_id:events[eid].theme_id}).id; if (!eventsByTheme.has(themeId)) eventsByTheme.set(themeId, []); eventsByTheme.get(themeId).push(eid); } eventsPos = [].concat(...eventsByTheme.values()); let lastTheme = ""; for (let ik in eventsPos){ k = eventsPos[ik]; let event = events[k]; let sessions = event.sessions; // console.log('event.theme_id', event.theme_id); //if(!currentThemeAll [ event.theme_id ]) // continue; currentTheme = currentThemeAll [ event.theme_id ]?currentThemeAll [ event.theme_id ]:{ "id":event.theme_id }; let eventFilterDates = []; let eventFilterDateMap = {}; let eventFilterHalls = event.catalogSummary ? event.catalogHalls.slice() : []; let eventFilterTimes = []; for (let fs of sessions) { if (fs.start_date && !eventFilterDateMap[fs.start_date]) { eventFilterDateMap[fs.start_date] = true; eventFilterDates.push(fs.start_date); } if (fs.hall_name && eventFilterHalls.indexOf(fs.hall_name) === -1) { eventFilterHalls.push(fs.hall_name); } if (fs.session_time && eventFilterTimes.indexOf(fs.session_time) === -1) { eventFilterTimes.push(fs.session_time); } } let eventPushka = ( event.pushka && ['0', 'f', 'false', 'n', 'no'].indexOf(String(event.pushka).toLowerCase()) === -1 ) ? 1 : 0; let eventDescSearch = $('<div>') .html(event.preview_text ? event.preview_text : event.short_description) .text(); let eventFilterSearch = [ event.ename, event.age_category, currentTheme.themes_name || '', eventDescSearch, eventFilterHalls.join(' '), eventFilterTimes.join(' ') ].join(' '); let eventFilterSearchAttr = (typeof tgEscapeHtml === 'function') ? tgEscapeHtml(eventFilterSearch) : String(eventFilterSearch) .replace(/&/g, '&amp;') .replace(/"/g, '&quot;') .replace(/</g, '&lt;') .replace(/>/g, '&gt;'); //if(sessions.length==1){ // arr[6] = sessions[0].sid; //}else arr[6] = 0; const displayCategory = themeView({...currentTheme, theme_id:event.theme_id}); const categoryId = displayCategory.id; if (categoryId !== lastTheme) { lastTheme = categoryId; if (String(arr[3]) !== categoryId) { const categoryName = displayCategory.name || event.themes_name || 'Мероприятия'; s += '<h2 data-id="' + tgEscapeHtml(categoryId) + '" data-theme-id="' + tgEscapeHtml(categoryId) + '" class="tg-event-theme_separate"><span>' + tgEscapeHtml(categoryName) + '</span></h2>'; } } //console.log(currentTheme, 'currentThemeAll11'); //"/api/tickets/files/"+d.sidhash+'/'+hall.file_id+'.'+hall.ext s += '<div data-id="'+k+'" class="tg-event-element" data-pushka="'+eventPushka+'" data-dates="'+eventFilterDates.join('|')+'"' +(event.catalogSummary ? ' data-date-ranges="'+tgEscapeHtml(JSON.stringify(event.catalogRanges))+'"' : '') +' data-search="'+eventFilterSearchAttr+'">'; let a = '<a href="/tickets/f1c1592588411002af340cbaedd6fc33/'+arr[1]+'/'+arr[2]+'/' +(currentTheme.theme_id?currentTheme.theme_id:event.theme_id)+'/' + (arr[4] == '0'?( (event.catalogSummary ? event.catalogToday : (currentTheme.today == 't' || ( event["sessions"] && event["sessions"][0] && event["sessions"][0]["today"] == 't')))?'today':'0' ):arr[4])+'/'+k+'/'+(arr[6]?arr[6]:'') // +'/'+(currentTheme.today == 't'?'0':'0') +'/'+(arr[7]?arr[7]:'')+'/widget4">'; let a_event = '<a href="/tickets/f1c1592588411002af340cbaedd6fc33/'+arr[1]+'/'+arr[2]+'/' +(currentTheme.theme_id?currentTheme.theme_id:event.theme_id)+'/' + (arr[4] == '0'?( (event.catalogSummary ? event.catalogToday : (currentTheme.today == 't' || ( event["sessions"] && event["sessions"][0] && event["sessions"][0]["today"] == 't')))?'today':'0' ):arr[4])+'/'+k+'/'+(currentTheme.today == 't'?'0':'0') +'/'+(arr[7]?arr[7]:'')+'/widget4">'; s += '<div class="tg-event-element-name-tr"><div '; if(event.preview_file_300) s += 'style="background:url(/api/tickets/files/'+sidhash+'/'+event.preview_file_300+') no-repeat center;"'; s += ' class="tg-event-element-name"><div class="tg-event-image"'; if(event.preview_file_300) s += 'style="background-image:url(/api/tickets/files/'+sidhash+'/'+event.preview_file_300+');"'; s += '></div><div class="tg-event-flex"><div class="tg-event-theme">' + (useGlobalThemes ? tgEscapeHtml(themeView(currentTheme).name || '') : currentTheme.themes_name)+ '</div>' + a + '<h2 class="tg-event-name">' +event.ename+ '</h2><span class="age_category"><span class="age_category_title">Возрастная категория: ' +event.age_category+ '</span></span>'+(eventPushka?'<div class="tg-pushka-name"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-lucide="credit-card" class="lucide lucide-credit-card w-4 h-4"><rect width="20" height="14" x="2" y="5" rx="2"></rect><line x1="2" x2="22" y1="10" y2="10"></line></svg> Пушкинская карта</div>':'')+'</a><div class="tg-event-elements-desc">' +(event.preview_text?event.preview_text:event.short_description)+ '</div>'; s += '<div class="tg-event-elements-sessions-group">'; let allHalls = event.catalogSummary ? event.catalogHalls.slice() : []; let $dc = $('.tg-calendar'); const months = [ 'января','февраля','марта','апреля','мая','июня', 'июля','августа','сентября','октября','ноября','декабря' ]; let dates = []; let dateMap = {}; // собираем уникальные даты for(let session of sessions){ if(allHalls.indexOf(session.hall_name) === -1) allHalls.push(session.hall_name); let dt = session.start_date.split("."); let date = new Date(dt[2], dt[1]-1, dt[0]); let ts = date.getTime(); if(!dateMap[ts]){ dateMap[ts] = true; dates.push({ ts: ts, d: date.getDate(), m: date.getMonth() }); } $('.day[data-date="'+session.start_date+'"]', $dc).addClass('checked'); } dates.sort((a,b)=>a.ts-b.ts); // строим диапазоны let ranges = []; if(dates.length){ let start = dates[0]; let prev = dates[0]; for(let i=1;i<dates.length;i++){ let d = dates[i]; if(d.ts - prev.ts === 86400000){ prev = d; continue; } ranges.push({start:start,end:prev}); start = d; prev = d; } ranges.push({start:start,end:prev}); } // группируем по месяцам let monthGroups = {}; ranges.forEach(r => { let m = r.start.m; if(!monthGroups[m]) monthGroups[m] = []; if(r.start.ts === r.end.ts) monthGroups[m].push(r.start.d.toString()); else monthGroups[m].push(r.start.d + '–' + r.end.d); }); let out = []; for(let m in monthGroups){ out.push( monthGroups[m].join(' • ') + ' ' + months[m] ); } s += '📅 ' + (event.catalogSummary ? event.catalogDateLabel : out.join(' • ')); if(event.presale_text) s += '<div class="tg-event-elements-sessions-presale">'+event.presale_text+'</div>'; s += '<div class="tg-event-elements-sessions-group-halls">'; for(let hall of allHalls){ s += '<div>'+hall+'</div>'; } s += '</div>'; s += '</div>'; s += '<div class="tg-event-buttons">'; if(event.presale_text) s += '<div class="tg-event-button">'+a_event+'Информация</a></div>'; else if(event.preview_text) s += '<div class="tg-event-button">'+a_event+'Подробнее</a></div>'; else s += '<div class="tg-event-button">'+a+'Купить</a></div>' s += '</div>'; s += '</div></div></div></div>'; } s += ''; $themes.html(s); const cardFields = {"description":true,"venue":true,"hall":true,"category":true,"age":true,"dates":true,"price":true,"pushka":true}; const cardSelectors = {description: '.tg-event-elements-desc', category: '.tg-event-theme', age: '.age_category', hall: '.tg-event-elements-sessions-group-halls,.tg-events-session-element-hall', price: '.tg-events-session-element-price', pushka: '.tg-pushka-name'}; Object.keys(cardSelectors).forEach(field => { if (cardFields[field] === false) $themes.find(cardSelectors[field]).hide(); }); if (catalogPage) $stepThemes.show(); if (typeof tgInitOnlyTidFilters === 'function') { tgInitOnlyTidFilters($stepThemes); } if (catalogSummary) return; //console.log(s); let event = events[ d.r[0]['eid'] ] ; if (window.TgWidget5Naming) { window.TgWidget5Naming.session(null); window.TgWidget5Naming.event(globalEID && String(globalEID) === String(d.r[0].eid) ? event : null); } s = ''; let se = ''; if(!globalSID && (globalEID && globalEID.indexOf(',')==-1) ){ /*document.querySelector('meta[name="description"]').setAttribute("content", (event.preview_text?event.preview_text:event.short_description)); document.querySelector('meta[name="keywords"]').setAttribute("content", event.ename); $('meta[property=og\\:title]').attr('content', event.ename); $('meta[property=og\\:url]').attr('content', 'https://widget.telegreen.ru/tickets/'+hs+'/'+arr[1]+'/'+arr[2]+'/'+arr[3]+'/'+ arr[4]+'/'+arr[5]+'/0/'+arr[7]+'/widget4'); */ if(event.preview_file){ //$('meta[property=og\\:image]').attr('content', 'https://widget.telegreen.ru/api/tickets/files/'+sidhash+'/'+event.preview_file); $('.col-lg-6', $stepEvent) .css({ 'width': '100%', 'max-width': '100%', 'flex': '0 0 100%' }); se += '<div class="tg-event-detail-img" style="background:url(/api/tickets/files/'+sidhash+'/'+event.preview_file+');"></div><div class="tg-event-detail-image" style="background:url(/api/tickets/files/'+sidhash+'/'+event.preview_file+') center;">'; se += '<h2 class="tg-event-name-image">' +event.ename+ ' <span class="age_category">' +event.age_category+ '</span>'+(event.pushka?'<div class="tg-pushka-name">Возможна оплата по Пушкинской карте</div>':'')+'</h2>'; se += '</div>'; se += '<div class="tg-event-buy-button-scroll" onclick="buyButtonScroll()">Выберите '+(event.event_type_name?event.event_type_name:'сеанс')+'</div>'; }else{ se += '' +event.ename+ ' <span class="age_category">' +event.age_category+ '</span>'; } }else if(globalSID){ //('meta[property=og\\:title]').attr('content', event.ename); //$('meta[property=og\\:url]').attr('content', 'https://widget.telegreen.ru/tickets/'+hs+'/'+arr[1]+'/'+arr[2]+'/'+arr[3]+'/'+ arr[4]+'/'+arr[5]+'/0/0/widget4'); // document.querySelector('meta[name="og:title"]').setAttribute("content", event.ename); //document.querySelector('meta[name="description"]').setAttribute("content", (event.preview_text?event.preview_text:event.short_description)); //document.querySelector('meta[name="keywords"]').setAttribute("content", event.ename); //document.querySelector('meta[name="og:url"]').setAttribute("content", '/tickets/'+hs+'/'+arr[1]+'/'+arr[2]+'/'+arr[3]+'/'+ arr[4]+'/'+arr[5]+'/0/'+arr[7]+'/widget4'); if(event.preview_file){ //$('meta[property=og\\:image]').attr('content', 'https://widget.telegreen.ru/api/tickets/files/'+sidhash+'/'+event.preview_file_300); se += '<div class="tg-event-element-name-tr2"><div class="tg-event-element-name"><div class="tg-event-image"'; if(event.preview_file_300) se += 'style="background-image:url(/api/tickets/files/'+sidhash+'/'+event.preview_file_300+');"'; se += '></div><div class="tg-event-flex"><div class="tg-event-elements-desc">' +(event.preview_text?event.preview_text:event.short_description)+ '</div>'; }else{ se += '' +event.ename+ ' <span class="age_category">' +event.age_category+ '</span>'; } }else{ se += '' +event.ename+ ' <span class="age_category">' +event.age_category+ '</span>'; } $pageTitle.html( se ); $('.eventName').html( event.ename +' <span class="tg-event-session-date">'+event.session_date+'</span> <span class="tg-event-session-time">'+event.session_time +'</span>'); $('.tg-event--short-description').html( event.short_description ); let add = ''; if(d.openEvent && d.openEvent.hall){ add += '<div class="tg-detail-box tg-detail-box-hall">'; add += '<div>Место проведения: <div>'+d.openEvent.hall[0].theater_name+'</div></div>'; add += '<div>Адрес: <span class="ymaps-geolink">'+d.openEvent.hall[0].theater_address+'</span></div>'; add += '</div>'; } if(d.openEvent && d.openEvent.hall){ let hall = d.openEvent.hall[0]; let coords = ''; if(hall.theater_coords){ coords = hall.theater_coords.replace(/[()]/g,''); } let fullAddress = ''; if(hall.city_name) fullAddress += hall.city_name + ', '; if(hall.theater_address) fullAddress += hall.theater_address; add += '<div class="tg-detail-box tg-detail-box-hall">'; add += '<div>Место проведения: <div>'+hall.theater_name; if(hall.theater_code && hall.theater_code !== ''){ add += ` <a href="https://${hall.theater_code}.muscom.ru/" target="_blank" class="tg-hall-more" title="Подробнее о площадке"> <span class="tg-hall-more-icon"></span> </a> `; } add += '</div></div>'; add += '<div>Адрес: '; add += '<span class="ymaps-geolink" '+ 'data-type="geo" '+ 'data-description="'+hall.theater_name+'" '+ 'data-coordinates="'+coords+'">'+ fullAddress+ '</span>'; add += '</div>'; add += '</div>'; } if( d.infoBLocks ) { for (let block of d.infoBLocks){ add += '<div class="tg-detail-box tg-detail-box-type-'+block.type+'">'; add += '<div class="tg-detail-box-title tg-detail-box-type-'+block.type+'-title">'+block.name+'</div>'; add += '<div class="tg-detail-box-name tg-detail-box-type-'+block.type+'-name">'+block.value+'</div>'; add += '</div>'; } } let gridEv = 'grid-template-columns:unset !IMPORTANT'; if(add){ gridEv = ''; add = '<div class="tg-detail-add"><div class="tg-detail-boxs">' + add + '</div></div>'; } s+= (event.detail_text?'<div class="tg-detail-container" style="'+gridEv+'"><div class="tg-detail-text">'+event.detail_text+'</div>'+add+'</div>'+ '<div class="tg-sessions-check-tilte">Выберите '+(event.event_type_name?event.event_type_name:'сеанс')+'</div>':event.short_description) ; //for (let theme of d.themes){ // console.log(theme); //} s += ''; let selectedSession = d.r[0]; if( globalSID && (globalEID && globalEID.indexOf(',')==-1) ){ if(d.openEvent){ openEvent = d.openEvent; openEvent.sidhash = d.sidhash; //console.log(openEvent, 'openEvent3'); } let session = selectedSession; /*s += '<h3>'+session.ename+'</h3><div class=""><button class="select-time-item'+( (session.events_type_id == 2 || session.events_type_id == 4) ? ' complex':'')+'" data-value="'+session.sid+'" data-hid="'+session.hall_id+'"><span>'+session.sname+'</span></button></div>'; $eventsContain.html(s);*/ $stepEvent.addClass("step-one"); $('<button>') .addClass('select-time-item'+( (session.events_type_id == 2 || session.events_type_id == 4) ? ' complex':'')+'') .data('value', session.sid) .data('hid', session.hall_id) .html("Вернуться") .appendTo( $eventsContain ) .click(); }else $stepEvent.removeClass("step-one"); if( !globalSID && (globalEID && globalEID.indexOf(',')==-1) ){ s += ''; s += '<div class="tg-event-elements-sessions"><div class="tg-event-elements-session-data">'; last_date = ''; for(let session of d.r){ s += showSesName(session); } s += '</div></div>'; $events .hide() .html(s) .slideDown(); if (window.TgWidget5EventTags) window.TgWidget5EventTags.render(event); } }else{ let emptyText = 'К сожалению, активные мероприятия в данной категории отсутствуют'; $pageTitle.html(emptyText); $themes.html('<div class="tg-onlytid-no-events">' + emptyText + '</div>'); if (typeof tgInitOnlyTidFilters === 'function') { tgInitOnlyTidFilters($stepThemes); } } }).fail(function(xhr, textStatus) { finishNuHallPreview(); $l.remove(); $('.loading128').remove(); let errorText = 'Не удалось загрузить билеты. Проверьте соединение и повторите попытку.'; if (textStatus === 'timeout') { errorText = 'Билетный сервер не ответил вовремя. Повторите попытку.'; } let $error = $('<div class="tg-load-error"></div>').text(errorText); let $retry = $('<button type="button" class="btn btn-primary"></button>') .text('Повторить') .on('click', function() { window.location.reload(); }); $error.append('<br>').append($retry); $('.pages').prepend($error); }); }); Музей-заповедник А.С.Пушкина - Виджет музея Все события .... Вернуться к выбору площадки Выберите категорию билета Вернуться к выбору категории Выберите билет ⌕ Пушкинская карта По выбранным фильтрам ничего не найдено Вернуться к выбору мероприятия Вернуться к выбору сеанса Выберите свой билет Вы выбрали 0 билетов Итого 0 ₽ Сервисный сбор: 0 ₽ Оформить Вернуться к выбору билетов Укажите Заказчика Не авторизован Контакты технической поддержки по электронным билетам +7(495) 204-23-30 support@telegreen.ru Правовая информация Политика обработки ПД Политика cookie {!help!} Оплатить TeleGreen - билетная система
17 июля 2024
Мама троих детей Юлия Журавлева рассказала, как проходили ее роды в стенах Одинцовского роддома.
17 июля 2024