{% extends 'base.html.twig' %}
{% block stylesheets %}
<link rel="stylesheet" type="text/css" href="{{ asset('front/style/single_listing_style.css') }}">
<link rel="stylesheet" type="text/css" href="{{ asset('front/style/single_listing_responsive.css') }}">
<link rel="stylesheet" type="text/css" href="{{ asset('front/style/blog_style.css') }}">
<link rel="stylesheet" type="text/css" href="{{ asset('front/style/blog_responsive.css') }}">
<link href="{{ asset('front/searchbar/vendor/mdi-font/css/material-design-iconic-font.min.css') }}" rel="stylesheet" media="all">
<link href="{{ asset('front/searchbar/vendor/font-awesome-4.7/css/font-awesome.min.css') }}" rel="stylesheet" media="all">
<!-- Font special for pages-->
<link href="https://fonts.googleapis.com/css?family=Roboto:100,100i,300,300i,400,400i,500,500i,700,700i,900,900i" rel="stylesheet">
<!-- Vendor CSS-->
<link href="{{ asset('front/searchbar/vendor/select2/select2.min.css') }}" rel="stylesheet" media="all">
<link href="{{ asset('front/searchbar/vendor/datepicker/daterangepicker.css') }}" rel="stylesheet" media="all">
<!-- Main CSS-->
<link href="{{ asset('front/searchbar/css/main.css') }}" rel="stylesheet" media="all">
<!-- Modal Css -->
<link rel="stylesheet" href="{{ asset('front/modals/fonts/icomoon/stylecommons.css') }}">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="{{ asset('front/modals/css/bootstrapcss.min.css') }}">
<!-- Style -->
{# <link rel="stylesheet" href="{{ asset('front/modals/css/stylemodals.css') }}">#}
<style>
.carousel {
position: relative;
}
.carousel-item img {
object-fit: cover;
}
#carousel-thumbs {
background: rgba(255,255,255,.3);
bottom: 0;
left: 0;
padding: 0 50px;
right: 0;
}
#carousel-thumbs img {
border: 5px solid transparent;
cursor: pointer;
}
#carousel-thumbs img:hover {
border-color: rgba(255,255,255,.3);
}
#carousel-thumbs .selected img {
border-color: #fff;
}
.carousel-control-prev,
.carousel-control-next {
width: 50px;
}
@media all and (max-width: 767px) {
.carousel-container #carousel-thumbs img {
border-width: 3px;
}
.blog {
padding-top: 30px;
padding-bottom: 0px;
}
.modal-title
{
font-size:15px!important;
}
}
@media all and (min-width: 576px) {
.carousel-container #carousel-thumbs {
position: absolute;
}
}
@media all and (max-width: 576px) {
.carousel-container #carousel-thumbs {
background: #ccccce;
}
}
.btn-submit {
font-size: 16px;
font-weight: 500;
border: 1px solid black;
background: #FFFFFF;
color: black;
margin-bottom: 10px;
max-width:335px;
}
/* Media Queries */
@media screen and (max-width: 768px) {
.input-group {
min-width:300px;
max-width: none;
}
.btn-submit{
min-width:300px;
margin-left:16px;
}
.modal-content{
width: 85%;
margin-top: 131px;
margin-left: 13px!important;
}
.hotel_info_text{
min-width:340px;
}
.input--medium1{
display:none
}
.table-responsive {
min-width:300px;
}
table.table {
width: 100%;
margin-bottom: 1rem;
background-color: transparent;
display: grid;
grid-template-columns: 1fr 1fr; /* Deux colonnes égales */
align-items: stretch; /* Les colonnes ont la même hauteur */
}
/* Place l'en-tête dans la première colonne */
table.table thead {
grid-column: 1 / 2; /* Colonne 1 */
}
/* Place les données dans la deuxième colonne */
table.table tbody {
grid-column: 2 / 3; /* Colonne 2 */
}
/* Réinitialise la mise en page des éléments dans les colonnes */
table.table thead th,
table.table tbody td {
display: block;
text-align: left;
height:60px;
}
.select1{
height: 40px;
width: 100%;
}
.select2{
height: 40px;
width: 100%;
}
}
.main_nav_item a {
font-family: 'Open Sans', sans-serif;
font-size: 15px;
font-weight: 700;
color: #FFFFFF;
text-transform: uppercase;
padding-bottom: 10px;
padding-top: 10px;
}
.main_nav_item::after {
display: block;
position: absolute;
left: -1px;
bottom: -11px;
width: calc(100% + 2px);
height: 2px;
background: linear-gradient(to right, #b29b63, #0093a9)!important;
content: '';
opacity: 0;
-webkit-transition: all 200ms ease;
-moz-transition: all 200ms ease;
-ms-transition: all 200ms ease;
-o-transition: all 200ms ease;
transition: all 200ms ease;
}
.container {
max-width: 1440px;
}
.p-t-395 {
padding-top: 40px;
margin-right: 350px;
}
.modal-content {
position: relative;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
width: 100%;
pointer-events: auto;
background-color: transparent!important;
background-clip: padding-box;
border: none;
border-radius: 0.3rem;
outline: 0;
}
.rooms {
margin-top: 35px;
}
.hidden {
display: none;
}
</style>
{% endblock %}
{% block body %}
<div class="home" style="height: 130px"></div>
{# <div class="super_container">
<!-- Header -->
<header class="header" style="background-color: #ffffff">
<nav class="main_nav"style="height: 96px">
<div class="container" style="top: -20px">
<div class="row">
<div class="col main_nav_col d-flex flex-row align-items-center justify-content-start">
<div class="main_nav_container ml-auto" style="margin-right: 1110px;top: 29px;">
<ul class="main_nav_list">
<li class="main_nav_item"><a href="#photos">Photos</a></li>
<li class="main_nav_item"><a href="#dernier-titre">Description</a></li>
<li class="main_nav_item"><a href="#tarifs">Tarifs</a></li>
</ul>
</div>
</div>
</div>
</div>
</nav>
</header>
</div> #}
<!-- Blog -->
<div class="blog">
<div class="container">
<div class="hotel_title_container d-flex flex-lg-row flex-column">
<div class="hotel_title_content">
<h1 class="hotel_title" style="color: #0093a9;font-size: 34px;font-weight: 700">{{ hotels.name }}</h1>
<div class="rating_r rating_r_4 hotel_rating">
{% for i in 1..hotels.star %}
<img src="{{asset('front/images/etoil.png')}}" class="" alt="...">
{% endfor %}
</div>
</div>
</div>
<div class="row">
<div class="col-lg-8">
<div class="blog_post_container">
<div class="hotel_title_container d-flex flex-lg-row flex-column">
<div class="hotel_title_content">
<h1 class="hotel_title"></h1>
<div class="hotel_location" style="color: #0093a9"></div>
</div>
</div>
<div class="blog_post" id="photos">
<div class="blog_post_image" >
<div class="container mt-5">
<div class="carousel-container position-relative row">
<div id="myCarousel" class="carousel slide" data-ride="carousel">
<div class="carousel-inner">
{% for img in hotels.imageshotels %}
<div class="carousel-item {{ loop.first ? 'active' }}">
<img src="{{ asset('./rusticav/public/uploads/hotels/'~img.name) }}" class="d-block w-100 img-fluid" alt="..." style="height:448px;width: 750px!important;" data-type="image" data-toggle="lightbox" data-gallery="example-gallery">
</div>
{% endfor %}
</div>
</div>
<!-- Carousel Navigation -->
<div id="carousel-thumbs" class="carousel slide" data-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active">
<div class="row mx-0" style="display:flex;justify-content: center;align-items: center;">
{% for img in hotels.imageshotels %}
<div id="carousel-selector-{{ loop.index0 }}" class="thumb col-4 col-sm-2 px-1 py-2 selected" data-target="#myCarousel" data-slide-to="{{ loop.index0 }}">
<img src="{{ asset('./rusticav/public/uploads/hotels/'~img.name) }}" style="width: 100px; height: 65px" class="img-fluid" alt="...">
</div>
{% endfor %}
</div>
</div>
</div>
<a class="carousel-control-prev" href="#carousel-thumbs" role="button" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="carousel-control-next" href="#carousel-thumbs" role="button" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div>
</div> <!-- /row -->
</div> <!-- /container -->
</div>
</div>
</div>
</div>
</div>
<div class="hotel_info_tags"id="tarifs">
<ul class="hotel_icons_list">
<li class="hotel_icons_item"><img src="{{ asset('front/images/post.png') }}" alt=""></li>
<li class="hotel_icons_item"><img src="{{ asset('front/images/compass.png') }}" alt=""></li>
<li class="hotel_icons_item"><img src="{{ asset('front/images/bicycle.png') }}" alt=""></li>
<li class="hotel_icons_item"><img src="{{ asset('front/images/sailboat.png') }}" alt=""></li>
</ul>
</div>
<!-- Dates & Tarifs -->
<div class="reviews">
<div class="reviews_title">Dates & Tarifs</div>
</div>
<div class="page-wrapper bg-color-1 p-t-395 p-b-120" style="background: white">
<div class="wrapper wrapper--w1070">
<div class="filter">
<div class="card card-7" style="border: none">
<div class="card-body">
{{ form_start(form) }}
<div class="input-group input--medium" style="width: 230px;line-height: 17px;border: 1px solid black">
<label class="label" style="color: black;font-weight: 500">Départ</label>
{{ form_widget(form.dateDepart,{'attr':{'class':'input--style-1'}}) }}
</div>
<div class="input-group input--medium" style="width: 230px;line-height: 17px;border: 1px solid black">
<label class="label" style="color: black;font-weight: 500">Arrivé</label>
{{ form_widget(form.dateArrive,{'attr':{'class':'input--style-1'}}) }}
</div>
<div class="input-group input--medium1" style="width: 98px;line-height: 17px;border: 1px solid black">
<label class="label" style="color: black;font-weight: 500">Nuitée</label>
{{ form_widget(form.nombreNuits,{'attr':{'class':'input--style-1'}}) }}
</div>
<div class="row row-space">
<button type="button" class="btn-submit" data-toggle="modal" data-target="#roomModal" style="font-size: 16px;font-weight: 500;border: 1px solid black;background: #FFFFFF;color: black">
Ajouter une chambre
</button>
<!-- Modal -->
<div class="modal fade" id="roomModal" tabindex="-1" role="dialog" aria-labelledby="roomModalLabel" aria-hidden="true">
<span class="modal-dialog modal-dialog-centered" role="document">
<span class="modal-content rounded-0">
<span class="modal-content" style="width: 85%;margin-top: 131px;margin-left: 233px;">
<span class="modal-body bg-3">
<div class="modal-header" style="border-bottom: none">
<h5 class="modal-title" id="roomModalLabel" style="color: #0093a9;font-size: 22px;margin-left: -30px;font-weight: 700">Chambre et Occupation</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<ul class="rooms" data-prototype="{{ form_widget(form.rooms.vars.prototype, {'attr': {'style': 'display:contents;color:black;font-size:18px'}})|e }}">
<div style="display: contents">
{% for roomForm in form.rooms %}
<li class="row room-item">
<span>
<label class="input--style-1" style="color: black">Adultes</label>
{{ form_widget(roomForm.nbadultes, {'attr': {'class': 'input--style-1', 'style': 'border:1px solid black'}}) }}
</span>
<span style="margin-right: 10px;"></span>
<span>
<label class="input--style-1" style="color: black">Enfants</label>
{{ form_widget(roomForm.nbfnfants, {'attr': {'class': 'input--style-1', 'style': 'border:1px solid black'}}) }}
</span>
<span style="margin-right: 10px;"></span>
<span>
<label class="input--style-1" style="color: black">Age</label>
{{ form_row(roomForm.age, {'attr': {'class': 'input--style-1', 'style': 'border:1px solid black'}}) }}
</span>
</li>
{% endfor %}
</div>
</ul>
<div class="modal-footer">
<button type="button" class="btn btn-primary" id="saveButtonModal" style="color: #FFFFFF;background:#ff9100 ">Valider</button>
</div>
</span>
</span>
</span>
</span>
</div>
<button class="btn-submit"type="submit" style="width: 209px;line-height: 91px;font-weight: 500;border: 1px solid black;background: #0093a9;color: #FFFFFF">Voir disponibilité</button>
</div>
{{ form_end(form) }}
</div>
</div>
</div>
</div>
<div class="container" id="dernier-titre">
<div class="table-responsive custom-table-responsive">
{% if results %}
{% for result in results %}
<table class="table table-bordered">
{% if result.chambre is not null %}
<thead>
<tr>
<th>Type de chambre</th>
<th>Occupation</th>
<th>Type de pension</th>
<th>Total</th>
</tr>
</thead>
{% endif %}
<tbody>
{% if result is not null %}
{% if result.chambre is not null %}
{% set somme = result.nbadultes + result.nbfnfants %}
<tr scope="row">
<td>
<form id="chambre-form-{{ loop.index }}" >
<select name="roomName[]" id="chambre-select-{{ loop.index }}" class="select1">
<option value="">Sélectionner</option>
{% for cp in result.chambre.pricerooms %}
{% if cp.hotelroom.chambre.capacity == somme %}
<option data-value="{{ cp.hotelroom.chambre.name }}" data-prix="{{ cp.price }}">{{ cp.hotelroom.chambre.name }}</option>
{% endif %}
{% endfor %}
</select>
</form>
</td>
<td>
{% for i in 1..result.nbadultes %}
<i class="fa fa-male" aria-hidden="true"></i>
{% endfor %}
{% if result.nbfnfants > 0 %}
{% for i in 1..result.nbfnfants %}
<i class="fa fa-child" aria-hidden="true"></i>
{% endfor %}
{% endif %}
</td>
<td>
<form id="arrangement-form-{{ loop.index }}">
<select name="arrangement[]" id="arrangement-select-{{ loop.index }}" class="select2">
<option value="">Sélectionner</option>
{% for ar in result.chambre.pricearrangements %}
<option value="{{ ar.hotelarrangement.arrangement.name }}" data-prix="{{ ar.price }}">{{ ar.hotelarrangement.arrangement.name }}</option>
{% endfor %}
</select>
</form>
</td>
<td>
<span class="prix-total" data-index="{{ loop.index }}">0</span> TND
</td>
</tr>
<script>
const chambreSelect{{ loop.index }} = document.getElementById('chambre-select-{{ loop.index }}');
const arrangementSelect{{ loop.index }} = document.getElementById('arrangement-select-{{ loop.index }}');
const prixTotalElement{{ loop.index }} = document.querySelector('.prix-total[data-index="{{ loop.index }}"]');
const nombreNuits{{ loop.index }} = {{ result.nombreNuits }}; // Ajout de la variable pour le nombre de nuits
function updateTotalPrice{{ loop.index }}() {
const chambrePrix = parseFloat(chambreSelect{{ loop.index }}.options[chambreSelect{{ loop.index }}.selectedIndex].getAttribute('data-prix')) || 0;
const arrangementPrix = parseFloat(arrangementSelect{{ loop.index }}.options[arrangementSelect{{ loop.index }}.selectedIndex].getAttribute('data-prix')) || 0;
const totalPrix = (chambrePrix + arrangementPrix) * nombreNuits{{ loop.index }}; // Multiplication par le nombre de nuits
prixTotalElement{{ loop.index }}.textContent = Math.floor(totalPrix);
document.getElementById('total-price-{{ loop.index }}').value = Math.floor(totalPrix);
}
chambreSelect{{ loop.index }}.addEventListener('change', updateTotalPrice{{ loop.index }});
arrangementSelect{{ loop.index }}.addEventListener('change', updateTotalPrice{{ loop.index }});
</script>
{% else %}
<br>
<p style="text-align:center;color:black;font-size:16px;font-weight:500;">Désolé, aucune chambre n'est disponible pour les dates sélectionnées.</p>
<p style="text-align:center;color:black;font-size:16px;font-weight:500;">Veuillez modifier vos dates de séjour ou consulter nos offres spéciales.</p>
{% endif %}
{% endif %}
</tbody>
</table>
<script>
// Fonction pour mettre à jour le prix total dans le formulaire
function updateTotalPriceInForm{{ loop.index }}(totalPrice) {
document.getElementById('total-price-{{ loop.index }}').value = totalPrice;
}
</script>
{% endfor %}
{% if results %}
<form id="hidden-form" action="{{ path('reservation',{'id':hotel.id}) }}" method="post">
{% for result in results %}
{% if result.chambre is not null %}
<input type="hidden" name="nbadultes[]" value="{{ result.nbadultes }}">
<input type="hidden" name="nbfnfants[]" value="{{ result.nbfnfants }}">
<!-- Ajoutez des champs cachés pour stocker les sélections -->
<input type="hidden" name="selectedRoom[]" id="selected-room-{{ loop.index }}">
<input type="hidden" name="selectedArrangement[]" id="selected-arrangement-{{ loop.index }}">
<input type="hidden" name="totalPrice[]" value="{{ result.chambre.pricerooms[0].price + result.chambre.pricearrangements[0].price }}" id="total-price-{{ loop.index }}">
{% endif %}{% endfor %}
<button type="submit" style="background: #ff9600;color: white" id="afficher-resultats" class="btn btn-lg">
<i class="fa fa-check"></i> Réserver
</button>
<div id="formInfoContainer" style="display: none;">
<input type="hidden" name="dateDepart" value="{{ form.dateDepart.vars.data|date('d/m/Y') }}">
<input type="hidden" name="dateArrive" value="{{ form.dateArrive.vars.data|date('d/m/Y') }}">
<input type="hidden" name="nombreNuits" value="{{ form.nombreNuits.vars.data|date('d/m/Y') }}">
</div>
</form>
{% endif %}
<script>
// Fonction pour copier les sélections dans les champs cachés lors du clic sur le bouton Réserver
function copySelections(index) {
const selectedRoom = document.getElementById('chambre-select-' + index).value;
const selectedArrangement = document.getElementById('arrangement-select-' + index).value;
document.getElementById('selected-room-' + index).value = selectedRoom;
document.getElementById('selected-arrangement-' + index).value = selectedArrangement;
}
// Ajoutez un écouteur d'événements au bouton Réserver pour appeler la fonction de copie des sélections
document.getElementById('afficher-resultats').addEventListener('click', function() {
{% for result in results %}
{% if result.chambre is not null %}
copySelections({{ loop.index }});
{% endif %}
{% endfor %}
});
</script>
{% endif %}
</div>
</div>
{# </div>#}
<div class="reviews">
<div class="reviews_title" id="dernier-titre">Hébergement</div>
</div>
<div class="hotel_info_text">
{{ hotels.longdesc|raw }}
</div>
</div>
</div>
</div>
</div>
<script>
{% for result in results %}
const prixTotalElement{{ loop.index }} = document.getElementById('prix-total-{{ loop.index }}');
document.getElementById('total-price-{{ loop.index }}').value = document.querySelector('.prix-total[data-index="{{ loop.index }}"]').textContent;
function updateTotalPrice{{ loop.index }}() {
const chambrePrix = parseFloat(chambreSelect{{ loop.index }}.options[chambreSelect{{ loop.index }}.selectedIndex].getAttribute('data-prix')) || 0;
const arrangementPrix = parseFloat(arrangementSelect{{ loop.index }}.options[arrangementSelect{{ loop.index }}.selectedIndex].getAttribute('data-prix')) || 0;
const totalPrix = chambrePrix + arrangementPrix;
document.getElementById('prix-total-{{ loop.index }}').value = totalPrix;
}
chambreSelect{{ loop.index }}.addEventListener('change', updateTotalPrice{{ loop.index }});
arrangementSelect{{ loop.index }}.addEventListener('change', updateTotalPrice{{ loop.index }});
{% endfor %}
</script>
<script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
<script>
$(document).ready(function() {
// Mettre à jour le champ "nombre de nuit" lorsqu'une date d'arrivée est saisie
$('#{{ form.dateArrive.vars.id }}').change(function() {
var dateArrive = new Date($(this).val());
var dateDepart = new Date($('#{{ form.dateDepart.vars.id }}').val());
if (!isNaN(dateArrive.getTime()) && !isNaN(dateDepart.getTime())) {
var diff = Math.ceil((dateArrive - dateDepart) / (1000 * 60 * 60 * 24));
$('#{{ form.nombreNuits.vars.id }}').val(diff);
}
});
});
</script>
<script>
$(document).ready(function () {
var $collectionHolder = $('ul.rooms');
$collectionHolder.data('index', $collectionHolder.find(':input').length);
$collectionHolder.find('li').each(function () {
addRemoveButton($(this));
});
var $addRoomButton = $('<button type="button" class="add-room" style="color: #0093a9;margin-top: 19px;border: none">Ajouter une chambre</button>');
var $newLinkLi = $('<li class="row room-item"></li>').append($addRoomButton);
$collectionHolder.append($newLinkLi);
$addRoomButton.on('click', function (e) {
addRoomForm($collectionHolder, $newLinkLi);
});
function addRoomForm($collectionHolder, $newLinkLi) {
var prototype = $collectionHolder.data('prototype');
var index = $collectionHolder.data('index');
var newForm = prototype;
newForm = newForm.replace(/__name__/g, index);
$collectionHolder.data('index', index + 1);
var $newFormLi = $('<li class="row room-item"></li>').append(newForm);
$newFormLi.find('input').each(function () {
var $input = $(this);
var name = $input.attr('name');
var $select = createDropdown(name);
$input.replaceWith($select);
});
var $nbfnfantsSelect = $newFormLi.find('select[name*="[nbfnfants]"]');
var $ageSelect = $newFormLi.find('select[name*="[age]"]');
var $ageLabel = $newFormLi.find('label:contains("Age")');
$ageSelect.hide(); // Masquer le champ d'âge par défaut
$ageLabel.hide(); // Masquer le label d'âge par défaut
$nbfnfantsSelect.on('change', function () {
var nbfnfants = $(this).val() || 0;
if (nbfnfants > 0) {
$ageSelect.show(); // Afficher le champ d'âge si le nombre d'enfants est supérieur à zéro
$ageLabel.show(); // Afficher le label d'âge si le nombre d'enfants est supérieur à zéro
} else {
$ageSelect.hide(); // Masquer le champ d'âge si le nombre d'enfants est remis à zéro
$ageLabel.hide(); // Masquer le label d'âge si le nombre d'enfants est remis à zéro
}
});
$newLinkLi.before($newFormLi);
addRemoveButton($newFormLi);
// Ajouter un gestionnaire d'événements pour les nouveaux éléments ajoutés
$newFormLi.find('.remove-room').on('click', function () {
$newFormLi.remove();
});
}
function createDropdown(name) {
var $select = $('<select class="input--style-1" style="border: 1px solid black" name="' + name + '"></select>');
for (var i = 0; i <= 18; i++) { // Permettre des âges de 0 à 18 ans
$select.append('<option value="' + i + '">' + i + '</option>');
}
return $select;
}
function addRemoveButton($formLi) {
var $removeRoomButton = $('<button type="button" class="remove-room" style="margin-left: 20px"><i class="fa fa-trash"></i></button>');
$formLi.append($removeRoomButton);
$removeRoomButton.on('click', function (e) {
$formLi.remove();
});
}
function displayChoices() {
var roomValues = [];
// Récupérer les valeurs de chaque chambre
$('ul.rooms li.row.room-item').each(function () {
var nbadultes = $(this).find('select[name*="[nbadultes]"]').val() || 0;
var nbfnfants = $(this).find('select[name*="[nbfnfants]"]').val() || 0;
roomValues.push({
'nbadultes': nbadultes,
'nbfnfants': nbfnfants,
});
// Ajouter d'autres lignes pour d'autres champs de la chambre si nécessaire
});
// Mettre à jour le contenu de l'élément avec les résultats
var resultsContainer = $('#results-container');
resultsContainer.empty();
if (roomValues.length >=1 ) {
// Construire le HTML pour afficher les résultats
for (var i = 1; i < roomValues.length; i++) {
resultsContainer.append('<p>Room ' + (i) + ': Adults - ' + roomValues[i].nbadultes + ', Children - ' + roomValues[i].nbfnfants + '</p>');
// Ajouter d'autres lignes pour d'autres champs de la chambre si nécessaire
}
} else {
// Afficher un message si aucun résultat n'est trouvé
resultsContainer.html('<p>Aucun résultat trouvé.</p>');
}
// Masquer la fenêtre modale après avoir affiché les résultats
$('#roomModal').modal('hide');
}
// Associer la fonction displayChoices au clic sur le bouton "Enregistrer"
$('#roomModal').on('click', '.btn-primary', function () {
displayChoices();
});
});
</script>
<script>
$(document).ready(function () {
// Lorsqu'on clique sur le lien
$('a[href^="#"]').on('click', function (event) {
// Empêcher le comportement par défaut du lien
event.preventDefault();
// Récupérer l'ID de la cible du lien
var target = $(this.hash);
// Animer le défilement jusqu'à la cible
$('html, body').animate({
scrollTop: target.offset().top
}, 800); // Le nombre 800 représente la durée de l'animation en millisecondes
});
});
</script>
{# </div></div></div>#}
</div>
</div>
{% endblock %}
{% block javascripts %}
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script>
$('#myCarousel').carousel({
interval: false
});
$('#carousel-thumbs').carousel({
interval: false
});
$('[id^=carousel-selector-]').click(function() {
var id_selector = $(this).attr('id');
var id = parseInt( id_selector.substr(id_selector.lastIndexOf('-') + 1) );
$('#myCarousel').carousel(id);
});
// Only display 3 items in nav on mobile.
if ($(window).width() < 575) {
$('#carousel-thumbs .row div:nth-child(4)').each(function() {
var rowBoundary = $(this);
$('<div class="row mx-0">').insertAfter(rowBoundary.parent()).append(rowBoundary.nextAll().addBack());
});
$('#carousel-thumbs .carousel-item .row:nth-child(even)').each(function() {
var boundary = $(this);
$('<div class="carousel-item">').insertAfter(boundary.parent()).append(boundary.nextAll().addBack());
});
}
// Hide slide arrows if too few items.
if ($('#carousel-thumbs .carousel-item').length < 2) {
$('#carousel-thumbs [class^=carousel-control-]').remove();
$('.machine-carousel-container #carousel-thumbs').css('padding','0 5px');
}
// when the carousel slides, auto update
$('#myCarousel').on('slide.bs.carousel', function(e) {
var id = parseInt( $(e.relatedTarget).attr('data-slide-number') );
$('[id^=carousel-selector-]').removeClass('selected');
$('[id=carousel-selector-'+id+']').addClass('selected');
});
// when user swipes, go next or previous
$('#myCarousel').swipe({
fallbackToMouseEvents: true,
swipeLeft: function(e) {
$('#myCarousel').carousel('next');
},
swipeRight: function(e) {
$('#myCarousel').carousel('prev');
},
allowPageScroll: 'vertical',
preventDefaultEvents: false,
threshold: 75
});
$('#myCarousel .carousel-item img').on('click', function(e) {
var src = $(e.target).attr('data-remote');
if (src) $(this).ekkoLightbox();
});
</script>
{% endblock %}