src/DcSiteBundle/Resources/views/Opel/Car/configuration.html.twig line 1

Open in your IDE?
  1. {% extends '@DcSite/Opel/base.html.twig' %}
  2. {% block seo %}
  3.     <title>
  4.         {{ 'car.configuration_page.seo.title'|trans({
  5.             '%car%' : model.fullName,
  6.             '%year%' : model.year,
  7.             '%dealer%' : dealer.name,
  8.         }, 'dc_base') }}
  9.     </title>
  10.     <meta name="description" content="{{ 'car.configuration_page.seo.description'|trans({
  11.             '%car%' : model.fullName,
  12.             '%year%' : model.year,
  13.             '%dealer%' : dealer.name,
  14.         }, 'dc_base') }}" />
  15.     {% if model.noindexFollow %}
  16.         <meta name="robots" content="noindex, follow" />
  17.     {% endif %}
  18. {% endblock seo %}
  19. {% block css %}
  20. {% endblock %}
  21. {% block content %}
  22.     <main class="new__car-car">
  23.         {% include '@DcSite/Opel/breadcrumbs.html.twig' with {
  24.             catName: 'pages.model_lineup.breadcrumb_title'|trans({}, 'dc_opel'),
  25.             catUrl: path('opel_model_lineup'),
  26.             catName2: model.fullName,
  27.             catUrl2: path('opel_card_car', {car: model.url}),
  28.             pageName: 'car.equipments_prices'|trans({}, 'dc_base') ~ ' ' ~ model.fullName
  29.         } %}
  30.         <article class="section_padd">
  31.             {% include '@DcSite/Modules/vehicle/vehicle-characteristic.html.twig' %}
  32.         </article>
  33.     </main>
  34. {% endblock %}
  35. {% block pageJS %}
  36.     <script>
  37.         app.onCustomEvent('appInit', function () {
  38.             app.loadCss('{{ asset('/bundles/dcsite/css/modules/car/car-card_v3.css') }}');
  39.             app.loadCss('{{ asset('/bundles/dcsite/css/opel/car/car-card.css') }}');
  40.             app.loadJs('{{ asset('/bundles/dcsite/js/modules/vehicle/vehicle-characteristic.js') }}',function () {
  41.                 initVehicleCharacteristic({
  42.                     vehicleCharacteristic: '{{ vehicleCharacteristic|json_encode_replace|raw }}',
  43.                 });
  44.             });
  45.             // -- CAR TABLES --------//
  46.             
  47.             // sync scroll
  48.             document.addEventListener('scroll', function (event) {
  49.                 if (event.target.classList && event.target.classList.contains('js-scroll-sync')) {
  50.                     debounce(scrollSyncHandler.bind(event.target), 20);
  51.                 }
  52.             }, true);
  53.             function scrollSyncHandler() {
  54.                 var scrollLeft = $(this).scrollLeft();
  55.                 var idSync = $(this).data('scroll-sync');
  56.                 $('.js-scroll-sync[data-scroll-sync=' + idSync + ']').scrollLeft(scrollLeft);
  57.             }
  58.             // drag scroll
  59.             var isTouchDevice =
  60.                 (('ontouchstart' in window) ||
  61.                 (navigator.MaxTouchPoints > 0) ||
  62.                 (navigator.msMaxTouchPoints > 0));
  63.             var isDown = false;
  64.             var startX;
  65.             var scrollLeft;
  66.             if (!isTouchDevice) {
  67.                 $('body').on('mousedown', '.js-touch-scroll', function(e) {
  68.                     var scrolledEl = e.target.closest('.js-touch-scroll');
  69.                     isDown = true;
  70.                     scrolledEl.classList.add("active");
  71.                     startX = e.pageX - scrolledEl.offsetLeft;
  72.                     scrollLeft = scrolledEl.scrollLeft;
  73.                     scrolledEl.style.cursor = 'grabbing';
  74.                     scrolledEl.style.userSelect = 'none';
  75.                 });
  76.                 $('body').on('mouseleave', '.js-touch-scroll', function(e) {
  77.                     var scrolledEl = e.target.closest('.js-touch-scroll');
  78.                     isDown = false;
  79.                     scrolledEl.classList.remove("active");
  80.                 });
  81.                 $('body').on('mouseup', '.js-touch-scroll', function(e) {
  82.                     var scrolledEl = e.target.closest('.js-touch-scroll');
  83.                     isDown = false;
  84.                     scrolledEl.classList.remove("active");
  85.                     scrolledEl.style.cursor = 'move';
  86.                     scrolledEl.style.removeProperty('user-select');
  87.                 });
  88.                 $('body').on('mousemove', '.js-touch-scroll', function(e) {
  89.                     if (!isDown) return;
  90.                     e.preventDefault();
  91.                     var scrolledEl = e.target.closest('.js-touch-scroll');
  92.                     const x = e.pageX - scrolledEl.offsetLeft;
  93.                     const walk = x - startX;
  94.                     scrolledEl.scrollLeft = scrollLeft - walk;
  95.                 }); 
  96.             }
  97.             // table accordions
  98.             $('body').on('click', '.car-table__body-title', function() {
  99.                 $(this).toggleClass('--opened');
  100.                 $(this).next('.car-table__body').slideToggle();
  101.                 var $headerTable = $(this).closest('.car-table').find('.car-table__header');
  102.                 scrollSyncHandler.bind($headerTable)();
  103.             });
  104.             // sticky table titles
  105.             function setTopOfStickyBars() {
  106.                 var headerHeight = $('.header').height();
  107.                 var carNavHeight = $('.car-page-nav').height();
  108.                 $('.car-page-nav').css('top', headerHeight);
  109.                 $('.car-table__header').css('top', headerHeight + carNavHeight);
  110.             }
  111.             window.addEventListener('resize', setTopOfStickyBars, false);
  112.             window.addEventListener('load', setTopOfStickyBars);
  113.         });
  114.         function debounce(method, delay) {
  115.             clearTimeout(method._tId);
  116.             method._tId= setTimeout(function(){
  117.                 method();
  118.             }, delay);
  119.         }
  120.     </script>
  121. {% endblock pageJS %}