$(document).ready(function() { updateNotificationsCount(); // Gestion de l'ouverture/fermeture du burger menu $('#burgerMenuButton').click(function(event) { event.stopPropagation(); // Empêche le clic sur le bouton de fermer le menu $('#burgerMenuContent').toggleClass('hidden'); }); // Fermer le burger menu si on clique ailleurs $(document).click(function(event) { var $target = $(event.target); if (!$target.closest('#burgerMenuContent').length && !$target.closest('#burgerMenuButton').length) { $('#burgerMenuContent').addClass('hidden'); } }); $('table tbody').on('click', '.clickable-row', function() { window.location.href = $(this).data("href"); }); // Variable pour suivre le sens du tri : true pour ascendant, false pour descendant var sortAscending = true; $("#sortDate").on("click", function() { var rows = $(".grid-body .grid-row").get(); rows.sort(function(a, b) { var valA = $(a).find(".grid-cell").eq(1).text(); // Ajustez à eq(0) pour la première colonne (dates) var valB = $(b).find(".grid-cell").eq(1).text(); // Convertir DD/MM/YYYY en YYYY-MM-DD pour comparaison var dateA = convertDate(valA); var dateB = convertDate(valB); return (new Date(dateA) - new Date(dateB)) * (sortAscending ? 1 : -1); }); // Ajouter les lignes triées au tbody $.each(rows, function(index, row) { $(".grid-body").append(row); }); // Inverser le sens du tri sortAscending = !sortAscending; }); var currentPath = window.location.pathname; // Fonction pour appliquer le style actif function setActiveButton(selector) { $(selector).css({ 'background-color': '#f0f0f0', // 'transform': 'translateX(5px)', 'box-shadow': '0 2px 5px rgba(0, 0, 0, 0.1)' }); } // Réinitialiser tous les boutons $('.navItem').css({ 'background-color': '', 'transform': '', 'box-shadow': '' }); // Appliquer le style en fonction de l'URL if (currentPath.includes('/client/crm')) { setActiveButton('.navItem:contains("Mes acquéreurs")'); } else if (currentPath.includes('/client/myProperties')) { setActiveButton('.navItem:contains("Mes mandats")'); } else if (currentPath.includes('/client/myEstimations')) { setActiveButton('.navItem:contains("Mes estimations")'); } else if (currentPath.includes('/client/notifications')) { setActiveButton('.navItem:contains("Matchings acceptés")'); } else if (currentPath.includes('/client/myAccount')) { setActiveButton('.navItem:contains("Mon profil")'); } else if (currentPath.includes('/client/myGroups')) { setActiveButton('.navItem:contains("Groupes")'); } else if (currentPath.includes('/client/home')) { setActiveButton('.navItem:contains("Tableau")'); } }); // Fonction pour convertir le format de date de DD/MM/YYYY à YYYY/MM/DD function convertDate(d) { var parts = d.split("/"); return parts[2] + "/" + parts[1] + "/" + parts[0]; } function updateNotificationsCount(reload = false) { $.ajax({ url: '/get-notifications-count', method: 'GET', success: function(response) { console.log("Raw response:", response); if (typeof response === 'string') { try { response = JSON.parse(response); } catch (error) { console.error('Error parsing JSON response', error); return; } } if (response && typeof response.searchNotificationsCount === 'number' && typeof response.propertyNotificationsCount === 'number') { $('#searchNotificationsNumber .notif').text(response.searchNotificationsCount); $('#propertyNotificationsNumber .notif').text(response.propertyNotificationsCount); const totalNotificationsCount = response.searchNotificationsCount + response.propertyNotificationsCount; $('#ongoingMatching').text(totalNotificationsCount); if (reload) { window.location.reload(); // Recharger la page après la mise à jour des notifications } } else { console.error('Invalid response format', response); } }, error: function(error) { console.error('Error fetching notifications count', error); } }); } function showLoading() { $('.loading-screen').css('display', 'flex'); $('#loadingScreen').show(); $('#pageContent').addClass('blur-effect'); } function hideLoading() { $('#loadingScreen').hide(); $('.loading-screen').css('display', 'none'); $('#pageContent').removeClass('blur-effect'); } function showAndHideLoading(delay) { showLoading(); // Afficher le chargement setTimeout(function() { hideLoading(); // Masquer le chargement après le délai spécifié }, delay); // Utilise le paramètre "delay" pour définir le temps d'attente }