<div class="row justify-content-center mx-2 mx-md-4 my-4">
<div class="col-md-10 col-lg-8">
<div class="card shadow px-3">
{# <ul class="nav justify-content-center text-uppercase text-muted py-1">
<li class="nav-item">
<a class="nav-link active" id="search-tab1" data-toggle="tab" href="#tab1" role="tab" aria-controls="tab1" aria-selected="true">
Achat
</a>
</li>
<li class="nav-item">
<a class="nav-link" id="search-tab2" data-toggle="tab" href="#tab2" role="tab" aria-controls="tab2" aria-selected="false">
Location
</a>
</li>
<li class="nav-item">
<a class="nav-link" id="search-tab3" data-toggle="tab" href="#tab3" role="tab" aria-controls="tab3" aria-selected="false">
Gestion
</a>
</li>
</ul>#}
<div class="tab-content pt-3 text-center">
{# <div class="tab-pane fade show active" id="tab1" role="tabpanel" aria-labelledby="search-tab1">#}
{{ form_start(form, {'action': path('contracts')}) }}
<div class="row text-left">
<div class="col-md-4 py-1">
{{ form_row(form.category, {'attr': {'class': 'border-primary'}}) }}
</div>
<div class="col-md-4 py-1">
{{ form_row(form.location, {'attr': {'class': 'border-primary'}}) }}
</div>
<div class="col-md-4 py-1 slider-inputs">
<div class="mb-3">
{{ form_label(form.distance, '', {'class': 'mb-3'}) }}
</div>
<div class="px-2">
<div id="slider-range-distance"></div>
{{ form_widget(form.distance) }}
</div>
</div>
</div>
<div class="row text-left">
<div class="col-md-4 py-1">
<a class="f20-no-underline slider-collapse" data-toggle="collapse" href="#collapsePrice" role="button" aria-expanded="false" aria-controls="collapsePrice">
{{ form_label(form.minPrice) }} <span class="fas fa-fw fa-caret-right"></span>
</a>
<div class="collapse" id="collapsePrice">
<div class="px-2">
<div class="row slider-inputs">
<div class="col">{{ form_widget(form.minPrice) }}</div>
<div class="col">{{ form_widget(form.maxPrice) }}</div>
</div>
<div id="slider-range-price"></div>
</div>
</div>
</div>
<div class="col-md-4 py-1">
<a class="f20-no-underline slider-collapse" data-toggle="collapse" href="#collapseSpace" role="button" aria-expanded="false" aria-controls="collapseSpace">
{{ form_label(form.minSpace) }} <span class="fas fa-fw fa-caret-right"></span>
</a>
<div class="collapse" id="collapseSpace">
<div class="px-2">
<div class="row slider-inputs">
<div class="col">{{ form_widget(form.minSpace) }}</div>
<div class="col">{{ form_widget(form.maxSpace) }}</div>
</div>
<div id="slider-range-space"></div>
</div>
</div>
</div>
<div class="col-md-4 py-1">
<a class="f20-no-underline slider-collapse" data-toggle="collapse" href="#collapseRooms" role="button" aria-expanded="false" aria-controls="collapseRooms">
{{ form_label(form.minRooms) }} <span class="fas fa-fw fa-caret-right"></span>
</a>
<div class="collapse" id="collapseRooms">
<div class="px-2">
<div class="row slider-inputs">
<div class="col">{{ form_widget(form.minRooms) }}</div>
<div class="col">{{ form_widget(form.maxRooms) }}</div>
</div>
<div id="slider-range-rooms"></div>
</div>
</div>
</div>
</div>
<button type="submit" class="btn btn-primary text-uppercase p-3">
<span class="fas fa-search text-white"></span> Rechercher
</button>
{{ form_end(form) }}
{# </div>
<div class="tab-pane fade" id="tab2" role="tabpanel" aria-labelledby="search-tab2">
FORMULAIRE 2
</div>
<div class="tab-pane fade" id="tab3" role="tabpanel" aria-labelledby="search-tab3">
FORMULAIRE 3
</div>#}
</div>
</div>
</div>
</div>
<script>
let $sliderDistance = $('#slider-range-distance');
let $sliderPrice = $('#slider-range-price');
let $sliderSpace = $('#slider-range-space');
let $sliderRooms = $('#slider-range-rooms');
let $fieldDistance = $('#contract_estate_search_distance');
let $fieldMinPrice = $('#contract_estate_search_minPrice');
let $fieldMaxPrice = $('#contract_estate_search_maxPrice');
let $fieldMinSpace = $('#contract_estate_search_minSpace');
let $fieldMaxSpace = $('#contract_estate_search_maxSpace');
let $fieldMinRooms = $('#contract_estate_search_minRooms');
let $fieldMaxRooms = $('#contract_estate_search_maxRooms');
function getSliderFieldVal($field) {
return parseInt($field.val().replace(/[a-z €²+]*/g, ''));
}
function updateSliderDistance(event, ui) {
$fieldDistance.val(ui.value + ' km');
}
function updateSliderPrice(event, ui) {
$fieldMinPrice.val(new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR', minimumFractionDigits: 0 }).format(ui.values[0]));
$fieldMaxPrice.val(new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR', minimumFractionDigits: 0 }).format(ui.values[1]));
if (ui.values[1] === {{ constant('App\\Repository\\ContractRepository::MAX_PRICE') }}) {
$fieldMaxPrice.val('+ ' + $fieldMaxPrice.val());
}
}
function updateSliderSpace(event, ui) {
$fieldMinSpace.val(ui.values[0] + ' m²');
$fieldMaxSpace.val(ui.values[1] + ' m²');
if (ui.values[1] === {{ constant('App\\Repository\\ContractRepository::MAX_SPACE') }}) {
$fieldMaxSpace.val('+ ' + $fieldMaxSpace.val());
}
}
function updateSliderRooms(event, ui) {
$fieldMinRooms.val(ui.values[0] + ' p');
$fieldMaxRooms.val(ui.values[1] + ' p');
if (ui.values[1] === {{ constant('App\\Repository\\ContractRepository::MAX_ROOMS') }}) {
$fieldMaxRooms.val('+ ' + $fieldMaxRooms.val());
}
}
function initSlider($slider, $minField, $maxField) {
if (($minField.val() !== '' && getSliderFieldVal($minField) != $slider.slider('values', 0))
|| ($maxField.val() !== '' && getSliderFieldVal($maxField) != $slider.slider('values', 1))) {
$slider.closest('.collapse').parent().find('label').click();
}
if ($minField.val() === '') {
$minField.val($slider.slider('values', 0));
}
if ($maxField.val() === '') {
$maxField.val($slider.slider('values', 1));
}
$slider.slider('values', [getSliderFieldVal($minField), getSliderFieldVal($maxField)]);
}
$(document).ready(function () {
autocompleteSimple($('#contract_estate_search_location'), '{{ path('xhr_autocomplete_class', {'sClass': 'RefTown', 'sField': 'FullName'}) }}', function (event, ui) {
var aParts = ui.item.value.split(' - ');
var $aCodes = aParts[0].split('-');
$(event.target).val($aCodes[0] + ' - ' + aParts[1]);
return false;
});
$('.slider-collapse').on('click', function () {
$(this).find('svg').toggleClass('fa-caret-down fa-caret-right');
});
$sliderDistance.slider({
range: 'min',
min: 0,
max: {{ constant('App\\Repository\\ContractRepository::MAX_DISTANCE') }},
step: 5,
value: 25,
slide: updateSliderDistance,
change: updateSliderDistance
});
if ($fieldDistance.val() === '') {
$fieldDistance.val($sliderDistance.slider('value'));
}
$sliderDistance.slider('value', getSliderFieldVal($fieldDistance));
$sliderPrice.slider({
range: true,
min: 0,
max: {{ constant('App\\Repository\\ContractRepository::MAX_PRICE') }},
step: 10000,
values: [0, {{ constant('App\\Repository\\ContractRepository::MAX_PRICE') }}],
slide: updateSliderPrice,
change: updateSliderPrice
});
initSlider($sliderPrice, $fieldMinPrice, $fieldMaxPrice);
$sliderSpace.slider({
range: true,
min: 0,
max: {{ constant('App\\Repository\\ContractRepository::MAX_SPACE') }},
step: 10,
values: [0, {{ constant('App\\Repository\\ContractRepository::MAX_SPACE') }}],
slide: updateSliderSpace,
change: updateSliderSpace,
});
initSlider($sliderSpace, $fieldMinSpace, $fieldMaxSpace);
$sliderRooms.slider({
range: true,
min: 1,
max: {{ constant('App\\Repository\\ContractRepository::MAX_ROOMS') }},
step: 1,
values: [0, {{ constant('App\\Repository\\ContractRepository::MAX_ROOMS') }}],
slide: updateSliderRooms,
change: updateSliderRooms,
});
initSlider($sliderRooms, $fieldMinRooms, $fieldMaxRooms);
});
</script>