templates/homepage/dealer.html.twig line 1

  1. {% extends 'base.html.twig' %}
  2. {% block title %}Autobazary {% if activePlace %}{{ activePlace.name|trans }}{%  else %} celá ČR {%  endif %} | Autanet.cz {% endblock %}
  3. {% block desc  %}Autobazary a autosalony {% if activePlace %}  {{ activePlace.name|trans }} {%  else %}celá ČR{%  endif %}. Seznam prodejců s aktuální nabídkou vozidel.{% endblock %}
  4.         {% block stylesheets %}
  5.             {{ encore_entry_link_tags('app') }}
  6.         {% endblock %}
  7.         {% block javascripts %}
  8.             {{ encore_entry_script_tags('app') }}
  9.            <script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
  10.             <script
  11.                     src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDMvCFLEp2JWA1HQ5riIBgtCn8Hy5bS9nw&callback=initMap&v=weekly"
  12.                     defer
  13.             ></script>
  14.             <script src="https://unpkg.com/@googlemaps/markerclusterer/dist/index.min.js"></script>
  15.         {% endblock %}
  16. {% block body %}
  17.     <section  class="grid grid--gap40 grid--padding40">
  18.         <div>
  19.             <h1>Seznam prodejců vozidel - autobazary a autosalony</h1>
  20.             <div id="map" style="height: 400px" ></div>
  21.             <script>
  22.                 function initMap() {
  23.                     const map = new google.maps.Map(document.getElementById("map"), {
  24.                         zoom: 7,
  25.                         center: {lat: 49.7887636, lng: 15.6634697},
  26.                     });
  27.                     setMarkers(map);
  28.                 }
  29.                 function setMarkers(map) {
  30.                     const image = {
  31.                         url: "{{ asset('img/icon-dealer.png') }}",
  32.                         // This marker is 20 pixels wide by 32 pixels high.
  33.                         size: new google.maps.Size(40, 40),
  34.                         // The origin for this image is (0, 0).
  35.                         origin: new google.maps.Point(0, 0),
  36.                         // The anchor for this image is the base of the flagpole at (0, 32).
  37.                         anchor: new google.maps.Point(0, 40),
  38.                     };
  39.                     const dealers = {{ dealerMap|json_encode|raw }};
  40.                     const markers = [];
  41.                     for (let i = 0; i < dealers.length; i++) {
  42.                         const dealer = dealers[i];
  43.                         const marker = new google.maps.Marker({
  44.                             position: {lat: dealer.lat, lng: dealer.lng},
  45.                             map,
  46.                             icon: image,
  47.                             title: dealer.name + ' ' + dealer.city,
  48.                             zIndex: dealer.id,
  49.                         });
  50.                         marker.addListener("click", () => {
  51.                             const infowindow = new google.maps.InfoWindow({
  52.                                 content: '<div style="width: 350px; overflow: hidden">' +
  53.                                     '<b>'+dealer.name+'</b><br>'+dealer.city+', '+dealer.street+'<br>Počet vozů: '+dealer.countVehicle+' ' +
  54.                                     '<br> <a  href="'+dealer.link+'">Zobrazit kartu prodejce >></a> </div>',
  55.                             });
  56.                             google.maps.event.addListener(map, 'click', function() {
  57.                                 infowindow.close();
  58.                             });
  59.                             infowindow.open({
  60.                                 anchor: marker,
  61.                                 map,
  62.                             });
  63.                         });
  64.                         markers.push(marker);
  65.                     }
  66.                 }
  67.                 window.initMap = initMap;
  68.             </script>
  69.             <h2 id="search-dealer">Hledat prodejce</h2>
  70.                 <div class="form__columns">
  71.                     <fieldset>
  72.                         <div class="form__input-group">
  73.                             <div class="form__group">
  74.                                 <label>Hledat podle regionu</label>
  75.                                 <select   id="select-place" name="place">
  76.                                     <option value=""  >Česká republika </option>
  77.                                     {% for s in selectPlaceValues %}
  78.                                         <option {% if   app.request.get('urlPlace')  ==  s.url   %} selected {%  endif  %} value="{{ s.url }}">{{ s.name }}</option>
  79.                                     {% endfor %}
  80.                                 </select>
  81.                             </div>
  82.                         </div>
  83.                     </fieldset>
  84.                     <fieldset>
  85.                         <div class="form__group">
  86.                             <label>Hledat podle názvu</label>
  87.                             <input id="typeahead" type="search" placeholder="Název prodejce">
  88.                         </div>
  89.                     </fieldset>
  90.                 </div>
  91.             <hr>
  92.             <h2>Autobazary a autosalony
  93.                 {% if activePlace %}
  94.                 {{ activePlace.name|trans }}
  95.                 {%  else %}
  96.                     celá ČR
  97.                 {%  endif %}
  98.             </h2>
  99.             {% for d in dealers %}
  100.             <article class="basic-3">
  101.                 <figure class="basic-3__image">
  102.                     <a class="basic-3__image-img" href="{{ path('page_dealer_detail' ,{ url: d.url   }) }}">
  103.                         {% if d.dealerImages|length > 0  %}
  104.                         <img
  105.                                 src="{{ asset('img-dealer/') ~ d.dealerImages.first.name }}"
  106.                                 {{ stimulus_controller('symfony/ux-lazy-image/lazy-image', {
  107.                                     src: asset('img-dealer/')~d.dealerImages.first.name
  108.                                 }) }}
  109.                                 width="200"
  110.                         >
  111.                         {% endif  %}
  112.                     </a>
  113.                 </figure>
  114.                 <div class="basic-3__text">
  115.                     <div class="basic-3__row">
  116.                         <div>
  117.                             <h4 class="basic-3__title"><a href="{{ path('page_dealer_detail' ,{ url: d.url   }) }}">{{ d.name }}</a></h4>
  118.                         </div>
  119.                         <figure class="basic-3__logo">
  120.                             {% if d.logo %}
  121.                             <img
  122.                                     src="{{ asset('img-dealer/')~d.logo    }}"
  123.                                     {{ stimulus_controller('symfony/ux-lazy-image/lazy-image', {
  124.                                         src: asset('img-dealer/')~d.logo
  125.                                     }) }}
  126.                                     width="200"
  127.                             >
  128.                             {% endif  %}
  129.                         </figure>
  130.                     </div>
  131.                     <p>
  132.                         {{ d.street }}, {{ d.city }}<br>  {{ d.district.region.name }}
  133.                     <p><strong>   {{ d.description|slice(0, 150) }} {% if d.description|length > 0  %}...   {% endif %} </strong></p>
  134.                     {% if d.nameImportVehicle is not same as null and d.idImportVehicle is not empty %}
  135.                     <div class="basic-3__footer">
  136.                         <a class="button" href="{{ path('page_dealer_vehicle' ,{ url: d.url   }) }}">
  137.                             <i class="icon icon-car"></i>
  138.                             Nabídka vozidel
  139.                             <span class="button__number">
  140.                                 {{ render(controller( 'App\\Controller\\DealerController::countVehicle', { dealer: d } )) }} </span>
  141.                         </a>
  142.                     </div>
  143.                     {% endif %}
  144.                 </div>
  145.             </article>
  146.                 {% if loop.index == 3 %}
  147.                     <div id="banner-mobile-container" class="banner-mobile"></div>
  148.                 {%  endif %}
  149.                 {% if loop.index == 1 %}
  150.                     <div id="adform_squarem"></div>
  151.                 {%  endif %}
  152.                 {% if loop.index == 5 %}
  153.                     <div id="AdTrackGenericInterscrollerMobile"></div>
  154.                 {%  endif %}
  155.                 {% if loop.index == 9 %}
  156.                     <div id="adform_squarem2"></div>
  157.                 {%  endif %}
  158.             {% endfor %}
  159.                 <div class="navigation">
  160.                     {{ knp_pagination_render(dealers) }}
  161.                 </div>
  162.         </div>
  163.         <div>
  164.             <div id="adform_halfpage"></div>
  165.             <br>
  166.             <div id="banner-container" class="banner"></div>
  167.             {{ render(controller( 'App\\Controller\\VehicleTipController::tip' )) }}
  168.             <div id="adform_halfpage2"></div>
  169.         </div>
  170.     </section>
  171.     <script src="https://cdnjs.cloudflare.com/ajax/libs/typeahead.js/0.10.3/typeahead.bundle.min.js" integrity="sha512-E4rXB8fOORHVM/jZYNCX2rIY+FOvmTsWJ7OKZOG9x/0RmMAGyyzBqZG0OGKMpTyyuXVVoJsKKWYwbm7OU2klxA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
  172.     <script src="https://cdnjs.cloudflare.com/ajax/libs/typeahead.js/0.10.3/bloodhound.js" integrity="sha512-MUXDwKJLicyKwyUPcOd9hAyGHWVtyY0jOcRXWpiM4pnzaLy+OFP8gvKUphO0kIBP73zdH7uFVYmFRkbFkRbe7w==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
  173.     <script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.7.7/handlebars.min.js" integrity="sha512-RNLkV3d+aLtfcpEyFG8jRbnWHxUqVZozacROI4J2F1sTaDqo1dPQYs01OMi1t1w9Y2FdbSCDSQ2ZVdAC8bzgAg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
  174.     <script>
  175.         $("#select-place").select2({
  176.             language: "cs",
  177.             width: "100%",
  178.         });
  179.         $('#select-place').on("select2:select", function(e) {
  180.             window.location.replace("{{ path('page_dealer') }}/"+e.target.value+"#search-dealer");
  181.         });
  182.         let links = {{ dealerMap|json_encode|raw }};
  183.         let source = new Bloodhound({
  184.             datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
  185.             queryTokenizer: Bloodhound.tokenizers.whitespace,
  186.             local: links
  187.         });
  188.         source.initialize();
  189.         $('#typeahead').typeahead(null, {
  190.             name: 'matched-links',
  191.             displayKey: 'name',
  192.             source: source.ttAdapter(),
  193.             templates: {
  194.                 empty: [
  195.                     '<div class="empty-message">',
  196.                     'unable to find any company that match current query',
  197.                     '</div>'
  198.                 ].join('\n'),
  199.                 suggestion: Handlebars.compile(' <div class="select-link"><a  class="select-link" href=" {{ '{{' }}link{{ '}}' }}"><b> {{ '{{' }}name{{ '}}' }}</b> <br>' +
  200.                     ' {{ '{{' }}street{{ '}}' }},  {{ '{{' }}city{{ '}}' }},  {{ '{{' }}region{{ '}}' }} </a></div>')
  201.             }
  202.         });
  203.     </script>
  204. {% endblock %}