var/cache/review/twig/fe/fe6ae84e185bac133a8df8c62c15d6de.php line 741

Open in your IDE?
  1. <?php
  2. use Twig\Environment;
  3. use Twig\Error\LoaderError;
  4. use Twig\Error\RuntimeError;
  5. use Twig\Extension\SandboxExtension;
  6. use Twig\Markup;
  7. use Twig\Sandbox\SecurityError;
  8. use Twig\Sandbox\SecurityNotAllowedTagError;
  9. use Twig\Sandbox\SecurityNotAllowedFilterError;
  10. use Twig\Sandbox\SecurityNotAllowedFunctionError;
  11. use Twig\Source;
  12. use Twig\Template;
  13. /* Map/page.html.twig */
  14. class __TwigTemplate_a28a045d3be3f3299f645cdfe29370c8 extends Template
  15. {
  16.     private $source;
  17.     private $macros = [];
  18.     public function __construct(Environment $env)
  19.     {
  20.         parent::__construct($env);
  21.         $this->source $this->getSourceContext();
  22.         $this->blocks = [
  23.             'title' => [$this'block_title'],
  24.             'metaDescription' => [$this'block_metaDescription'],
  25.             'stylesheet' => [$this'block_stylesheet'],
  26.             'preconnect' => [$this'block_preconnect'],
  27.             'name_page' => [$this'block_name_page'],
  28.             'mainContainer' => [$this'block_mainContainer'],
  29.             'javascripts' => [$this'block_javascripts'],
  30.             'modal' => [$this'block_modal'],
  31.         ];
  32.     }
  33.     protected function doGetParent(array $context)
  34.     {
  35.         // line 1
  36.         return "grid.html.twig";
  37.     }
  38.     protected function doDisplay(array $context, array $blocks = [])
  39.     {
  40.         $macros $this->macros;
  41.         $__internal_b91a4435ea3baf1e2b6bfda56133dace $this->extensions["Sentry\\SentryBundle\\Tracing\\Twig\\TwigTracingExtension"];
  42.         $__internal_b91a4435ea3baf1e2b6bfda56133dace->enter($__internal_b91a4435ea3baf1e2b6bfda56133dace_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""Map/page.html.twig"));
  43.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  44.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""Map/page.html.twig"));
  45.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  46.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""Map/page.html.twig"));
  47.         $this->parent $this->loadTemplate("grid.html.twig""Map/page.html.twig"1);
  48.         $this->parent->display($contextarray_merge($this->blocks$blocks));
  49.         
  50.         $__internal_b91a4435ea3baf1e2b6bfda56133dace->leave($__internal_b91a4435ea3baf1e2b6bfda56133dace_prof);
  51.         
  52.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  53.         
  54.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  55.     }
  56.     // line 3
  57.     public function block_title($context, array $blocks = [])
  58.     {
  59.         $macros $this->macros;
  60.         $__internal_b91a4435ea3baf1e2b6bfda56133dace $this->extensions["Sentry\\SentryBundle\\Tracing\\Twig\\TwigTracingExtension"];
  61.         $__internal_b91a4435ea3baf1e2b6bfda56133dace->enter($__internal_b91a4435ea3baf1e2b6bfda56133dace_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""title"));
  62.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  63.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""title"));
  64.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  65.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""title"));
  66.         // line 4
  67.         echo "    ";
  68.         echo twig_escape_filter($this->env$this->extensions['App\Twig\SeoExtension']->metaTitle(), "html"nulltrue);
  69.         echo "
  70. ";
  71.         
  72.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  73.         
  74.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  75.         
  76.         $__internal_b91a4435ea3baf1e2b6bfda56133dace->leave($__internal_b91a4435ea3baf1e2b6bfda56133dace_prof);
  77.     }
  78.     // line 7
  79.     public function block_metaDescription($context, array $blocks = [])
  80.     {
  81.         $macros $this->macros;
  82.         $__internal_b91a4435ea3baf1e2b6bfda56133dace $this->extensions["Sentry\\SentryBundle\\Tracing\\Twig\\TwigTracingExtension"];
  83.         $__internal_b91a4435ea3baf1e2b6bfda56133dace->enter($__internal_b91a4435ea3baf1e2b6bfda56133dace_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""metaDescription"));
  84.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  85.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""metaDescription"));
  86.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  87.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""metaDescription"));
  88.         // line 8
  89.         echo "    <meta name=\"description\" content=\"";
  90.         echo twig_escape_filter($this->env$this->extensions['App\Twig\SeoExtension']->metaDescription(), "html"nulltrue);
  91.         echo "\">
  92. ";
  93.         
  94.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  95.         
  96.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  97.         
  98.         $__internal_b91a4435ea3baf1e2b6bfda56133dace->leave($__internal_b91a4435ea3baf1e2b6bfda56133dace_prof);
  99.     }
  100.     // line 11
  101.     public function block_stylesheet($context, array $blocks = [])
  102.     {
  103.         $macros $this->macros;
  104.         $__internal_b91a4435ea3baf1e2b6bfda56133dace $this->extensions["Sentry\\SentryBundle\\Tracing\\Twig\\TwigTracingExtension"];
  105.         $__internal_b91a4435ea3baf1e2b6bfda56133dace->enter($__internal_b91a4435ea3baf1e2b6bfda56133dace_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""stylesheet"));
  106.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  107.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""stylesheet"));
  108.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  109.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""stylesheet"));
  110.         // line 12
  111.         echo "    ";
  112.         $this->displayParentBlock("stylesheet"$context$blocks);
  113.         echo "
  114.     ";
  115.         // line 14
  116.         echo "
  117.     <style>
  118.     .ymaps-2-1-79-balloon__close+.ymaps-2-1-79-balloon__content {
  119.         margin-right: 0!important;
  120.             padding: 0!important;
  121.     }
  122.         .map-wrap {
  123.             width: 100%;
  124.             height: 700px;
  125.             border-radius: 20px;
  126.             overflow: hidden;
  127.         }
  128.         .map-model {
  129.             background-color: #1c1c1c;
  130.             box-shadow: 0 1px 10px rgba(28, 28, 28, .5);
  131.             margin-right: 0;
  132.             max-width: 220px;
  133.             position: relative;
  134.         }
  135.         .map-model__images {
  136.             margin-bottom: 10px !important;
  137.             display: block;
  138.         }
  139.         .map-model__images img{
  140.             max-width: 200px;
  141.         }
  142.         .map-model__info .info-title {
  143.             color: #fff;
  144.             font-size: 16px;
  145.             line-height: 19px;
  146.             overflow: hidden;
  147.             text-overflow: ellipsis;
  148.             white-space: nowrap;
  149.         }
  150.         .map-model__info .info-phone {
  151.             padding-top: 5px;
  152.         }
  153.         [class\$=\"-balloon-pane\"] ymaps {
  154.             box-shadow: none !important;
  155.             border: none !important;
  156.             background: #000;
  157.             border-radius: 12px;
  158.         }
  159.         .map-model__info .info-phone .phone {
  160.             color: #ed0c34;
  161.             font-size: 14px;
  162.             font-weight: 700;
  163.             line-height: 16px;
  164.             overflow: hidden;
  165.             text-overflow: ellipsis;
  166.             white-space: nowrap;
  167.         }
  168.         .map-model__info .info-phone span {
  169.             color: #ffb800;
  170.             font-size: 14px;
  171.             line-height: 16px;
  172.         }
  173.         .map-model-widget .map-model__info .info-phone span em,
  174.         .map-model__info .info-phone span em {
  175.             color: grey;
  176.             font-size: 12px;
  177.             font-style: normal;
  178.             line-height: 14px;
  179.         }
  180.         @media (max-width: 768px) {
  181.             .map-model {
  182.                 max-width: 150px;
  183.                 padding: 5px !important;
  184.             }
  185.             .map-model__images {margin-bottom: 3px !important;}
  186.             .map-model__images img{max-width: 140px;}
  187.             .map-model__info .info-phone{
  188.                 padding-top: 3px;
  189.             }
  190.             .map-model__info .info-phone .phone {
  191.                 font-size: 13px;
  192.                 line-height: 15px;
  193.             }
  194.             .map-model__info .info-phone span {
  195.                 font-size: 12px;
  196.                 line-height: 14px;
  197.             }
  198.             .map-model__info .info-title {
  199.                 font-size: 13px;
  200.                 line-height: 15px;
  201.             }
  202.         }
  203.         [class\$=\"-balloon-pane\"] .ymaps-2-1-79-balloon__close-button {
  204.             border-radius: 20px;
  205.         }
  206.         [class\$=\"-balloon-pane\"] .ymaps-2-1-79-balloon__tail {
  207.             border-radius: 0;
  208.         }
  209.         [class\$=\"-balloon-pane\"] .map-model__images img {
  210.             border-radius: 12px;
  211.         }
  212.         [class\$=-balloon__close] {
  213.             position: absolute !important;
  214.             right: 0;
  215.         }
  216.         [class\$=-balloon__close] [class\$=-balloon__close-button] {
  217.             height: 25px;
  218.             position: relative;
  219.             width: 25px;
  220.         }
  221.         [class\$=-balloon__close] [class\$=-balloon__close-button]:before {
  222.             background: #000;
  223.             bottom: 0;
  224.             content: \"\";
  225.             filter: invert(1);
  226.             height: 2px;
  227.             left: 0;
  228.             margin: auto;
  229.             position: absolute;
  230.             right: 0;
  231.             top: 0;
  232.             transform: rotate(45deg);
  233.             width: 70%;
  234.         }
  235.         [class\$=-balloon__close] [class\$=-balloon__close-button]:after {
  236.             background: #000;
  237.             bottom: 0;
  238.             content: \"\";
  239.             filter: invert(1);
  240.             height: 2px;
  241.             left: 0;
  242.             margin: auto;
  243.             position: absolute;
  244.             right: 0;
  245.             top: 0;
  246.             transform: rotate(-45deg);
  247.             width: 70%;
  248.         }
  249.         .ymaps-2-1-79-balloon__tail:after {
  250.             background-color: #000 !important;
  251.         }
  252.     </style>
  253. ";
  254.         
  255.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  256.         
  257.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  258.         
  259.         $__internal_b91a4435ea3baf1e2b6bfda56133dace->leave($__internal_b91a4435ea3baf1e2b6bfda56133dace_prof);
  260.     }
  261.     // line 157
  262.     public function block_preconnect($context, array $blocks = [])
  263.     {
  264.         $macros $this->macros;
  265.         $__internal_b91a4435ea3baf1e2b6bfda56133dace $this->extensions["Sentry\\SentryBundle\\Tracing\\Twig\\TwigTracingExtension"];
  266.         $__internal_b91a4435ea3baf1e2b6bfda56133dace->enter($__internal_b91a4435ea3baf1e2b6bfda56133dace_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""preconnect"));
  267.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  268.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""preconnect"));
  269.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  270.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""preconnect"));
  271.         // line 158
  272.         echo "\t";
  273.         $this->displayParentBlock("preconnect"$context$blocks);
  274.         echo "
  275. \t<link rel=\"preconnect\" href=\"https://yastatic.net\">
  276. \t<link rel=\"preconnect\" href=\"https://api-maps.yandex.ru\">
  277. ";
  278.         
  279.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  280.         
  281.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  282.         
  283.         $__internal_b91a4435ea3baf1e2b6bfda56133dace->leave($__internal_b91a4435ea3baf1e2b6bfda56133dace_prof);
  284.     }
  285.     // line 163
  286.     public function block_name_page($context, array $blocks = [])
  287.     {
  288.         $macros $this->macros;
  289.         $__internal_b91a4435ea3baf1e2b6bfda56133dace $this->extensions["Sentry\\SentryBundle\\Tracing\\Twig\\TwigTracingExtension"];
  290.         $__internal_b91a4435ea3baf1e2b6bfda56133dace->enter($__internal_b91a4435ea3baf1e2b6bfda56133dace_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""name_page"));
  291.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  292.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""name_page"));
  293.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  294.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""name_page"));
  295.         echo "map";
  296.         
  297.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  298.         
  299.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  300.         
  301.         $__internal_b91a4435ea3baf1e2b6bfda56133dace->leave($__internal_b91a4435ea3baf1e2b6bfda56133dace_prof);
  302.     }
  303.     // line 165
  304.     public function block_mainContainer($context, array $blocks = [])
  305.     {
  306.         $macros $this->macros;
  307.         $__internal_b91a4435ea3baf1e2b6bfda56133dace $this->extensions["Sentry\\SentryBundle\\Tracing\\Twig\\TwigTracingExtension"];
  308.         $__internal_b91a4435ea3baf1e2b6bfda56133dace->enter($__internal_b91a4435ea3baf1e2b6bfda56133dace_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""mainContainer"));
  309.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  310.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""mainContainer"));
  311.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  312.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""mainContainer"));
  313.         // line 166
  314.         echo "    ";
  315.         if ((array_key_exists("city"$context) && twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["city"]) || array_key_exists("city"$context) ? $context["city"] : (function () { throw new RuntimeError('Variable "city" does not exist.'166$this->source); })()), "mapCoordinate", [], "any"falsefalsefalse166), "latitude", [], "any"falsefalsefalse166))) {
  316.             // line 167
  317.             echo "        ";
  318.             $context["lat"] = twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["city"]) || array_key_exists("city"$context) ? $context["city"] : (function () { throw new RuntimeError('Variable "city" does not exist.'167$this->source); })()), "mapCoordinate", [], "any"falsefalsefalse167), "latitude", [], "any"falsefalsefalse167);
  319.             // line 168
  320.             echo "        ";
  321.             $context["lon"] = twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["city"]) || array_key_exists("city"$context) ? $context["city"] : (function () { throw new RuntimeError('Variable "city" does not exist.'168$this->source); })()), "mapCoordinate", [], "any"falsefalsefalse168), "longitude", [], "any"falsefalsefalse168);
  322.             // line 169
  323.             echo "    ";
  324.         } else {
  325.             // line 170
  326.             echo "        ";
  327.             $context["lat"] = "55.753215";
  328.             // line 171
  329.             echo "        ";
  330.             $context["lon"] = "37.622504";
  331.             // line 172
  332.             echo "    ";
  333.         }
  334.         // line 173
  335.         echo "    <h1 class=\"border-line\">Интим карта</h1>
  336.     <p class=\"mb-lg-4\">
  337.         На карте обозначено местоположение зарегистрированных анкет.
  338.         Кликнув на маркер Вы узнаете краткую информацию о девушке.
  339.     </p>
  340.     <div class=\"map p-2 p-md-3 p-lg-4 mb-3 mb-md-4\">
  341.         <div class=\"d-flex justify-content-center justify-content-md-between mb-2 mb-md-3 mb-lg-4\">
  342.             <button class=\"btn btn-secondary btn-collapse-filter\" type=\"button\" id=\"filter-expand\">
  343.                 <svg class=\"icon mr-1\">
  344.                     <use xlink:href=\"";
  345.         // line 182
  346.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets_domain/images/icons/svg-library.svg""nodomainConfig"), "html"nulltrue);
  347.         echo "#icon-dropdown\"></use>
  348.                 </svg>
  349.                 Расширенный поиск
  350.             </button>
  351.             <div class=\"d-flex align-items-center collapse-reset ml-2\">
  352.                 <span class=\"d-none d-md-block\" id=\"count-parameters\">Выбрано <em data-count-parameters>0</em> параметров</span>
  353.                 <button class=\"btn btn-secondary btn-collapse-reset ml-md-2\" id=\"reset-form-2\" data-reset>
  354.                     <svg class=\"icon mr-1\">
  355.                         <use xlink:href=\"";
  356.         // line 190
  357.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets_domain/images/icons/svg-library.svg""nodomainConfig"), "html"nulltrue);
  358.         echo "#icon-reset\"></use>
  359.                     </svg>
  360.                     Сброс
  361.                 </button>
  362.             </div>
  363.         </div>
  364.         <div id=\"collapseFilterContainer\"></div>
  365. \t\t<div class=\"map-wrap skeleton skeleton--map loading\" id=\"map-wrap\"></div>
  366.         ";
  367.         // line 218
  368.         echo "    </div>
  369. ";
  370.         
  371.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  372.         
  373.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  374.         
  375.         $__internal_b91a4435ea3baf1e2b6bfda56133dace->leave($__internal_b91a4435ea3baf1e2b6bfda56133dace_prof);
  376.     }
  377.     // line 222
  378.     public function block_javascripts($context, array $blocks = [])
  379.     {
  380.         $macros $this->macros;
  381.         $__internal_b91a4435ea3baf1e2b6bfda56133dace $this->extensions["Sentry\\SentryBundle\\Tracing\\Twig\\TwigTracingExtension"];
  382.         $__internal_b91a4435ea3baf1e2b6bfda56133dace->enter($__internal_b91a4435ea3baf1e2b6bfda56133dace_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascripts"));
  383.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  384.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascripts"));
  385.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  386.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascripts"));
  387.         // line 223
  388.         echo "    ";
  389.         $this->displayParentBlock("javascripts"$context$blocks);
  390.         echo "
  391. \t";
  392.         // line 225
  393.         if ((array_key_exists("city"$context) && twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["city"]) || array_key_exists("city"$context) ? $context["city"] : (function () { throw new RuntimeError('Variable "city" does not exist.'225$this->source); })()), "mapCoordinate", [], "any"falsefalsefalse225), "latitude", [], "any"falsefalsefalse225))) {
  394.             // line 226
  395.             echo "\t\t";
  396.             $context["lat"] = twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["city"]) || array_key_exists("city"$context) ? $context["city"] : (function () { throw new RuntimeError('Variable "city" does not exist.'226$this->source); })()), "mapCoordinate", [], "any"falsefalsefalse226), "latitude", [], "any"falsefalsefalse226);
  397.             // line 227
  398.             echo "\t\t";
  399.             $context["lon"] = twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["city"]) || array_key_exists("city"$context) ? $context["city"] : (function () { throw new RuntimeError('Variable "city" does not exist.'227$this->source); })()), "mapCoordinate", [], "any"falsefalsefalse227), "longitude", [], "any"falsefalsefalse227);
  400.             // line 228
  401.             echo "\t";
  402.         } else {
  403.             // line 229
  404.             echo "\t\t";
  405.             $context["lat"] = "55.753215";
  406.             // line 230
  407.             echo "\t\t";
  408.             $context["lon"] = "37.622504";
  409.             // line 231
  410.             echo "\t";
  411.         }
  412.         // line 232
  413.         echo "
  414. \t<script src=\"";
  415.         // line 233
  416.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("bundles/fosjsrouting/js/router.min.js"), "html"nulltrue);
  417.         echo "\" defer></script>
  418. \t<script src=\"";
  419.         // line 234
  420.         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("fos_js_routing_js", ["callback" => "fos.Router.setData"]);
  421.         echo "\" defer></script>";
  422.         // line 235
  423.         echo "\t<script src=\"https://api-maps.yandex.ru/2.1/?lang=ru_RU&onload=initMap&ns=ym\" defer></script>
  424. \t<script>
  425.         const mapConfig = {
  426. \t\t\tid:\"map-wrap\",
  427. \t\t\tmultiple_cities:\"";
  428.         // line 240
  429.         echo twig_escape_filter($this->env, (isset($context["multipleCities"]) || array_key_exists("multipleCities"$context) ? $context["multipleCities"] : (function () { throw new RuntimeError('Variable "multipleCities" does not exist.'240$this->source); })()), "html"nulltrue);
  430.         echo "\",
  431. \t\t\troutes_url: \"";
  432.         // line 241
  433.         echo ((((isset($context["multipleCities"]) || array_key_exists("multipleCities"$context) ? $context["multipleCities"] : (function () { throw new RuntimeError('Variable "multipleCities" does not exist.'241$this->source); })()) == 0)) ? ("/js/fos_js_routes.json") : ("/js/fos_js_routes_city_prefixed.json"));
  434.         echo "\",
  435. \t\t\tcity_uri_identity:\"";
  436.         // line 242
  437.         echo twig_escape_filter($this->env, (isset($context["cityUriIdentity"]) || array_key_exists("cityUriIdentity"$context) ? $context["cityUriIdentity"] : (function () { throw new RuntimeError('Variable "cityUriIdentity" does not exist.'242$this->source); })()), "html"nulltrue);
  438.         echo "\",
  439. \t\t\tcity_latitude:\"";
  440.         // line 243
  441.         echo twig_escape_filter($this->env, (isset($context["lat"]) || array_key_exists("lat"$context) ? $context["lat"] : (function () { throw new RuntimeError('Variable "lat" does not exist.'243$this->source); })()), "html"nulltrue);
  442.         echo "\",
  443. \t\t\tcity_longitude:\"";
  444.         // line 244
  445.         echo twig_escape_filter($this->env, (isset($context["lon"]) || array_key_exists("lon"$context) ? $context["lon"] : (function () { throw new RuntimeError('Variable "lon" does not exist.'244$this->source); })()), "html"nulltrue);
  446.         echo "\",
  447. \t\t\tlocale:\"";
  448.         // line 245
  449.         echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'245$this->source); })()), "request", [], "any"falsefalsefalse245), "locale", [], "any"falsefalsefalse245), "html"nulltrue);
  450.         echo "\",
  451. \t\t\tpath:\"";
  452.         // line 246
  453.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("map.filter", ["city" => (isset($context["cityUriIdentity"]) || array_key_exists("cityUriIdentity"$context) ? $context["cityUriIdentity"] : (function () { throw new RuntimeError('Variable "cityUriIdentity" does not exist.'246$this->source); })())]), "html"nulltrue);
  454.         echo "\",
  455. \t\t\ticon_profile:\"";
  456.         // line 248
  457.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/images/map/profile.svg"), "html"nulltrue);
  458.         echo "\",
  459. \t\t\ticon_profile_active:\"";
  460.         // line 249
  461.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/images/map/profile-active.svg"), "html"nulltrue);
  462.         echo "\",
  463. \t\t\ticon_profile_hover:\"";
  464.         // line 250
  465.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/images/map/profile-hover.svg"), "html"nulltrue);
  466.         echo "\",
  467. \t\t\ticon_saloon:\"";
  468.         // line 252
  469.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/images/map/saloon.svg"), "html"nulltrue);
  470.         echo "\",
  471. \t\t\ticon_saloon_active:\"";
  472.         // line 253
  473.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/images/map/saloon-active.svg"), "html"nulltrue);
  474.         echo "\",
  475. \t\t\ticon_saloon_hover:\"";
  476.         // line 254
  477.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/images/map/saloon-hover.svg"), "html"nulltrue);
  478.         echo "\",
  479. \t\t\ticon_masseur:\"";
  480.         // line 256
  481.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/images/map/masseur.svg"), "html"nulltrue);
  482.         echo "\",
  483. \t\t\ticon_masseur_active:\"";
  484.         // line 257
  485.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/images/map/masseur-active.svg"), "html"nulltrue);
  486.         echo "\",
  487. \t\t\ticon_masseur_hover:\"";
  488.         // line 258
  489.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/images/map/masseur-hover.svg"), "html"nulltrue);
  490.         echo "\",
  491. \t\t\ticon_cluster_small:\"";
  492.         // line 260
  493.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/images/map/cluster-small.svg"), "html"nulltrue);
  494.         echo "\",
  495. \t\t\ticon_cluster_medium:\"";
  496.         // line 261
  497.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/images/map/cluster-medium.svg"), "html"nulltrue);
  498.         echo "\",
  499. \t\t\ticon_cluster_big:\"";
  500.         // line 262
  501.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/images/map/cluster-big.svg"), "html"nulltrue);
  502.         echo "\",
  503. \t\t\tavatar_path : \"";
  504.         // line 264
  505.         echo twig_escape_filter($this->env$this->extensions['App\Twig\ResponsiveAssetExtension']->getResponsiveImageUrl("replace_path""profile_media_avatar""200x280""jpg"), "html"nulltrue);
  506.         echo "\",
  507. \t\t\tphoto_path : \"";
  508.         // line 265
  509.         echo twig_escape_filter($this->env$this->extensions['App\Twig\ResponsiveAssetExtension']->getResponsiveImageUrl("replace_path""profile_media""200x280""jpg"), "html"nulltrue);
  510.         echo "\",
  511. \t\t\tthumb_path : \"";
  512.         // line 266
  513.         echo twig_escape_filter($this->env$this->extensions['App\Twig\ResponsiveAssetExtension']->getResponsiveImageUrl("replace_path""saloon_media_thumb""200x280""jpg"), "html"nulltrue);
  514.         echo "\",
  515. \t\t\tprocess_profile_shows_url  : \"";
  516.         // line 267
  517.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("map.increment_profile_shows", (((isset($context["multipleCities"]) || array_key_exists("multipleCities"$context) ? $context["multipleCities"] : (function () { throw new RuntimeError('Variable "multipleCities" does not exist.'267$this->source); })())) ? (["city" => (isset($context["cityUriIdentity"]) || array_key_exists("cityUriIdentity"$context) ? $context["cityUriIdentity"] : (function () { throw new RuntimeError('Variable "cityUriIdentity" does not exist.'267$this->source); })())]) : ([]))), "html"nulltrue);
  518.         echo "\"
  519. \t\t};
  520.         var isMapInitialized = false;
  521. \t\tvar yaMapLoaded = false;
  522.         function initMap() {
  523. \t\t\twindow.ymap = new ym.Map(document.getElementById('map-wrap'), {
  524. \t\t\t\tcenter: [\"";
  525.         // line 275
  526.         echo twig_escape_filter($this->env, (isset($context["lat"]) || array_key_exists("lat"$context) ? $context["lat"] : (function () { throw new RuntimeError('Variable "lat" does not exist.'275$this->source); })()), "html"nulltrue);
  527.         echo "\", \"";
  528.         echo twig_escape_filter($this->env, (isset($context["lon"]) || array_key_exists("lon"$context) ? $context["lon"] : (function () { throw new RuntimeError('Variable "lon" does not exist.'275$this->source); })()), "html"nulltrue);
  529.         echo "\"],
  530. \t\t\t\tzoom: 8,
  531. \t\t\t\tcontrols: ['zoomControl', 'typeSelector',  'fullscreenControl']
  532. \t\t\t});
  533. \t\t\tyaMapLoaded = true;
  534. \t\t}
  535. \t\twindow.profileShowed = function ({id}) {
  536. \t\t\tif (!id) return;
  537. \t\t\tfetch('";
  538.         // line 285
  539.         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("profile_ctr.increase_shows");
  540.         echo "', {
  541. \t\t\t\tmethod: \"POST\",
  542. \t\t\t\tbody: JSON.stringify({ profiles: [id], source: 'map' }),
  543. \t\t\t});
  544. \t\t}
  545.         window.stations = {";
  546.         // line 292
  547.         $context['_parent'] = $context;
  548.         $context['_seq'] = twig_ensure_traversable($this->extensions['App\Twig\StationsExtension']->stations());
  549.         $context['loop'] = [
  550.           'parent' => $context['_parent'],
  551.           'index0' => 0,
  552.           'index'  => 1,
  553.           'first'  => true,
  554.         ];
  555.         if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  556.             $length count($context['_seq']);
  557.             $context['loop']['revindex0'] = $length 1;
  558.             $context['loop']['revindex'] = $length;
  559.             $context['loop']['length'] = $length;
  560.             $context['loop']['last'] = === $length;
  561.         }
  562.         foreach ($context['_seq'] as $context["_key"] => $context["station"]) {
  563.             echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["station"], "id", [], "any"falsefalsefalse292), "html"nulltrue);
  564.             echo ":{icon:`";
  565.             $this->loadTemplate("components/metro/icon_generate.partial.twig""Map/page.html.twig"292)->display(twig_array_merge($context, ["data" => $this->extensions['App\Twig\StationsExtension']->stationLines($context["station"])]));
  566.             echo "`,name:`";
  567.             echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["station"], "name", [], "any"falsefalsefalse292), "html"nulltrue);
  568.             echo "`},";
  569.             ++$context['loop']['index0'];
  570.             ++$context['loop']['index'];
  571.             $context['loop']['first'] = false;
  572.             if (isset($context['loop']['length'])) {
  573.                 --$context['loop']['revindex0'];
  574.                 --$context['loop']['revindex'];
  575.                 $context['loop']['last'] = === $context['loop']['revindex0'];
  576.             }
  577.         }
  578.         $_parent $context['_parent'];
  579.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['station'], $context['_parent'], $context['loop']);
  580.         $context array_intersect_key($context$_parent) + $_parent;
  581.         // line 293
  582.         echo "};
  583.         document.addEventListener('DOMContentLoaded', function () {
  584. \t\t\tfunction loadForm() {
  585. \t\t\t\tfetch('";
  586.         // line 297
  587.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("map.form", ["city" => (isset($context["cityUriIdentity"]) || array_key_exists("cityUriIdentity"$context) ? $context["cityUriIdentity"] : (function () { throw new RuntimeError('Variable "cityUriIdentity" does not exist.'297$this->source); })())]), "html"nulltrue);
  588.         echo "', {
  589. \t\t\t\t\tmode: \"cors\",
  590. \t\t\t\t\timportance: \"low\",
  591. \t\t\t\t\tmethod: \"POST\",
  592. \t\t\t\t\theaders: {
  593. \t\t\t\t\t\t\"Content-Type\": \"application/x-www-form-urlencoded\",
  594. \t\t\t\t\t\t\"X-Requested-With\": \"XMLHttpRequest\"
  595. \t\t\t\t\t},
  596. \t\t\t\t}).then(response => {
  597. \t\t\t\t\tif (response.status < 300) {
  598. \t\t\t\t\t\treturn response.text();
  599. \t\t\t\t\t} else {
  600. \t\t\t\t\t\tconsole.warn(\"🤔\");
  601. \t\t\t\t\t\treturn null;
  602. \t\t\t\t\t}
  603. \t\t\t\t}).then(response => {
  604. \t\t\t\t\tdocument.getElementById('collapseFilterContainer').innerHTML = response;
  605. \t\t\t\t\tfilterLoader();
  606.                     const expandButton = document.getElementById('filter-expand');
  607.                     const expandElement = document.getElementById('collapseFilter');
  608.                     expandButton.addEventListener('click', () => {
  609.                         expandButton.classList.toggle('open');
  610.                         expandElement.classList.toggle('show');
  611.                     });
  612. \t\t\t\t});
  613. \t\t\t}
  614. \t\t\tloadForm();
  615. \t\t\tfunction filterLoader() {
  616. \t\t\t\tconst stringifyData = `{\"city_id\":\"\${document.getElementById('filter_map_form_city_id').value}\",\"_token\":\"\${document.getElementById('filter_map_form__token').value}\"}`;
  617. \t\t\t\tfetch(\"";
  618.         // line 331
  619.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("map.filter", ["city" => (isset($context["cityUriIdentity"]) || array_key_exists("cityUriIdentity"$context) ? $context["cityUriIdentity"] : (function () { throw new RuntimeError('Variable "cityUriIdentity" does not exist.'331$this->source); })())]), "html"nulltrue);
  620.         echo "\", {
  621. \t\t\t\t\tmethod: \"POST\",
  622. \t\t\t\t\theaders: {
  623. \t\t\t\t\t\t'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
  624. \t\t\t\t\t\t'X-Requested-With': 'XMLHttpRequest',
  625. \t\t\t\t\t},
  626. \t\t\t\t\tbody: new URLSearchParams({ form: stringifyData }).toString(),
  627. \t\t\t\t})
  628. \t\t\t\t\t.then(response => response.json())
  629. \t\t\t\t\t.then(data => {
  630. \t\t\t\t\t\tconst mapLoadedInterval = setInterval(()=>{
  631. \t\t\t\t\t\t\tif (yaMapLoaded) {
  632. \t\t\t\t\t\t\t\tnew MapPage(mapConfig);
  633. \t\t\t\t\t\t\t\tdocument.dispatchEvent(new CustomEvent('map:data:loaded', { detail: { data, stringifyData } }));
  634. \t\t\t\t\t\t\t\tclearInterval(mapLoadedInterval)
  635. \t\t\t\t\t\t\t}
  636. \t\t\t\t\t\t}, 200)
  637. \t\t\t\t\t})
  638. \t\t\t\t\t.catch(error => console.error(error));
  639. \t\t\t}
  640. \t\t});
  641. \t</script>
  642. ";
  643.         
  644.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  645.         
  646.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  647.         
  648.         $__internal_b91a4435ea3baf1e2b6bfda56133dace->leave($__internal_b91a4435ea3baf1e2b6bfda56133dace_prof);
  649.     }
  650.     // line 358
  651.     public function block_modal($context, array $blocks = [])
  652.     {
  653.         $macros $this->macros;
  654.         $__internal_b91a4435ea3baf1e2b6bfda56133dace $this->extensions["Sentry\\SentryBundle\\Tracing\\Twig\\TwigTracingExtension"];
  655.         $__internal_b91a4435ea3baf1e2b6bfda56133dace->enter($__internal_b91a4435ea3baf1e2b6bfda56133dace_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""modal"));
  656.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  657.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""modal"));
  658.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  659.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""modal"));
  660.         // line 359
  661.         $this->displayParentBlock("modal"$context$blocks);
  662.         // line 360
  663.         echo twig_include($this->env$context"components/modals/map-filter.html.twig");
  664.         
  665.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  666.         
  667.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  668.         
  669.         $__internal_b91a4435ea3baf1e2b6bfda56133dace->leave($__internal_b91a4435ea3baf1e2b6bfda56133dace_prof);
  670.     }
  671.     /**
  672.      * @codeCoverageIgnore
  673.      */
  674.     public function getTemplateName()
  675.     {
  676.         return "Map/page.html.twig";
  677.     }
  678.     /**
  679.      * @codeCoverageIgnore
  680.      */
  681.     public function isTraitable()
  682.     {
  683.         return false;
  684.     }
  685.     /**
  686.      * @codeCoverageIgnore
  687.      */
  688.     public function getDebugInfo()
  689.     {
  690.         return array (  756 => 360,  754 => 359,  741 => 358,  702 => 331,  665 => 297,  659 => 293,  624 => 292,  615 => 285,  600 => 275,  589 => 267,  585 => 266,  581 => 265,  577 => 264,  572 => 262,  568 => 261,  564 => 260,  559 => 258,  555 => 257,  551 => 256,  546 => 254,  542 => 253,  538 => 252,  533 => 250,  529 => 249,  525 => 248,  520 => 246,  516 => 245,  512 => 244,  508 => 243,  504 => 242,  500 => 241,  496 => 240,  489 => 235,  486 => 234,  482 => 233,  479 => 232,  476 => 231,  473 => 230,  470 => 229,  467 => 228,  464 => 227,  461 => 226,  459 => 225,  453 => 223,  440 => 222,  426 => 218,  413 => 190,  402 => 182,  391 => 173,  388 => 172,  385 => 171,  382 => 170,  379 => 169,  376 => 168,  373 => 167,  370 => 166,  357 => 165,  332 => 163,  314 => 158,  301 => 157,  147 => 14,  142 => 12,  129 => 11,  113 => 8,  100 => 7,  84 => 4,  71 => 3,  42 => 1,);
  691.     }
  692.     public function getSourceContext()
  693.     {
  694.         return new Source("{% extends 'grid.html.twig' %}
  695. {% block title %}
  696.     {{ seo_title() }}
  697. {% endblock %}
  698. {% block metaDescription %}
  699.     <meta name=\"description\" content=\"{{ seo_description() }}\">
  700. {% endblock %}
  701. {% block stylesheet %}
  702.     {{ parent() }}
  703.     {# <link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css\"> #}
  704.     <style>
  705.     .ymaps-2-1-79-balloon__close+.ymaps-2-1-79-balloon__content {
  706.         margin-right: 0!important;
  707.             padding: 0!important;
  708.     }
  709.         .map-wrap {
  710.             width: 100%;
  711.             height: 700px;
  712.             border-radius: 20px;
  713.             overflow: hidden;
  714.         }
  715.         .map-model {
  716.             background-color: #1c1c1c;
  717.             box-shadow: 0 1px 10px rgba(28, 28, 28, .5);
  718.             margin-right: 0;
  719.             max-width: 220px;
  720.             position: relative;
  721.         }
  722.         .map-model__images {
  723.             margin-bottom: 10px !important;
  724.             display: block;
  725.         }
  726.         .map-model__images img{
  727.             max-width: 200px;
  728.         }
  729.         .map-model__info .info-title {
  730.             color: #fff;
  731.             font-size: 16px;
  732.             line-height: 19px;
  733.             overflow: hidden;
  734.             text-overflow: ellipsis;
  735.             white-space: nowrap;
  736.         }
  737.         .map-model__info .info-phone {
  738.             padding-top: 5px;
  739.         }
  740.         [class\$=\"-balloon-pane\"] ymaps {
  741.             box-shadow: none !important;
  742.             border: none !important;
  743.             background: #000;
  744.             border-radius: 12px;
  745.         }
  746.         .map-model__info .info-phone .phone {
  747.             color: #ed0c34;
  748.             font-size: 14px;
  749.             font-weight: 700;
  750.             line-height: 16px;
  751.             overflow: hidden;
  752.             text-overflow: ellipsis;
  753.             white-space: nowrap;
  754.         }
  755.         .map-model__info .info-phone span {
  756.             color: #ffb800;
  757.             font-size: 14px;
  758.             line-height: 16px;
  759.         }
  760.         .map-model-widget .map-model__info .info-phone span em,
  761.         .map-model__info .info-phone span em {
  762.             color: grey;
  763.             font-size: 12px;
  764.             font-style: normal;
  765.             line-height: 14px;
  766.         }
  767.         @media (max-width: 768px) {
  768.             .map-model {
  769.                 max-width: 150px;
  770.                 padding: 5px !important;
  771.             }
  772.             .map-model__images {margin-bottom: 3px !important;}
  773.             .map-model__images img{max-width: 140px;}
  774.             .map-model__info .info-phone{
  775.                 padding-top: 3px;
  776.             }
  777.             .map-model__info .info-phone .phone {
  778.                 font-size: 13px;
  779.                 line-height: 15px;
  780.             }
  781.             .map-model__info .info-phone span {
  782.                 font-size: 12px;
  783.                 line-height: 14px;
  784.             }
  785.             .map-model__info .info-title {
  786.                 font-size: 13px;
  787.                 line-height: 15px;
  788.             }
  789.         }
  790.         [class\$=\"-balloon-pane\"] .ymaps-2-1-79-balloon__close-button {
  791.             border-radius: 20px;
  792.         }
  793.         [class\$=\"-balloon-pane\"] .ymaps-2-1-79-balloon__tail {
  794.             border-radius: 0;
  795.         }
  796.         [class\$=\"-balloon-pane\"] .map-model__images img {
  797.             border-radius: 12px;
  798.         }
  799.         [class\$=-balloon__close] {
  800.             position: absolute !important;
  801.             right: 0;
  802.         }
  803.         [class\$=-balloon__close] [class\$=-balloon__close-button] {
  804.             height: 25px;
  805.             position: relative;
  806.             width: 25px;
  807.         }
  808.         [class\$=-balloon__close] [class\$=-balloon__close-button]:before {
  809.             background: #000;
  810.             bottom: 0;
  811.             content: \"\";
  812.             filter: invert(1);
  813.             height: 2px;
  814.             left: 0;
  815.             margin: auto;
  816.             position: absolute;
  817.             right: 0;
  818.             top: 0;
  819.             transform: rotate(45deg);
  820.             width: 70%;
  821.         }
  822.         [class\$=-balloon__close] [class\$=-balloon__close-button]:after {
  823.             background: #000;
  824.             bottom: 0;
  825.             content: \"\";
  826.             filter: invert(1);
  827.             height: 2px;
  828.             left: 0;
  829.             margin: auto;
  830.             position: absolute;
  831.             right: 0;
  832.             top: 0;
  833.             transform: rotate(-45deg);
  834.             width: 70%;
  835.         }
  836.         .ymaps-2-1-79-balloon__tail:after {
  837.             background-color: #000 !important;
  838.         }
  839.     </style>
  840. {% endblock %}
  841. {% block preconnect %}
  842. \t{{ parent() }}
  843. \t<link rel=\"preconnect\" href=\"https://yastatic.net\">
  844. \t<link rel=\"preconnect\" href=\"https://api-maps.yandex.ru\">
  845. {% endblock %}
  846. {% block name_page %}map{% endblock %}
  847. {% block mainContainer %}
  848.     {% if city is defined and city.mapCoordinate.latitude %}
  849.         {% set lat = city.mapCoordinate.latitude %}
  850.         {% set lon = city.mapCoordinate.longitude %}
  851.     {% else %}
  852.         {% set lat = '55.753215' %}
  853.         {% set lon = '37.622504' %}
  854.     {% endif %}
  855.     <h1 class=\"border-line\">Интим карта</h1>
  856.     <p class=\"mb-lg-4\">
  857.         На карте обозначено местоположение зарегистрированных анкет.
  858.         Кликнув на маркер Вы узнаете краткую информацию о девушке.
  859.     </p>
  860.     <div class=\"map p-2 p-md-3 p-lg-4 mb-3 mb-md-4\">
  861.         <div class=\"d-flex justify-content-center justify-content-md-between mb-2 mb-md-3 mb-lg-4\">
  862.             <button class=\"btn btn-secondary btn-collapse-filter\" type=\"button\" id=\"filter-expand\">
  863.                 <svg class=\"icon mr-1\">
  864.                     <use xlink:href=\"{{ asset('assets_domain/images/icons/svg-library.svg', 'nodomainConfig') }}#icon-dropdown\"></use>
  865.                 </svg>
  866.                 Расширенный поиск
  867.             </button>
  868.             <div class=\"d-flex align-items-center collapse-reset ml-2\">
  869.                 <span class=\"d-none d-md-block\" id=\"count-parameters\">Выбрано <em data-count-parameters>0</em> параметров</span>
  870.                 <button class=\"btn btn-secondary btn-collapse-reset ml-md-2\" id=\"reset-form-2\" data-reset>
  871.                     <svg class=\"icon mr-1\">
  872.                         <use xlink:href=\"{{ asset('assets_domain/images/icons/svg-library.svg', 'nodomainConfig') }}#icon-reset\"></use>
  873.                     </svg>
  874.                     Сброс
  875.                 </button>
  876.             </div>
  877.         </div>
  878.         <div id=\"collapseFilterContainer\"></div>
  879. \t\t<div class=\"map-wrap skeleton skeleton--map loading\" id=\"map-wrap\"></div>
  880.         {# <div class=\"map-wrap loading\" id=\"map-wrap\">
  881.             <img src=\"{{ asset('assets/images/preloader.svg','basicConfig') }}\" class=\"preloader\" id=\"preloader\" style=\"display: none;\" />
  882.             <div class=\"map\" id=\"map\" style=\"width: 100%; height: 700px;\"
  883.                 data-multiple-cities=\"{{ multipleCities }}\"
  884.                 data-city-uri-idenity=\"{{ cityUriIdentity }}\"
  885.                 data-city-latitude=\"{{ lat }}\"
  886.                 data-city-longitude=\"{{ lon }}\"
  887.                 data-locale=\"{{ app.request.locale }}\"
  888.                 data-path=\"{{ path('map.filter', {city:cityUriIdentity}) }}\"
  889.                 data-icon-single=\"islands#redIcon\"
  890.                 data-icon-saloon=\"islands#violetIcon\"
  891.                 data-icon-cluster=\"islands#invertedRedClusterIcons\"
  892. \t\t\t\tdata-avatar-path = \"{{ responsive_asset('replace-path', 'profile_media_avatar', \"200x280\", \"jpg\") }}\"
  893.                 data-photo-path = \"{{ responsive_asset('replace-path', 'profile_media', \"200x280\", \"jpg\") }}\"
  894.                 data-thumb-path = \"{{ responsive_asset('replace-path', 'saloon_media_thumb', \"200x280\", \"jpg\") }}\"
  895.                 data-process-profile-shows-url  = \"{{ path('map.increment_profile_shows', multipleCities ? {city:cityUriIdentity} : {}) }}\"
  896.             ></div>
  897.         </div> #}
  898.     </div>
  899. {% endblock %}
  900. {% block javascripts %}
  901.     {{ parent() }}
  902. \t{% if city is defined and city.mapCoordinate.latitude %}
  903. \t\t{% set lat = city.mapCoordinate.latitude %}
  904. \t\t{% set lon = city.mapCoordinate.longitude %}
  905. \t{% else %}
  906. \t\t{% set lat = '55.753215' %}
  907. \t\t{% set lon = '37.622504' %}
  908. \t{% endif %}
  909. \t<script src=\"{{ asset('bundles/fosjsrouting/js/router.min.js') }}\" defer></script>
  910. \t<script src=\"{{ path('fos_js_routing_js', { callback: 'fos.Router.setData' }) }}\" defer></script>{##}
  911. \t<script src=\"https://api-maps.yandex.ru/2.1/?lang=ru_RU&onload=initMap&ns=ym\" defer></script>
  912. \t<script>
  913.         const mapConfig = {
  914. \t\t\tid:\"map-wrap\",
  915. \t\t\tmultiple_cities:\"{{ multipleCities }}\",
  916. \t\t\troutes_url: \"{{ multipleCities == 0 ? '/js/fos_js_routes.json' : '/js/fos_js_routes_city_prefixed.json' }}\",
  917. \t\t\tcity_uri_identity:\"{{ cityUriIdentity }}\",
  918. \t\t\tcity_latitude:\"{{ lat }}\",
  919. \t\t\tcity_longitude:\"{{ lon }}\",
  920. \t\t\tlocale:\"{{ app.request.locale }}\",
  921. \t\t\tpath:\"{{ path('map.filter', {city:cityUriIdentity}) }}\",
  922. \t\t\ticon_profile:\"{{ asset('assets/images/map/profile.svg') }}\",
  923. \t\t\ticon_profile_active:\"{{ asset('assets/images/map/profile-active.svg') }}\",
  924. \t\t\ticon_profile_hover:\"{{ asset('assets/images/map/profile-hover.svg') }}\",
  925. \t\t\ticon_saloon:\"{{ asset('assets/images/map/saloon.svg') }}\",
  926. \t\t\ticon_saloon_active:\"{{ asset('assets/images/map/saloon-active.svg') }}\",
  927. \t\t\ticon_saloon_hover:\"{{ asset('assets/images/map/saloon-hover.svg') }}\",
  928. \t\t\ticon_masseur:\"{{ asset('assets/images/map/masseur.svg') }}\",
  929. \t\t\ticon_masseur_active:\"{{ asset('assets/images/map/masseur-active.svg') }}\",
  930. \t\t\ticon_masseur_hover:\"{{ asset('assets/images/map/masseur-hover.svg') }}\",
  931. \t\t\ticon_cluster_small:\"{{ asset('assets/images/map/cluster-small.svg') }}\",
  932. \t\t\ticon_cluster_medium:\"{{ asset('assets/images/map/cluster-medium.svg') }}\",
  933. \t\t\ticon_cluster_big:\"{{ asset('assets/images/map/cluster-big.svg') }}\",
  934. \t\t\tavatar_path : \"{{ responsive_asset('replace_path', 'profile_media_avatar', \"200x280\", \"jpg\") }}\",
  935. \t\t\tphoto_path : \"{{ responsive_asset('replace_path', 'profile_media', \"200x280\", \"jpg\") }}\",
  936. \t\t\tthumb_path : \"{{ responsive_asset('replace_path', 'saloon_media_thumb', \"200x280\", \"jpg\") }}\",
  937. \t\t\tprocess_profile_shows_url  : \"{{ path('map.increment_profile_shows', multipleCities ? {city:cityUriIdentity} : {}) }}\"
  938. \t\t};
  939.         var isMapInitialized = false;
  940. \t\tvar yaMapLoaded = false;
  941.         function initMap() {
  942. \t\t\twindow.ymap = new ym.Map(document.getElementById('map-wrap'), {
  943. \t\t\t\tcenter: [\"{{ lat }}\", \"{{ lon }}\"],
  944. \t\t\t\tzoom: 8,
  945. \t\t\t\tcontrols: ['zoomControl', 'typeSelector',  'fullscreenControl']
  946. \t\t\t});
  947. \t\t\tyaMapLoaded = true;
  948. \t\t}
  949. \t\twindow.profileShowed = function ({id}) {
  950. \t\t\tif (!id) return;
  951. \t\t\tfetch('{{ path('profile_ctr.increase_shows') }}', {
  952. \t\t\t\tmethod: \"POST\",
  953. \t\t\t\tbody: JSON.stringify({ profiles: [id], source: 'map' }),
  954. \t\t\t});
  955. \t\t}
  956.         window.stations = {
  957. \t\t\t{%- for station in stations() -%}{{- station.id -}}:{icon:`{%- include 'components/metro/icon_generate.partial.twig' with {data: station|station_lines} -%}`,name:`{{- station.name -}}`},{%- endfor -%}
  958. \t\t};
  959.         document.addEventListener('DOMContentLoaded', function () {
  960. \t\t\tfunction loadForm() {
  961. \t\t\t\tfetch('{{ path('map.form', {city: cityUriIdentity}) }}', {
  962. \t\t\t\t\tmode: \"cors\",
  963. \t\t\t\t\timportance: \"low\",
  964. \t\t\t\t\tmethod: \"POST\",
  965. \t\t\t\t\theaders: {
  966. \t\t\t\t\t\t\"Content-Type\": \"application/x-www-form-urlencoded\",
  967. \t\t\t\t\t\t\"X-Requested-With\": \"XMLHttpRequest\"
  968. \t\t\t\t\t},
  969. \t\t\t\t}).then(response => {
  970. \t\t\t\t\tif (response.status < 300) {
  971. \t\t\t\t\t\treturn response.text();
  972. \t\t\t\t\t} else {
  973. \t\t\t\t\t\tconsole.warn(\"🤔\");
  974. \t\t\t\t\t\treturn null;
  975. \t\t\t\t\t}
  976. \t\t\t\t}).then(response => {
  977. \t\t\t\t\tdocument.getElementById('collapseFilterContainer').innerHTML = response;
  978. \t\t\t\t\tfilterLoader();
  979.                     const expandButton = document.getElementById('filter-expand');
  980.                     const expandElement = document.getElementById('collapseFilter');
  981.                     expandButton.addEventListener('click', () => {
  982.                         expandButton.classList.toggle('open');
  983.                         expandElement.classList.toggle('show');
  984.                     });
  985. \t\t\t\t});
  986. \t\t\t}
  987. \t\t\tloadForm();
  988. \t\t\tfunction filterLoader() {
  989. \t\t\t\tconst stringifyData = `{\"city_id\":\"\${document.getElementById('filter_map_form_city_id').value}\",\"_token\":\"\${document.getElementById('filter_map_form__token').value}\"}`;
  990. \t\t\t\tfetch(\"{{ path('map.filter', {city:cityUriIdentity}) }}\", {
  991. \t\t\t\t\tmethod: \"POST\",
  992. \t\t\t\t\theaders: {
  993. \t\t\t\t\t\t'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
  994. \t\t\t\t\t\t'X-Requested-With': 'XMLHttpRequest',
  995. \t\t\t\t\t},
  996. \t\t\t\t\tbody: new URLSearchParams({ form: stringifyData }).toString(),
  997. \t\t\t\t})
  998. \t\t\t\t\t.then(response => response.json())
  999. \t\t\t\t\t.then(data => {
  1000. \t\t\t\t\t\tconst mapLoadedInterval = setInterval(()=>{
  1001. \t\t\t\t\t\t\tif (yaMapLoaded) {
  1002. \t\t\t\t\t\t\t\tnew MapPage(mapConfig);
  1003. \t\t\t\t\t\t\t\tdocument.dispatchEvent(new CustomEvent('map:data:loaded', { detail: { data, stringifyData } }));
  1004. \t\t\t\t\t\t\t\tclearInterval(mapLoadedInterval)
  1005. \t\t\t\t\t\t\t}
  1006. \t\t\t\t\t\t}, 200)
  1007. \t\t\t\t\t})
  1008. \t\t\t\t\t.catch(error => console.error(error));
  1009. \t\t\t}
  1010. \t\t});
  1011. \t</script>
  1012. {% endblock %}
  1013. {% block modal %}
  1014. \t{{- parent() -}}
  1015. \t{{- include('components/modals/map-filter.html.twig') -}}
  1016. {% endblock %}
  1017. ""Map/page.html.twig""/app/templates/Map/page.html.twig");
  1018.     }
  1019. }