templates/front/machine/detail.html.twig line 1

Open in your IDE?
  1. {% extends "front/_common/_base.html.twig" %}
  2. {% block linkcanonical %}
  3.     <link rel="canonical" href="{{ absolute_url(path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params'))) }}">
  4. {% endblock %}
  5. {% block cssadicional %}
  6.     <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@8/swiper-bundle.min.css" />
  7.     {% if info.captchaShow %}
  8.     <script type="text/javascript">
  9.         var onloadCallback = function() {
  10.             grecaptcha.render('html_element', {
  11.             'sitekey' : '{{ info.captchaSite }}'
  12.             });
  13.         };
  14.     </script>
  15.     {% endif %}
  16. {% endblock %}
  17. {% block classbody %}{% endblock %}
  18. {% block content %}
  19. <!-- banner -->
  20. {% if detail.mainShow %}
  21. <section class="b41 detalleBanner">
  22.     {% if home.mainQuoteShow %}
  23.     <a href="#form" id="cotizaBtn">
  24.         <img src="{{ asset(home.mainQuoteImg|image_path|default('/static/img/cotiza.png') ) }}" alt="{{ home.mainQuoteImg|image_alt }}" />
  25.         {% if home.mainQuoteText %}
  26.         <small>{{ home.mainQuoteText }}</small>
  27.         {% endif %}
  28.     </a>
  29.     {% endif %}
  30.     <picture>
  31.         <source media="(max-width:480px)" srcset="{{ asset(detail.mainImgBg1|image_path|default(detail.mainImg|image_path)) }}" />
  32.         <source media="(max-width:768px)" srcset="{{ asset(detail.mainImgBg2|image_path|default(detail.mainImg|image_path)) }}" />
  33.         <img src="{{ asset(detail.mainImg|image_path) }}" />
  34.     </picture>
  35.     <article class="b41__info wancho">
  36.         <div class="general_breadcrumbs">
  37.             <ul>
  38.                 <li><a href="{{ path('home') }}">INICIO</a></li>
  39.                 <li><a href="{{ path('trucks_cat', {'slug': detail.category.slug}) }}">{{ detail.category.title }}</a></li>
  40.                 <li><a href="" aria-selected="true">{{ detail.title}}</a></li>
  41.             </ul>
  42.         </div>
  43.         <div>
  44.             <h2>{{ detail.mainPrefix }}</h2>
  45.             <h1>{{ detail.mainTitle }}</h1>
  46.             {% if detail.quoteShow %}
  47.             <a href="#form" class="general_button brown">{{ detail.mainBtnText|default('Quiero cotizar')}}</a>
  48.             {% endif %}
  49.         </div>
  50.     </article>
  51. </section>
  52. {% endif %}
  53. <!-- atributos -->
  54. {% if detail.attrShow or detail.rsFb or detail.rsTw or detail.rsWts %}
  55. <section class="b42 atributos">
  56.     {% if detail.attrShow %}
  57.     <article class="wancho">
  58.         {% if detail.attrTitle %}
  59.         <small>{{ detail.attrTitle }}</small>
  60.         {% endif %}
  61.         <div class="flex jcc">
  62.             {% for item in detail.attrItemsActive %}
  63.             <div
  64.                 class="faw__tab {{ loop.first ? 'active' : '' }}"
  65.                 data-info="{{ item.text }}"
  66.                 data-id="{{ loop.index }}"
  67.             >
  68.                 {{ item.title }}
  69.             </div>
  70.             {% endfor %}
  71.         </div>
  72.         <div class="b42__itemContainer flex jcsb aic">
  73.             <div class="b42__swiper__info">
  74.                 <h3></h3>
  75.                 <div class="gParrafo"></div>
  76.             </div>
  77.             <div class="b42__swiper__container">
  78.                 {% for item in detail.attrItemsRelationActive %}
  79.                 <div class="swiper b42__swiper {{ loop.first ? 'active' : ''}}" data-id="{{loop.index}}">
  80.                     <ul class="swiper-wrapper">
  81.                         {% for i in item.images %}
  82.                         <li
  83.                             class="swiper-slide"
  84.                             style="background-image: url('{{ asset(i.img|image_path) }}');" alt="{{ i.img|image_alt }}"
  85.                         ></li>
  86.                         {% endfor %}
  87.                     </ul>
  88.                     <div class="nav-buttons">
  89.                         <div class="button-prev"></div>
  90.                         <div class="button-next"></div>
  91.                     </div>
  92.                 </div>
  93.                 {% endfor %}
  94.             </div>
  95.         </div>
  96.     </article>
  97.     {% endif %}
  98.     {% if detail.rsFb or detail.rsTw or detail.rsWts %}
  99.     <div class="share_wrapper">
  100.         <ul>
  101.             {% if detail.rsFb %}
  102.             <li><a href="" class="icon-facebook facebook-share-fixed"></a></li>
  103.             {% endif %}
  104.             {% if detail.rsTw %}
  105.             <li><a href="" class="icon-twitter twitter-share-fixed"></a></li>
  106.             {% endif %}
  107.             {% if detail.rsWts %}
  108.             <li>
  109.                 <a
  110.                     href="https://api.whatsapp.com/send?text=FAW - Camión modelo {{detail.title}} {{ absolute_url(path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params'))) }}"
  111.                     class="icon-whatsapp"
  112.                     target="_blank"
  113.                     data-action="share/whatsapp/share"
  114.                 ></a>
  115.             </li>
  116.             {% endif %}
  117.         </ul>
  118.     </div>
  119.     {% endif %}
  120. </section>
  121. {% endif %}
  122. <!-- descripcion -->
  123. {% if detail.descripShow %}
  124. <section class="b43 descripcion">
  125.     <article class="wancho flex jcsb aic">
  126.         <div class="b43__desc">
  127.             {% if detail.descripTitle1 %}
  128.             <h3>{{ detail.descripTitle1}}</h3>
  129.             {% endif %}
  130.             <div class="gParrafo">
  131.                 {{ detail.descripText|raw }}
  132.             </div>
  133.         </div>
  134.         {% if detail.descripItemsActive %}
  135.         <div class="b43__galeria">
  136.             <img src="{{ asset(detail.descripItemsActive[0]['img']|image_path) }}" alt="{{ detail.descripItemsActive[0]['img']|image_alt }}" class="b43__galeria-main" />
  137.             <ul class="flex">
  138.                 {% for item in detail.descripItemsActive %}
  139.                 <li class="{{ loop.first ? 'active' : '' }}">
  140.                     <img src="{{ asset(item.img|image_path) }}" width="128" height="82" alt="{{ item.img|image_alt }}" />
  141.                 </li>
  142.                 {% endfor %}
  143.             </ul>
  144.         </div>
  145.         {% endif %}
  146.         {% if detail.descripCharItemsActive %}
  147.         <div class="b43__desc b43__desc--info">
  148.             <h3>{{ detail.descripTitle2 }}</h3>
  149.             <ul>
  150.                 {% for item in detail.descripCharItemsActive %}
  151.                 <li>
  152.                     <span>{{ item.title }}</span>
  153.                     <p>{{ item.text }}</p>
  154.                 </li>
  155.                 {% endfor %}
  156.             </ul>
  157.         </div>
  158.         {% endif %}
  159.     </article>
  160. </section>
  161. {% endif %}
  162. <!-- especificaciones -->
  163. {% if detail.tecShow and detail.tecItemsActive %}
  164. <section class="b44 especificaciones">
  165.     <article class="wancho">
  166.         <div class="flex jcsb">
  167.             {% if detail.tecTitle %}
  168.             <h4>{{ detail.tecTitle }}</h4>
  169.             {% endif %}
  170.             {% if detail.tecBrochure|image_path %}
  171.             <a href="{{ asset(detail.tecBrochure|image_path) }}" class="download-button" download>{{ detail.tecBrochureText|default('Descargar ficha técnica') }}</a>
  172.             {% endif %}
  173.         </div> 
  174.         <div class="flex jcsb especs__ctn">
  175.             <ul class="especs_list">
  176.                 {% for item in detail.tecItemsActive %}
  177.                 <li data-id="{{ loop.index }}" class="{{ loop.first ? 'active' : '' }}">
  178.                     <span>{{ item.title }}</span>
  179.                 </li>
  180.                 {% endfor %}
  181.             </ul>
  182.             <div class="especs__table-list">
  183.                 {% for item in detail.tecItemsActive %}
  184.                     <div data-id="{{ loop.index }}" class="{{ loop.first ? 'active' : '' }}">
  185.                     {{ item.text|raw }}
  186.                     </div>
  187.                 {% endfor %}
  188.             </div>
  189.         </div>
  190.     </article>
  191. </section>
  192. {% endif %}
  193. <!-- galeria -->
  194. {% if detail.galleryShow and detail.galleryItemsActive %}
  195. <section class="b45 galeria-detalle">
  196.     {% if detail.galleryTitle %}
  197.     <div class="wancho">
  198.         <h4>{{ detail.galleryTitle }}</h4>
  199.     </div>
  200.     {% endif %}
  201.     <!-- Slider main container -->
  202.     <div class="swiper b45__swiper">
  203.         <!-- Additional required wrapper -->
  204.         <ul class="swiper-wrapper">
  205.             <!-- Slides -->
  206.             {% for item in detail.galleryItemsActive %}
  207.             <li class="swiper-slide"><img src="{{ asset(item.img|image_path) }}" alt="{{ item.img|image_alt }}" /></li>
  208.             {% endfor %}
  209.         </ul>
  210.         <!-- If we need navigation buttons -->
  211.         <div class="nav-buttons">
  212.             <div class="button-prev"></div>
  213.             <div class="button-next"></div>
  214.         </div>
  215.     </div>
  216. </section>
  217. {% endif %}
  218. <!-- cotiza -->
  219. {% if detail.quoteShow %}
  220. <section class="b46 cotizar-detalle" id="form">
  221.     <article class="wancho flex">
  222.         <div class="b46__cotizar">
  223.             {% if detail.quotePrefix %}
  224.             <small>{{ detail.quotePrefix }}</small>
  225.             {% endif %}
  226.             {% if detail.quoteTitle %}
  227.             <h4>{{ detail.quoteTitle|block_tag('span')|raw}}</h4>
  228.             {% endif %}
  229.             <div class="general_form">
  230.                   {{ form_start(form, {'attr': {'novalidate': 'novalidate'}}) }}
  231.                     {{ form_widget(form.utmSource, {'attr': {'class': 'form_utmsource'}}) }}
  232.                     {{ form_widget(form.utmMedium, {'attr': {'class': 'form_utmmedium'}}) }}
  233.                     {{ form_widget(form.utmCampaign, {'attr': {'class': 'form_utmcampaign'}}) }}
  234.                     {{ form_widget(form.utmContent, {'attr': {'class': 'form_utmcontent'}}) }}
  235.                     {{ form_widget(form.utmTerm, {'attr': {'class': 'form_utmterm'}}) }}
  236.                     {{ form_widget(form.gclid, {'attr': {'class': 'gclid'}}) }}
  237.                     {{ form_widget(form.isPerson) }}
  238.                     <fieldset class="radioGroup">
  239.                         <div>
  240.                             <input type="radio" name="tipo" id="empresa" checked />
  241.                             <label for="empresa">Soy empresa</label>
  242.                         </div>
  243.                         <div>
  244.                             <input type="radio" name="tipo" id="natural" />
  245.                             <label for="natural">Soy persona natural</label>
  246.                         </div>
  247.                     </fieldset>
  248.                     <fieldset class="formGroup" id="personaGroup" style="display:none;">
  249.                         <div class="fInput fSelect">
  250.                             {{ form_widget(form.docType, {'attr': {'class':'validate[required]', 'data-validation-placeholder' : 'Tipo doc*'}}) }}
  251.                         </div>
  252.                         <div class="fInput">
  253.                             <label for="empresa">Número doc.</label>
  254.                             {{ form_widget(form.docNum, {'attr': {'class':'validate[required, maxSize[15]]', 'data-validation-placeholder' : 'Tipo doc*',  'data-maxChar':'15', 'data-expression':'number'}}) }}
  255.                         </div>
  256.                         <!--
  257.                         <div class="fInput fSelect">
  258.                             <select
  259.                                 class="validate[required]"
  260.                                 data-validation-placeholder="Tipo de vehículo*"
  261.                                 name="vehiculo"
  262.                                 id="vehiculo"
  263.                             >
  264.                                 <option selected="selected">Tipo de vehículo*</option>
  265.                                 <option value="ica">ica</option>
  266.                             </select>
  267.                         </div>
  268.                         <div class="fInput fSelect">
  269.                             <select
  270.                                 class="validate[required]"
  271.                                 data-validation-placeholder="Modelo"
  272.                                 name="modelo"
  273.                                 id="modelo"
  274.                             >
  275.                                 <option selected="selected">Modelo</option>
  276.                                 <option value="ica">ica</option>
  277.                             </select>
  278.                         </div>
  279.                         -->
  280.                     </fieldset>
  281.                     <fieldset class="formGroup" id="empresaGroup">
  282.                         <div class="fInput">
  283.                             <label for="ruc">RUC*</label>
  284.                              {{ form_widget(form.ruc, {'attr': {'class':'validate[required, maxSize[15]] validKeypress', 'data-maxChar':'15', 'data-expression':'number'}}) }}
  285.                         </div>
  286.                         <div class="fInput">
  287.                             <label for="empresa">Empresa*</label>
  288.                              {{ form_widget(form.factory, {'attr': {'class':'validate[required, maxSize[255]] validKeypress', 'data-maxChar':'15', 'data-expression':'text'}}) }}
  289.                         </div>
  290.                     </fieldset>
  291.                     <fieldset class="formGroup">
  292.                         <div class="fInput">
  293.                             <label for="nombre">Nombres*</label>
  294.                              {{ form_widget(form.name, {'attr': {'class':'validate[required, maxSize[50]] validKeypress', 'data-maxChar':'50', 'data-expression':'text'}}) }}
  295.                         </div>
  296.                         <div class="fInput">
  297.                             <label for="apellidos">Apellidos*</label>
  298.                              {{ form_widget(form.lastname, {'attr': {'class':'validate[required, maxSize[50]] validKeypress', 'data-maxChar':'50', 'data-expression':'text'}}) }}
  299.                         </div>
  300.                     </fieldset>
  301.                     <fieldset class="formGroup">
  302.                         <div class="fInput">
  303.                             <label for="telefono">Teléfono*</label>
  304.                              {{ form_widget(form.phone, {'attr': {'class':'validate[required, maxSize[15]] validKeypress', 'type': 'tel', 'data-maxChar':'15', 'data-expression':'number'}}) }}
  305.                         </div>
  306.                         <div class="fInput">
  307.                             <label for="correo">Correo Electrónico*</label>
  308.                              {{ form_widget(form.email, {'attr': {'class':'validate[required, maxSize[100]] validKeypress', 'type': 'email', 'data-maxChar':'100', 'data-expression':'email'}}) }}
  309.                         </div>
  310.                     </fieldset>
  311.                     <div class="fInput fSelect">
  312.                          {{ form_widget(form.departament, {'attr': {'class':'validate[required]', 'data-validation-placeholder' : 'Departamento*'}}) }}
  313.                     </div>
  314.                     <div class="fInput fSelect">
  315.                            {{ form_widget(form.origin, {'attr': {'class':'validate[required]' }}) }}
  316.                     </div>
  317.                     <div class="fInput">
  318.                         <label for="comentario">¿Tienes algún comentario?</label>
  319.                          {{ form_widget(form.comment, {'attr': {'class':'validate[maxSize[255]]', 'data-maxChar' : '255'}}) }}
  320.                     </div>
  321.                     <div class="fCheckBox">
  322.                         <span>*Campos obligatorios</span>
  323.                         <div class="formCheckbox">
  324.                             <input type="checkbox" id="1" name="check_terminos" class="validate[required]" />
  325.                             <label for="1"
  326.                                 >He leído y acepto las <a href="{{ path('privacy') }}" target="_blank">Políticas de privacidad</a></label
  327.                             >
  328.                         </div>
  329.                     </div>
  330.                     {% if info.captchaShow %}
  331.                     <div style="margin-bottom:10px; position: relative; width: max-content;">
  332.                         <div id="html_element"></div>
  333.                     </div>
  334.                     {% endif %}
  335.                     <div class="formButtonCtn">
  336.                         <button class="f-guardar-contacto-general hidden_button_send" id="sendFormMachine">Enviar</button>
  337.                         <button class="show_button_send">Enviando... <span class="icon-flecha-derecha"></span></button>
  338.                     </div>
  339.                   {{ form_end(form) }}
  340.             </div>
  341.         </div>
  342.     </article>
  343.     {% if detail.quoteItemsActive %}
  344.     <div class="b46__galeria">
  345.         <img src="{{ asset(detail.quoteItemsActive[0]['img']|image_path) }}" alt="{{ detail.quoteItemsActive[0]['img']|image_alt }}" class="b46__galeria__main" />
  346.         <!-- Slider main container -->
  347.         <div class="swiper b46__swiper">
  348.             <!-- Additional required wrapper -->
  349.             <ul class="swiper-wrapper">
  350.                 <!-- Slides -->
  351.                 {% for item in detail.quoteItemsActive %}
  352.                 <li class="swiper-slide">
  353.                     <img src="{{ asset(item.img|image_path) }}" alt="{{item.img|image_path}}" />
  354.                 </li>
  355.                 {% endfor %}
  356.             </ul>
  357.             <div class="nav-buttons">
  358.                 <div class="button-prev"></div>
  359.                 <div class="button-next"></div>
  360.             </div>
  361.             <!-- If we need scrollbar -->
  362.             <div class="swiper-scrollbar"></div>
  363.         </div>
  364.     </div>
  365.     {% endif %}
  366. </section>
  367. {% endif %}
  368. <!-- sostenibilidad -->
  369. {% if detail.promiseShow %}
  370. <section class="b47 sostenibilidad">
  371.     <img src="{{ asset(detail.promiseImg|image_path) }}" alt="{{ detail.promiseImg|image_alt }}" class="b47__main-img" />
  372.     <article class="wancho">
  373.         <div class="b47__info">
  374.             {% if detail.promiseLogo|image_path %}
  375.             <img src="{{ asset(detail.promiseLogo|image_path) }}" alt="{{ detail.promiseLogo|image_alt }}" />
  376.             {% endif %}
  377.             {% if detail.promisePrefix  %}
  378.             <small>{{ detail.promisePrefix }}</small>
  379.             {% endif %}
  380.             {% if detail.promiseTitle %}
  381.             <h5>{{ detail.promiseTitle }}</h5>
  382.             {% endif %}
  383.             <div class="gParrafo">
  384.             {{ detail.promiseText|raw }}
  385.             </div>
  386.         </div>
  387.     </article>
  388. </section>
  389. {% endif %}
  390. <!-- otros -->
  391. {% if detail.machinesShow and detail.machinesItemsActive|length > 0 %}
  392. <section class="otros">
  393.     {% if detail.machinesTitle %}
  394.     <div class="wancho">
  395.         <h5>{{ detail.machinesTitle }}</h5>
  396.     </div>
  397.     {% endif %}
  398.     <div class="swiper">
  399.         <ul class="camiones_list swiper-wrapper">
  400.             {% for item in detail.machinesItemsActive|slice(0, 3) %}
  401.             <li class="camion_card swiper-slide">
  402.                 <img src="{{ asset(item.imgList|image_path) }}" alt="marcacamion" />
  403.                 <small>{{ item.category.title|upper }}</small>
  404.                 <p>{{ item.title }}</p>
  405.                 <div class="flex">
  406.                     <a href="{{ path('truck', {'slug' : item.slug}) }}" class="general_button white">Ver modelo</a>
  407.                     <a href="{{ path('truck', {'slug' : item.slug}) }}#form" class="general_button">Quiero Cotizar</a>
  408.                 </div>
  409.             </li>
  410.             {% endfor %}
  411.         </ul>
  412.         <div class="nav-buttons">
  413.             <div class="button-prev"></div>
  414.             <div class="button-next"></div>
  415.         </div>
  416.     </div>
  417. </section>
  418. {% endif %}
  419. {% endblock %}
  420. {% block jsfinal %}
  421. <script src="{{ STATIC_URL }}js/validationform/jquery.validationEngine.js"></script>
  422. <script src="https://cdn.jsdelivr.net/npm/swiper@8/swiper-bundle.min.js"></script>
  423. {% include 'front/templates/captcha.html.twig' %}
  424. <script type="text/javascript">
  425.     //atributos
  426.     const tabCount = document.querySelectorAll('.faw__tab');
  427.     const swiperCount = document.querySelectorAll('.b42__swiper');
  428.     if(document.getElementsByClassName('faw__tab').length > 0) {
  429.         setInfo(document.getElementsByClassName('faw__tab')[0]);
  430.     }
  431.     tabCount.forEach(tab => {
  432.         tab.addEventListener('click', () => {
  433.             setInfo(tab);
  434.             tabCount.forEach(item => {
  435.                 item.classList.remove('active');
  436.             });
  437.             tab.classList.add('active');
  438.             const getItemId = tab.dataset.id;
  439.             swiperCount.forEach(item => {
  440.                 item.classList.remove('active');
  441.             });
  442.             const getSwiper = document.querySelector(`.b42__swiper[data-id="${getItemId}"]`);
  443.             getSwiper.classList.add('active');
  444.         });
  445.     });
  446.     function setInfo(element) {
  447.         const getTitle = element.innerHTML;
  448.         const getText = element.dataset.info;
  449.         document.querySelector('.b42__swiper__info').querySelector('h3').innerHTML = getTitle;
  450.         document.querySelector('.b42__swiper__info').querySelector('.gParrafo').innerHTML = getText;
  451.     }
  452.     swiperCount.forEach(swiperEl => {
  453.         const atributo_swiper = new Swiper(swiperEl, {
  454.             loop: true,
  455.             slidesPerView: 1,
  456.             spaceBetween: 0,
  457.             simulateTouch: true,
  458.             navigation: {
  459.                 nextEl: `.b42 .button-next`,
  460.                 prevEl: `.b42 .button-prev`,
  461.             },
  462.         });
  463.     });
  464.     //atributos
  465.     //descripciones
  466.     const getGallery = document.querySelector('.b43__galeria ul');
  467.     getGallery.addEventListener('click', event => {
  468.         const getItem = event.target;
  469.         document.querySelectorAll('.b43__galeria li').forEach(item => {
  470.             item.classList.remove('active');
  471.         });
  472.         getItem.parentNode.classList.add('active');
  473.         document.querySelector('.b43__galeria-main').src = getItem.src;
  474.     });
  475.     //descripciones
  476.     //especificaciones
  477.     const getList = document.querySelector('.especs_list');
  478.     const listItems = document.querySelectorAll('.especs_list li');
  479.     const listTable = document.querySelectorAll('.especs__table-list div');
  480.     getList.addEventListener('click', event => {
  481.         listItems.forEach(item => {
  482.             item.classList.remove('active');
  483.         });
  484.         event.target.classList.add('active');
  485.         const getItemId = event.target.dataset.id;
  486.         listTable.forEach(item => {
  487.             item.classList.remove('active');
  488.         });
  489.         const getTable = document.querySelector(`.especs__table-list div[data-id="${getItemId}"]`);
  490.         getTable.classList.add('active');
  491.     });
  492.     //especificaciones
  493.     //galeria
  494.     const galeria_swiper = new Swiper('.b45__swiper', {
  495.         loop: true,
  496.         slidesPerView: 1,
  497.         spaceBetween: 42,
  498.         slidesPerView: 'auto',
  499.         simulateTouch: true,
  500.         centeredSlides: true,
  501.         // Navigation arrows
  502.         navigation: {
  503.             nextEl: '.b45 .button-next',
  504.             prevEl: '.b45 .button-prev',
  505.         },
  506.     });
  507.     //galeria
  508.     // cotizar
  509.     // NOV 20222, Comprobando que existe el carrusel
  510.     if (document.querySelector('.b46__galeria')) {
  511.         const cotizar_swiper = new Swiper('.b46__swiper', {
  512.             loop: false,
  513.             slidesPerView: 'auto',
  514.             spaceBetween: 16,
  515.             scrollbar: {
  516.                 el: '.swiper-scrollbar',
  517.             },
  518.             navigation: {
  519.                 nextEl: '.b46 .button-next',
  520.                 prevEl: '.b46 .button-prev',
  521.             },
  522.             breakpoints: {
  523.                 581: {
  524.                     spaceBetween: 16,
  525.                     slidesPerView: 'auto',
  526.                 },
  527.                 0: {
  528.                     spaceBetween: 4,
  529.                     slidesPerView: 3,
  530.                 },
  531.             },
  532.         });
  533.         cotizar_swiper.on('click', function (e) {
  534.             const clickedSlideImg = e.clickedSlide.querySelector('img').src;
  535.             document.querySelector('.b46__galeria__main').src = clickedSlideImg;
  536.         });
  537.     }
  538.     // cambia y quita los campos base a tipo de usuario a llenar formulario
  539.     const empresa = document.querySelector('#empresa');
  540.     const natural = document.querySelector('#natural');
  541.     const empresaGroup = document.getElementById('empresaGroup');
  542.     const personaGroup = document.getElementById('personaGroup');
  543.     empresa.addEventListener('change', adjustableHeightCheck);
  544.     natural.addEventListener('change', adjustableHeightCheck);
  545.     $('#form_machine_docType').removeClass('validate[required]');
  546.     $('#form_machine_docNum').removeClass('validate[required, maxSize[15]]');
  547.     
  548.     function adjustableHeightCheck() {
  549.         if (!!document.getElementById('empresa').checked) {
  550.             $('#empresaGroup').css({'display' : 'flex'});
  551.             $('#personaGroup').css({'display' : 'none'});
  552.             $('#form_machine_ruc').addClass('validate[required, maxSize[15]]');
  553.             $('#form_machine_factory').addClass('validate[required, maxSize[125]]');
  554.             $('#form_machine_docType').removeClass('validate[required]');
  555.             $('#form_machine_docNum').removeClass('validate[required, maxSize[15]]');
  556.             $('#form_machine_isPerson').prop("checked", false);
  557.         } else {
  558.             $('#empresaGroup').css({'display' : 'none'});
  559.             $('#personaGroup').css({'display' : 'flex'});
  560.             $('#form_machine_ruc').removeClass('validate[required, maxSize[15]]');
  561.             $('#form_machine_factory').removeClass('validate[required, maxSize[125]]');
  562.             $('#form_machine_docType').addClass('validate[required]');
  563.             $('#form_machine_docNum').addClass('validate[required, maxSize[15]]');
  564.             $('#form_machine_isPerson').prop("checked", true);
  565.         }
  566.     }
  567.     // cambia y quita los campos base a tipo de usuario a llenar formulario
  568.     WidthChange(1024, () => {
  569.         const camion_swiper = new Swiper('.otros .swiper', {
  570.             loop: false,
  571.             slidesPerView: '2',
  572.             spaceBetween: 0,
  573.             navigation: {
  574.                 nextEl: '.otros .button-next',
  575.                 prevEl: '.otros .button-prev',
  576.             },
  577.         });
  578.     });
  579.     WidthChange(580, () => {
  580.         if (document.querySelector('.b46__galeria')) {
  581.             document
  582.                 .querySelector('.b46 .b46__galeria')
  583.                 .insertBefore(
  584.                     document.querySelector('.b45 h4'),
  585.                     document.querySelector('.b46 .b46__galeria').firstChild
  586.                 );
  587.         }
  588.         const tableList = document.querySelectorAll('.especs_list li');
  589.         tableList.forEach((item, index) => {
  590.             item.appendChild(document.querySelector(`.especs__table-list div[data-id="${index + 1}"]`));
  591.         });
  592.         // tuve que usar jquery aqui, perdon dios
  593.         $('.especs_list li').click(function (e) {
  594.             $(this).children('div').slideToggle(100);
  595.         });
  596.         $('.especs_list li')[0].click();
  597.     });
  598.     // cotizar
  599.     $(() => {
  600.         $('form').validationEngine('attach', {
  601.             promptPosition: 'bottomLeft',
  602.             autoHidePrompt: true,
  603.             autoPositionUpdate: false,
  604.             autoHideDelay: 3000,
  605.             addFailureCssClassToField: 'inputError',
  606.             binded: false,
  607.             scroll: false,
  608.             validateNonVisibleFields: true,
  609.             showOneMessage: false,
  610.         });
  611.     });
  612.     $('#sendFormMachine').on('click', function(event) {
  613.         event.preventDefault();
  614.         let btn = $(this);
  615.         let form = btn.closest('form');
  616.         btn.prop('disabled', true);
  617.         var valid = form.validationEngine('validate');
  618.         if (valid && validarRecaptcha()){
  619.             document.querySelector('.general_form').classList.add('submit_form')
  620.             form.submit();
  621.         } else {
  622.             btn.prop('disabled', false);
  623.             return false;
  624.         }
  625.         
  626.         
  627.     });
  628. </script>
  629. {% endblock %}