{% extends '__design/v2023/grid-map.html.twig' %}
{% block preconnect %}
{{ parent() }}
<link rel="preconnect" href="https://yastatic.net">
<link rel="preconnect" href="https://api-maps.yandex.ru">
{% endblock %}
{# {% block stylesheet_postload %}{{ encore_entry_link_tags("styles/public-map-page") }}{{ parent() }} #}
{# <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">{% endblock %} #}
{% block wrapper_class %} wrapper--map{% endblock %}
{% block mainContainer %}
{# {{- knp_menu_render('breadcrumbs', {'template': '__design/v2023/_menu/breadcrumbs.html.twig' }) -}} #}
<h1 class="d-none">{{ seo_heading() ? seo_heading() : 'Интим карта' }}</h1>
<div class="map-page content">
<div class="map-heading container">
<button class="map-back btn btn-transparent" type="button" onclick="history.back()">
<svg class="btn-icon" width="24" height="24" viewBox="0 0 24 24"><path fill="#2C2C2C" d="m17.83 20.13-1.77 1.77-9.9-9.9 9.9-9.9 1.77 1.77L9.7 12l8.13 8.13Z"/></svg>
<span class="btn-text">Назад</span>
</button>
<button class="map-btn btn btn-grey" type="button" data-a11y-dialog-show="filter-dialog">
<svg class="btn-icon" width="20" height="20" viewBox="0 0 20 20"><path d="M7.5 4.165a.833.833 0 1 0 0 1.666.833.833 0 0 0 0-1.666Zm-2.358 0a2.5 2.5 0 0 1 4.717 0h5.975a.833.833 0 1 1 0 1.666H9.859a2.5 2.5 0 0 1-4.717 0h-.975a.833.833 0 1 1 0-1.666h.975Zm7.359 5a.833.833 0 1 0 0 1.666.833.833 0 0 0 0-1.666Zm-2.359 0a2.501 2.501 0 0 1 4.717 0h.975a.833.833 0 1 1 0 1.667h-.975a2.502 2.502 0 0 1-4.717 0H4.167a.833.833 0 1 1 0-1.667h5.975Zm-2.641 5a.833.833 0 1 0 0 1.666.833.833 0 0 0 0-1.666Zm-2.359 0a2.5 2.5 0 0 1 4.717 0h5.975a.833.833 0 1 1 0 1.667H9.859a2.501 2.501 0 0 1-4.717 0h-.975a.833.833 0 1 1 0-1.667h.975Z"/></svg>
<span class="btn-text">Фильтры</span>
</button>
</div>
<div class="map-wrap skeleton skeleton--map loading" id="map-wrap"></div>
</div>
{% endblock %}
{%- block javascripts -%}
{{ parent() }}
{% if city is defined and city.mapCoordinate.latitude %}
{% set lat = city.mapCoordinate.latitude %}
{% set lon = city.mapCoordinate.longitude %}
{% else %}
{% set lat = '55.753215' %}
{% set lon = '37.622504' %}
{% endif %}
<script src="{{ asset('bundles/fosjsrouting/js/router.min.js') }}" defer></script>
<script src="{{ path('fos_js_routing_js', { callback: 'fos.Router.setData' }) }}" defer></script>
<script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU&onload=initMap&ns=ym" defer></script>
<script>
const mapConfig = {
id:"map-wrap",
multiple_cities:"{{ multipleCities }}",
routes_url: "{{ multipleCities == 0 ? '/js/fos_js_routes.json' : '/js/fos_js_routes_city_prefixed.json' }}",
city_uri_identity:"{{ cityUriIdentity }}",
city_latitude:"{{ lat }}",
city_longitude:"{{ lon }}",
locale:"{{ app.request.locale }}",
path:"{{ path('map.filter', {city:cityUriIdentity}) }}",
icon_profile:"{{ asset('assets/images/map/profile.svg') }}",
icon_profile_active:"{{ asset('assets/images/map/profile-active.svg') }}",
icon_profile_hover:"{{ asset('assets/images/map/profile-hover.svg') }}",
icon_saloon:"{{ asset('assets/images/map/saloon.svg') }}",
icon_saloon_active:"{{ asset('assets/images/map/saloon-active.svg') }}",
icon_saloon_hover:"{{ asset('assets/images/map/saloon-hover.svg') }}",
icon_masseur:"{{ asset('assets/images/map/masseur.svg') }}",
icon_masseur_active:"{{ asset('assets/images/map/masseur-active.svg') }}",
icon_masseur_hover:"{{ asset('assets/images/map/masseur-hover.svg') }}",
icon_cluster_small:"{{ asset('assets/images/map/cluster-small.svg') }}",
icon_cluster_medium:"{{ asset('assets/images/map/cluster-medium.svg') }}",
icon_cluster_big:"{{ asset('assets/images/map/cluster-big.svg') }}",
avatar_path : "{{ responsive_asset('replace_path', 'profile_media_avatar', "200x280", "jpg") }}",
photo_path : "{{ responsive_asset('replace_path', 'profile_media', "200x280", "jpg") }}",
thumb_path : "{{ responsive_asset('replace_path', 'saloon_media_thumb', "200x280", "jpg") }}",
process_profile_shows_url : "{{ path('map.increment_profile_shows', multipleCities ? {city:cityUriIdentity} : {}) }}"
};
var isMapInitialized = false;
var yaMapLoaded = false;
function initMap() {
//console.log('initMap');
window.ymap = new ym.Map(document.getElementById('map-wrap'), {
center: ["{{ lat }}", "{{ lon }}"],
zoom: 8,
controls: ['zoomControl', 'typeSelector', 'fullscreenControl']
});
yaMapLoaded = true;
//if (!isMapInitialized) {
// console.log('new mapPage initMap');
// isMapInitialized = true;
// new MapPage(mapConfig);
//}
}
window.profileShowed = function ({id}) {
if (!id) return;
fetch('{{ path('profile_ctr.increase_shows') }}', {
method: "POST",
body: JSON.stringify({ profiles: [id], source: 'map' }),
});
}
window.stations = {
{%- for station in stations() -%}{{- station.id -}}:{icon:`{%- include 'components/metro/icon_generate.partial.twig' with {data: station|station_lines} -%}`,name:`{{- station.name -}}`},{%- endfor -%}
};
document.addEventListener('DOMContentLoaded', function () {
function loadForm() {
fetch('{{ path('map.form', {city: cityUriIdentity}) }}', {
mode: "cors",
importance: "low",
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
"X-Requested-With": "XMLHttpRequest"
},
}).then(response => {
if (response.status < 300) {
return response.text();
} else {
console.warn("🤔");
return null;
}
}).then(response => {
document.getElementById('dialog-form').innerHTML = response;
filterLoader()
});
}
loadForm();
function filterLoader() {
const stringifyData = `{"city_id":"${document.getElementById('filter_map_form_city_id').value}","_token":"${document.getElementById('filter_map_form__token').value}"}`;
fetch("{{ path('map.filter', {city:cityUriIdentity}) }}", {
method: "POST",
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest',
},
body: new URLSearchParams({ form: stringifyData }).toString(),
})
.then(response => response.json())
.then(data => {
//console.log('map-data-loaded')
const mapLoadedInterval = setInterval(()=>{
if (yaMapLoaded) {
new MapPage(mapConfig);
document.dispatchEvent(new CustomEvent('map:data:loaded', { detail: { data, stringifyData } }));
clearInterval(mapLoadedInterval)
}
}, 200)
})
.catch(error => console.error(error));
//if (!isMapInitialized) {
// console.log('new mapPage filterLoader');
// isMapInitialized = true;
// new MapPage(mapConfig);
//}
}
})
</script>
{% endblock %}
{% block modal %}
{{- parent() -}}
{{- include('__design/v2023/components/modal/filter.html.twig') -}}
{% endblock %}