{% extends 'main.html.twig' %}
{% block head %}
<link rel="stylesheet" href="{{ asset('assets/css/tickets.css') }}?v={{ random() }}" />
<link rel="stylesheet" href="{{ asset('assets/plugins/range-slider/jquery-ui.css') }}?v={{ random() }}" type="text/css" media="all" />
<link rel="stylesheet" type="text/css" href="{{ asset('assets/plugins/range-slider/price_range_style.css') }}?v={{ random() }}" />
{% endblock %}
{% block body %}
<!-- HEADING -->
<div class="loading hidden">
<div class="loader"></div>
</div>
<div class="container" id="heading">
<div class="row d-flex justify-content-start marketplace-header-content ">
<div class="col-xl-6 col-12 py-5">
<p class="ttl-heading">Marketplace</p>
<p class="txt-heading">Explora NFT tickets históricos y en venta</p>
<div class="row d-flex justify-content-xl-start justify-content-center pt-5 px-xl-0 px-5 tickets-header-buttons">
<a href="#tickets" class="btn-md me-3 mt-3 btn-marketplace">Collections</a>
{# <a href="#keys" class="btn-md outline-white me-3 mt-3">masqueentradas keys</a>#}
</div>
</div>
</div>
</div>
<!-- COLLECTIONS -->
<div class="container-fluid bg-tickets-cards" id="tickets">
<div class="container py-xl-5 py-0">
<div class="row pb-xl-5 pb-3">
<p class="ttl-section">MQE Collections</p>
</div>
<!-- FILTERS -->
<form id="form-filters" action="{{ path('tickets') }}#tickets" method="get">
<div class="cnt-filter">
<div class="filter-text align-items-center justify-content-center cnt-filter-extra float-start">
<p><b>Filtrar</b></p>
</div>
<div class="filter-type align-items-center justify-content-start cnt-filter-tab float-start">
<select class="tab-filter mx-2 filters_change" name="type" id="filter_type">
<optgroup label="Tipo">
<option value="1" {{filters.type is defined and filters.type == "1" ? 'selected="selected"' : ''}}>Todos</option>
{#<option value="2" {{filters.type is defined and filters.type == "2" ? 'selected="selected"' : ''}}>Collection</option>#}
{# <option value="3" {{filters.type is defined and filters.type == "3" ? 'selected="selected"' : ''}}>Packs</option> #}
{# <option value="4" {{filters.type is defined and filters.type == "4" ? 'selected="selected"' : ''}}>Keys</option>#}
</optgroup>
<optgroup label="Eventos">
{% for event in events %}
{% if ("now"|date("Y-m-d") < event.dateEvent) %}
{% if (filters.eventId is defined and filters.eventId == event.id) %}
<option selected>
{{ event.name|title|raw }}
</option>
{% endif %}
<option value="5" data-event="{{ event.id }}" {{filters.type is defined and filters.type == event.id ? 'selected="selected"' : ''}}>
{{ event.name|title|raw }}
</option>
{% endif %}
{% endfor %}
</optgroup>
{# <optgroup label="Colección">
{% for event in events %}
{% if ("now"|date("Y-m-d") > event.dateEvent) %}
<option value="5" data-event="{{ event.id }}" {{filters.type is defined and filters.type == event.id ? 'selected="selected"' : ''}}>
{{ event.name|title }}
</option>
{% endif %}
{% endfor %}
</optgroup>#}
</select>
</div>
{# Price range #}
<div class="price-range-block float-start" >
<div class="sliderText">Rango de precios</div>
<div id="slider-range" class="price-filter-range" name="rangeInput"></div>
<div class="slider-range-buttons">
<button class="price-range-search" id="price-range-submit">Aplicar</button>
<button class="price-range-reset" id="price-range-reset">Restablecer</button>
</div>
<div class="slider-range-inputs">
<input type="number" min=0 max="9900" oninput="validity.valid||(value='0');" id="min_price" class="price-range-field" />
<input type="number" min=0 max="10000" oninput="validity.valid||(value='1000');" id="max_price" class="price-range-field" />
</div>
{#<div id="searchResults" class="search-results-block"></div>#}
</div>
<div class="filter-order align-items-end justify-content-center cnt-filter-extra float-end">
<select class="filters_change text-truncate" style="width: 250px;" name="order" id="filter_order">
<option class="select-item" selected disabled>Ordenar por</option>
<option class="select-item text-dark" value="1" {{filters.order is defined and filters.order == "1" ? 'selected="selected"' : ''}}>Precio: Menor a mayor</option>
<option class="select-item text-dark" value="2" {{filters.order is defined and filters.order == "2" ? 'selected="selected"' : ''}}>Precio: Mayor a menor</option>
</select>
</div>
</div>
</form>
<input type="hidden" id="page_next" value="">
<input type="hidden" id="page_total" value="">
<!-- TICKETS -->
<div class="row d-flex justify-content-center py-lg-5 py-2" id="box_tickets">
{% if filters.type is not defined or filters.type != 3 %}
{{ render(controller('App\\Controller\\TicketController::includeTickets',{request: app.request})) }}
{% else %}
{{ render(controller('App\\Controller\\PackController::includePacks',{request: app.request})) }}
{% endif %}
</div>
<div class="row py-4 d-flex align-items-center justify-content-center">
{#<div class="col-xl-1 col-6 d-flex justify-content-xl-start justify-content-center">
<p>Mostrando:</p>
</div>
<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">
<p class="blue">12
<span>
<img class="ms-2 arrow-blue" src="{{ asset('assets/images/icons/icn-arrow-down.svg') }}">
</span>
</p>
</div>#}
<div class="col-xl-2 col-12 d-flex justify-content-center">
<button class="btn-xl outline-dark" id="btn_load_more">cargar más</button>
<img id="loading_more" src="{{ asset('assets/images/icons/loading.gif') }}" style="display:none; height: 80px;">
</div>
</div>
</div>
</div>
{% block javascripts %}
<script src="{{ asset('assets/plugins/range-slider/jquery-ui.min.js') }}" type="text/javascript"></script>
<script type="text/javascript" src="{{ asset('assets/plugins/range-slider/jquery.ui.touch-punch.min.js') }}"></script>
<script src="{{ asset('assets/plugins/range-slider/price_range_script.js') }}?v={{ random() }}" type="text/javascript"></script>
<script src="{{ asset('assets/js/top-moments.js') }}?v={{ random() }}" type="text/javascript"></script>
<script>
// Collections scripts
$( document ).ready(function() {
const spinner = $('.loading');
{% if filters.eventId is defined %}
{% set url = path('include_tickets') %}
spinner.toggleClass('hidden');
fetch("{{ url }}?" + new URLSearchParams({
type: 5,
order: $("#filter_order").val(),
event: '{{ filters.eventId }}',
minPrice: $("#min_price").val(),
maxPrice: $("#max_price").val(),
saleuser: 1,
}), {
method: 'GET',
headers: {'Content-Type':'application/x-www-form-urlencoded'}
})
.then(function(response) {
return response.text();
})
.then(function(result) {
$("#box_tickets").html(result);
spinner.toggleClass('hidden');
})
.catch(function(error) {
console.error('Error:', error);
spinner.toggleClass('hidden');
swal({
title: "Error!",
text: "Ocurrió un error al intentar cargar más tickets",
type: "error"
});
});
{% endif %}
// Filters change
$(document).on('change', '.filters_change', function() {
// Loader
spinner.toggleClass('hidden');
{% if filters.type is not defined or filters.type != 3 %}
{% set url = path('include_tickets') %}
{% else %}
{% set url = path('include_packs') %}
{% endif %}
let $event = '';
if ($("#filter_type").val() == 5 || $("#filter_type").val() == 7) {
$event = $('option:selected', $("#filter_type")).attr('data-event');
}
changeSliderSettings(parseInt($("#filter_type").val()), $("#min_price"), $("#max_price"))
fetch("{{ url }}?" + new URLSearchParams({
type: $("#filter_type").val(),
order: $("#filter_order").val(),
event: $event,
minPrice: $("#min_price").val(),
maxPrice: $("#max_price").val(),
saleuser: 1,
}), {
method: 'GET',
headers: {'Content-Type':'application/x-www-form-urlencoded'}
})
.then(function(response) {
return response.text();
})
.then(function(result) {
$("#box_tickets").html(result);
spinner.toggleClass('hidden');
})
.catch(function(error) {
console.error('Error:', error);
spinner.toggleClass('hidden');
swal({
title: "Error!",
text: "Ocurrió un error al intentar cargar más tickets",
type: "error"
});
});
});
// Price Range apply
$(document).on('click', '.price-range-search', function(e) {
e.preventDefault();
// Loader
const spinner = $('.loading');
spinner.toggleClass('hidden');
{% if filters.type is not defined or filters.type != 3 %}
{% set url = path('include_tickets') %}
{% else %}
{% set url = path('include_packs') %}
{% endif %}
let $event = '';
if ($("#filter_type").val() == 5 || $("#filter_type").val() == 7) {
$event = $('option:selected', $("#filter_type")).attr('data-event');
}
fetch("{{ url }}?" + new URLSearchParams({
type: $("#filter_type").val(),
order: $("#filter_order").val(),
event: $event,
minPrice: $("#min_price").val(),
maxPrice: $("#max_price").val(),
saleuser: 1,
}), {
method: 'GET',
headers: {'Content-Type':'application/x-www-form-urlencoded'}
})
.then(function(response) {
return response.text();
})
.then(function(result) {
$("#box_tickets").html(result);
spinner.toggleClass('hidden');
})
.catch(function(error) {
console.error('Error:', error);
spinner.toggleClass('hidden');
swal({
title: "Error!",
text: "Ocurrió un error al intentar cargar más tickets",
type: "error"
});
});
});
// Price range reset
$(document).on('click', '.price-range-reset', function(e) {
e.preventDefault();
changeSliderSettings(0, $("#min_price"), $("#max_price"));
});
// Space top moments button
$('#space-top-moments-button').on('click', function(){
// Loader
const spinner = $('.loading');
spinner.toggleClass('hidden');
{% if filters.type is not defined or filters.type != 3 %}
{% set url = path('include_tickets') %}
{% else %}
{% set url = path('include_packs') %}
{% endif %}
changeSliderSettings(parseInt($("#filter_type").val()), $("#min_price"), $("#max_price"))
fetch("{{ url }}?" + new URLSearchParams({
type: 6,
order: $("#filter_order").val(),
minPrice: $("#min_price").val(),
maxPrice: $("#max_price").val(),
saleuser: 1,
}), {
method: 'GET',
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
})
.then(function (response) {
return response.text();
})
.then(function (result) {
$("#box_tickets").html(result);
$('#filter_type option[value="6"]').attr("selected",true);
spinner.toggleClass('hidden');
})
.catch(function (error) {
console.error('Error:', error);
spinner.toggleClass('hidden');
swal({
title: "Error!",
text: "Ocurrió un error al intentar cargar más tickets",
type: "error"
});
});
})
});
var load_more = document.getElementById('btn_load_more');
load_more.addEventListener('click', function() {
$("#btn_load_more").hide();
$("#loading_more").show();
{% if filters.type is not defined or filters.type != 3 %}
{% set url = path('include_tickets') %}
{% else %}
{% set url = path('include_packs') %}
{% endif %}
let $event = '';
if ($("#filter_type").val() == 5 || $("#filter_type").val() == 7) {
$event = $('option:selected', $("#filter_type")).attr('data-event');
}
fetch("{{ url }}?" + new URLSearchParams({
offset: $("#page_next").val(),
type: $("#filter_type").val(),
order: $("#filter_order").val(),
event: $event,
saleuser: 1,
}), {
method: 'GET',
headers: {'Content-Type':'application/x-www-form-urlencoded'}
})
.then(function(response) {
return response.text();
})
.then(function(result) {
$("#box_tickets").append(result);
$("#loading_more").hide();
$("#btn_load_more").show();
})
.catch(function(error) {
console.error('Error:', error);
swal({
title: "Error!",
text: "Ocurrió un error al intentar cargar más tickets",
type: "error"
});
$("#btn_load_more").show();
$("#loading_more").hide();
});
});
</script>
<script>
var acc = document.getElementsByClassName("accordion");
var i;
for (i = 0; i < acc.length; i++) {
acc[i].addEventListener("click", function() {
var panel = this.nextElementSibling;
var tab = this.parentNode;
if (panel.style.display === "none") {
panel.style.display = "block";
tab.style.boxShadow = "none";
} else {
panel.style.display = "none";
}
});
}
</script>
{% endblock %}
{% endblock %}