templates/tickets/tickets.html.twig line 1

Open in your IDE?
  1. {% extends 'main.html.twig' %}
  2. {% block head %}
  3.     <link rel="stylesheet" href="{{ asset('assets/css/tickets.css') }}?v={{ random() }}" />
  4.     <link rel="stylesheet" href="{{ asset('assets/plugins/range-slider/jquery-ui.css') }}?v={{ random() }}" type="text/css" media="all" />
  5.     <link rel="stylesheet" type="text/css" href="{{ asset('assets/plugins/range-slider/price_range_style.css') }}?v={{ random() }}" />
  6. {% endblock %}
  7. {% block body %}
  8.     <!-- HEADING -->
  9.     <div class="loading hidden">
  10.         <div class="loader"></div>
  11.     </div>
  12.     <div class="container" id="heading">
  13.         <div class="row d-flex justify-content-start marketplace-header-content ">
  14.             <div class="col-xl-6 col-12 py-5">
  15.                 <p class="ttl-heading">Marketplace</p>
  16.                 <p class="txt-heading">Explora NFT tickets históricos y en venta</p>
  17.                 <div class="row d-flex justify-content-xl-start justify-content-center pt-5 px-xl-0 px-5 tickets-header-buttons">
  18.                     <a href="#tickets" class="btn-md me-3 mt-3 btn-marketplace">Collections</a>
  19.                    {# <a href="#keys" class="btn-md outline-white me-3 mt-3">masqueentradas keys</a>#}
  20.                 </div>
  21.             </div>
  22.         </div>
  23.     </div>
  24.     <!-- COLLECTIONS -->
  25.     <div class="container-fluid bg-tickets-cards" id="tickets">
  26.         <div class="container py-xl-5 py-0">
  27.             <div class="row pb-xl-5 pb-3">
  28.                 <p class="ttl-section">MQE Collections</p>
  29.             </div>
  30.             <!-- FILTERS -->
  31.             <form id="form-filters" action="{{ path('tickets') }}#tickets" method="get">
  32.                 <div class="cnt-filter">
  33.                     <div class="filter-text align-items-center justify-content-center cnt-filter-extra float-start">
  34.                         <p><b>Filtrar</b></p>
  35.                     </div>
  36.                     <div class="filter-type align-items-center justify-content-start cnt-filter-tab float-start">
  37.                         <select class="tab-filter mx-2 filters_change"  name="type" id="filter_type">
  38.                             <optgroup label="Tipo">
  39.                                 <option value="1" {{filters.type is defined and filters.type == "1" ? 'selected="selected"' : ''}}>Todos</option>
  40.                                 {#<option value="2" {{filters.type is defined and filters.type == "2" ? 'selected="selected"' : ''}}>Collection</option>#}
  41.                                 {# <option value="3" {{filters.type is defined and filters.type == "3" ? 'selected="selected"' : ''}}>Packs</option> #}
  42.                                {# <option value="4" {{filters.type is defined and filters.type == "4" ? 'selected="selected"' : ''}}>Keys</option>#}
  43.                             </optgroup>
  44.                             <optgroup label="Eventos">
  45.                                 {% for event in events %}
  46.                                     {% if ("now"|date("Y-m-d") < event.dateEvent) %}
  47.                                         {% if (filters.eventId is defined and filters.eventId == event.id) %}
  48.                                             <option selected>
  49.                                                 {{ event.name|title|raw }}
  50.                                             </option>
  51.                                         {% endif %}
  52.                                         <option value="5" data-event="{{ event.id }}" {{filters.type is defined and filters.type == event.id ? 'selected="selected"' : ''}}>
  53.                                             {{ event.name|title|raw }}
  54.                                         </option>
  55.                                     {% endif %}
  56.                                 {% endfor %}
  57.                             </optgroup>
  58.                            {# <optgroup label="Colección">
  59.                             {% for event in events %}
  60.                                 {% if ("now"|date("Y-m-d") > event.dateEvent) %}
  61.                                     <option value="5" data-event="{{ event.id }}" {{filters.type is defined and filters.type == event.id ? 'selected="selected"' : ''}}>
  62.                                         {{ event.name|title }}
  63.                                     </option>
  64.                                 {% endif %}
  65.                             {% endfor %}
  66.                             </optgroup>#}
  67.                         </select>
  68.                     </div>
  69.                     {# Price range #}
  70.                     <div class="price-range-block float-start" >
  71.                         <div class="sliderText">Rango de precios</div>
  72.                         <div id="slider-range" class="price-filter-range" name="rangeInput"></div>
  73.                         <div class="slider-range-buttons">
  74.                             <button class="price-range-search" id="price-range-submit">Aplicar</button>
  75.                             <button class="price-range-reset" id="price-range-reset">Restablecer</button>
  76.                         </div>
  77.                         <div class="slider-range-inputs">
  78.                             <input type="number" min=0 max="9900" oninput="validity.valid||(value='0');" id="min_price" class="price-range-field" />
  79.                             <input type="number" min=0 max="10000" oninput="validity.valid||(value='1000');" id="max_price" class="price-range-field" />
  80.                         </div>
  81.                         {#<div id="searchResults" class="search-results-block"></div>#}
  82.                     </div>
  83.                     <div class="filter-order align-items-end justify-content-center cnt-filter-extra float-end">
  84.                         <select class="filters_change text-truncate" style="width: 250px;" name="order" id="filter_order">
  85.                             <option class="select-item" selected disabled>Ordenar por</option>
  86.                             <option class="select-item text-dark" value="1" {{filters.order is defined and filters.order == "1" ? 'selected="selected"' : ''}}>Precio: Menor a mayor</option>
  87.                             <option class="select-item text-dark" value="2" {{filters.order is defined and filters.order == "2" ? 'selected="selected"' : ''}}>Precio: Mayor a menor</option>
  88.                         </select>
  89.                     </div>
  90.                 </div>
  91.             </form>
  92.             <input type="hidden" id="page_next" value="">
  93.             <input type="hidden" id="page_total" value="">
  94.             <!-- TICKETS -->
  95.             <div class="row d-flex justify-content-center py-lg-5 py-2" id="box_tickets">
  96.                 {% if filters.type is not defined or filters.type != 3 %}
  97.                     {{ render(controller('App\\Controller\\TicketController::includeTickets',{request: app.request})) }}
  98.                 {% else %}
  99.                     {{ render(controller('App\\Controller\\PackController::includePacks',{request: app.request})) }}
  100.                 {% endif %}
  101.             </div>
  102.             <div class="row py-4 d-flex align-items-center justify-content-center">
  103.                 {#<div class="col-xl-1 col-6 d-flex justify-content-xl-start justify-content-center">
  104.                     <p>Mostrando:</p>
  105.                 </div>
  106.                 <div class="col-xl-2 col-6 ms-xl-5 ms-2 py-xl-0 pb-4 d-flex justify-content-xl-start justify-content-center">
  107.                     <p class="blue">12
  108.                         <span>
  109.                             <img class="ms-2 arrow-blue" src="{{ asset('assets/images/icons/icn-arrow-down.svg') }}">
  110.                         </span>
  111.                     </p>
  112.                 </div>#}
  113.                 <div class="col-xl-2 col-12 d-flex justify-content-center">
  114.                     <button class="btn-xl outline-dark" id="btn_load_more">cargar más</button>
  115.                     <img id="loading_more" src="{{ asset('assets/images/icons/loading.gif') }}" style="display:none; height: 80px;">
  116.                 </div>
  117.             </div>
  118.         </div>
  119.     </div>
  120.     {% block javascripts %}
  121.         <script src="{{ asset('assets/plugins/range-slider/jquery-ui.min.js') }}" type="text/javascript"></script>
  122.         <script type="text/javascript" src="{{ asset('assets/plugins/range-slider/jquery.ui.touch-punch.min.js') }}"></script>
  123.         <script src="{{ asset('assets/plugins/range-slider/price_range_script.js') }}?v={{ random() }}" type="text/javascript"></script>
  124.         <script src="{{ asset('assets/js/top-moments.js') }}?v={{ random() }}" type="text/javascript"></script>
  125.         <script>
  126.             // Collections scripts
  127.             $( document ).ready(function() {
  128.                 const spinner = $('.loading');
  129.                 {% if filters.eventId is defined %}
  130.                     {% set url = path('include_tickets') %}
  131.                     spinner.toggleClass('hidden');
  132.                     fetch("{{ url }}?" + new URLSearchParams({
  133.                         type: 5,
  134.                         order: $("#filter_order").val(),
  135.                         event: '{{ filters.eventId }}',
  136.                         minPrice: $("#min_price").val(),
  137.                         maxPrice: $("#max_price").val(),
  138.                         saleuser: 1,
  139.                     }), {
  140.                         method: 'GET',
  141.                         headers: {'Content-Type':'application/x-www-form-urlencoded'}
  142.                     })
  143.                         .then(function(response) {
  144.                             return response.text();
  145.                         })
  146.                         .then(function(result) {
  147.                             $("#box_tickets").html(result);
  148.                             spinner.toggleClass('hidden');
  149.                         })
  150.                         .catch(function(error) {
  151.                             console.error('Error:', error);
  152.                             spinner.toggleClass('hidden');
  153.                             swal({
  154.                                 title: "Error!",
  155.                                 text: "Ocurrió un error al intentar cargar más tickets",
  156.                                 type: "error"
  157.                             });
  158.                         });
  159.                 {% endif %}
  160.                 // Filters change
  161.                 $(document).on('change', '.filters_change', function() {
  162.                     // Loader
  163.                     spinner.toggleClass('hidden');
  164.                     {% if filters.type is not defined or filters.type != 3 %}
  165.                         {% set url = path('include_tickets') %}
  166.                     {% else %}
  167.                         {% set url = path('include_packs') %}
  168.                     {% endif %}
  169.                     let $event = '';
  170.                     if ($("#filter_type").val() == 5 || $("#filter_type").val() == 7) {
  171.                         $event = $('option:selected', $("#filter_type")).attr('data-event');
  172.                     }
  173.                     changeSliderSettings(parseInt($("#filter_type").val()), $("#min_price"), $("#max_price"))
  174.                     fetch("{{ url }}?" + new URLSearchParams({
  175.                         type: $("#filter_type").val(),
  176.                         order: $("#filter_order").val(),
  177.                         event: $event,
  178.                         minPrice: $("#min_price").val(),
  179.                         maxPrice: $("#max_price").val(),
  180.                         saleuser: 1,
  181.                     }), {
  182.                         method: 'GET',
  183.                         headers: {'Content-Type':'application/x-www-form-urlencoded'}
  184.                     })
  185.                         .then(function(response) {
  186.                             return response.text();
  187.                         })
  188.                         .then(function(result) {
  189.                             $("#box_tickets").html(result);
  190.                             spinner.toggleClass('hidden');
  191.                         })
  192.                         .catch(function(error) {
  193.                             console.error('Error:', error);
  194.                             spinner.toggleClass('hidden');
  195.                             swal({
  196.                                 title: "Error!",
  197.                                 text: "Ocurrió un error al intentar cargar más tickets",
  198.                                 type: "error"
  199.                             });
  200.                         });
  201.                 });
  202.                 // Price Range apply
  203.                 $(document).on('click', '.price-range-search', function(e) {
  204.                     e.preventDefault();
  205.                     // Loader
  206.                     const spinner = $('.loading');
  207.                     spinner.toggleClass('hidden');
  208.                     {% if filters.type is not defined or filters.type != 3 %}
  209.                     {% set url = path('include_tickets') %}
  210.                     {% else %}
  211.                     {% set url = path('include_packs') %}
  212.                     {% endif %}
  213.                     let $event = '';
  214.                     if ($("#filter_type").val() == 5 || $("#filter_type").val() == 7) {
  215.                         $event = $('option:selected', $("#filter_type")).attr('data-event');
  216.                     }
  217.                     fetch("{{ url }}?" + new URLSearchParams({
  218.                         type: $("#filter_type").val(),
  219.                         order: $("#filter_order").val(),
  220.                         event: $event,
  221.                         minPrice: $("#min_price").val(),
  222.                         maxPrice: $("#max_price").val(),
  223.                         saleuser: 1,
  224.                     }), {
  225.                         method: 'GET',
  226.                         headers: {'Content-Type':'application/x-www-form-urlencoded'}
  227.                     })
  228.                         .then(function(response) {
  229.                             return response.text();
  230.                         })
  231.                         .then(function(result) {
  232.                             $("#box_tickets").html(result);
  233.                             spinner.toggleClass('hidden');
  234.                         })
  235.                         .catch(function(error) {
  236.                             console.error('Error:', error);
  237.                             spinner.toggleClass('hidden');
  238.                             swal({
  239.                                 title: "Error!",
  240.                                 text: "Ocurrió un error al intentar cargar más tickets",
  241.                                 type: "error"
  242.                             });
  243.                         });
  244.                 });
  245.                 // Price range reset
  246.                 $(document).on('click', '.price-range-reset', function(e) {
  247.                     e.preventDefault();
  248.                     changeSliderSettings(0, $("#min_price"), $("#max_price"));
  249.                 });
  250.                 // Space top moments button
  251.                 $('#space-top-moments-button').on('click', function(){
  252.                     // Loader
  253.                     const spinner = $('.loading');
  254.                     spinner.toggleClass('hidden');
  255.                     {% if filters.type is not defined or filters.type != 3 %}
  256.                         {% set url = path('include_tickets') %}
  257.                     {% else %}
  258.                         {% set url = path('include_packs') %}
  259.                     {% endif %}
  260.                     changeSliderSettings(parseInt($("#filter_type").val()), $("#min_price"), $("#max_price"))
  261.                     fetch("{{ url }}?" + new URLSearchParams({
  262.                         type: 6,
  263.                         order: $("#filter_order").val(),
  264.                         minPrice: $("#min_price").val(),
  265.                         maxPrice: $("#max_price").val(),
  266.                         saleuser: 1,
  267.                     }), {
  268.                         method: 'GET',
  269.                         headers: {'Content-Type': 'application/x-www-form-urlencoded'}
  270.                     })
  271.                         .then(function (response) {
  272.                             return response.text();
  273.                         })
  274.                         .then(function (result) {
  275.                             $("#box_tickets").html(result);
  276.                             $('#filter_type option[value="6"]').attr("selected",true);
  277.                             spinner.toggleClass('hidden');
  278.                         })
  279.                         .catch(function (error) {
  280.                             console.error('Error:', error);
  281.                             spinner.toggleClass('hidden');
  282.                             swal({
  283.                                 title: "Error!",
  284.                                 text: "Ocurrió un error al intentar cargar más tickets",
  285.                                 type: "error"
  286.                             });
  287.                         });
  288.                 })
  289.             });
  290.             var load_more = document.getElementById('btn_load_more');
  291.             
  292.             load_more.addEventListener('click', function() {
  293.                 $("#btn_load_more").hide();
  294.                 $("#loading_more").show();
  295.                 {% if filters.type is not defined or filters.type != 3 %}
  296.                     {% set url = path('include_tickets') %}
  297.                 {% else %}
  298.                     {% set url = path('include_packs') %}
  299.                 {% endif %}
  300.                 let $event = '';
  301.                 if ($("#filter_type").val() == 5 || $("#filter_type").val() == 7) {
  302.                     $event = $('option:selected', $("#filter_type")).attr('data-event');
  303.                 }
  304.                 fetch("{{ url }}?" + new URLSearchParams({
  305.                     offset: $("#page_next").val(),
  306.                     type: $("#filter_type").val(),
  307.                     order: $("#filter_order").val(),
  308.                     event: $event,
  309.                     saleuser: 1,
  310.                 }), {
  311.                     method: 'GET',
  312.                     headers: {'Content-Type':'application/x-www-form-urlencoded'}
  313.                 })
  314.                 .then(function(response) {
  315.                     return response.text();
  316.                 })
  317.                 .then(function(result) {
  318.                     $("#box_tickets").append(result);
  319.                     $("#loading_more").hide();
  320.                     $("#btn_load_more").show();
  321.                 })
  322.                 .catch(function(error) {
  323.                     console.error('Error:', error);
  324.                     swal({
  325.                         title: "Error!",
  326.                         text: "Ocurrió un error al intentar cargar más tickets",
  327.                         type: "error"
  328.                     });
  329.                     
  330.                     $("#btn_load_more").show();
  331.                     
  332.                     $("#loading_more").hide();
  333.                 });
  334.             });
  335.         </script>
  336.         <script>
  337.             var acc = document.getElementsByClassName("accordion");
  338.             var i;
  339.  
  340.             for (i = 0; i < acc.length; i++) {
  341.                 acc[i].addEventListener("click", function() {
  342.  
  343.                     var panel = this.nextElementSibling;
  344.                     var tab = this.parentNode;
  345.  
  346.                     if (panel.style.display === "none") {
  347.                         panel.style.display = "block";
  348.                         tab.style.boxShadow = "none";
  349.                     } else {
  350.                         panel.style.display = "none";
  351.                     }
  352.                 });
  353.             }
  354.         </script>
  355.     {% endblock %}
  356. {% endblock %}