CARIA.2.0
Suite de la version 1.0.0 repo CARIA - Enormement de modification. - Restructuration du code - Optimisation - Debug . . . Phase de test en cours !
This commit is contained in:
53
js/script.js
Normal file
53
js/script.js
Normal file
@@ -0,0 +1,53 @@
|
||||
// DECONNECTION
|
||||
$(document).ready(function () {
|
||||
// Fonction pour gérer la déconnexion
|
||||
function deconnexion() {
|
||||
$.ajax({
|
||||
url: "deconnexion.php",
|
||||
type: "POST",
|
||||
success: function (data) {
|
||||
// Afficher le message de succès
|
||||
$("#message").html(
|
||||
"<div class='alert alert-success'>" + data + "</div>"
|
||||
);
|
||||
// Redirection après 5 secondes
|
||||
setTimeout(function () {
|
||||
window.location.href = "index.php";
|
||||
}, 5000);
|
||||
},
|
||||
error: function (jqXHR, textStatus, errorThrown) {
|
||||
// Afficher un message d'erreur si la déconnexion échoue
|
||||
$("#message").html(
|
||||
"<div class='alert alert-danger'>Erreur de déconnexion</div>"
|
||||
);
|
||||
},
|
||||
});
|
||||
}
|
||||
// Gérer le clic sur le lien de déconnexion
|
||||
$("#deconnexionLink").click(function (e) {
|
||||
e.preventDefault(); // Empêcher le lien de déclencher une action par défaut
|
||||
deconnexion(); // Déclencher la fonction de déconnexion
|
||||
});
|
||||
});
|
||||
|
||||
function getCookie(name) {
|
||||
let cookieArr = document.cookie.split(";");
|
||||
for(let i = 0; i < cookieArr.length; i++) {
|
||||
let cookiePair = cookieArr[i].split("=");
|
||||
if(name == cookiePair[0].trim()) {
|
||||
return decodeURIComponent(cookiePair[1]);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function acceptCookies() {
|
||||
document.cookie = "cookieConsent=true; max-age=" + 60*60*24*365 + "; path=/";
|
||||
document.getElementById("cookieConsent").classList.add("d-none");
|
||||
}
|
||||
|
||||
window.onload = function() {
|
||||
if (getCookie("cookieConsent") !== "true") {
|
||||
document.getElementById("cookieConsent").classList.remove("d-none");
|
||||
}
|
||||
};
|
||||
221
js/script_calendar.js
Normal file
221
js/script_calendar.js
Normal file
@@ -0,0 +1,221 @@
|
||||
//# AFFICHE MY EVENT
|
||||
var calendarMyEvents = $("#calendar-my-events").fullCalendar({
|
||||
events: "./modele/event/fetch-my-events.php",
|
||||
displayEventTime: false,
|
||||
eventRender: function (event, element, view) {
|
||||
if (event.allDay === "true") {
|
||||
event.allDay = true;
|
||||
} else {
|
||||
event.allDay = false;
|
||||
}
|
||||
},
|
||||
selectable: true,
|
||||
selectHelper: true,
|
||||
editable: false,
|
||||
eventClick: function (event) {
|
||||
// Afficher une pop-up avec les détails de l'événement
|
||||
alert(
|
||||
event.title +
|
||||
" : \n" +
|
||||
event.vehicule +
|
||||
" pour le client " +
|
||||
event.utilisateur +
|
||||
"\n" +
|
||||
"\n" +
|
||||
"Période de réservation : " +
|
||||
"\n" +
|
||||
event.start.format("dddd DD MMMM YYYY HH:mm") +
|
||||
" --> " +
|
||||
event.end.format("dddd DD MMMM YYYY HH:mm")
|
||||
);
|
||||
},
|
||||
eventRender: function (event, element, view) {
|
||||
element.bind("contextmenu", function (e) {
|
||||
e.preventDefault(); // Empêche le menu contextuel par défaut de s'afficher
|
||||
var deleteMsg = confirm("Voulez-vous vraiment supprimer la réservation?");
|
||||
if (deleteMsg) {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "./modele/event/delete-event.php",
|
||||
data: "&id=" + event.id,
|
||||
success: function (response) {
|
||||
if (parseInt(response) > 0) {
|
||||
$("#calendar-my-events").fullCalendar("removeEvents", event.id);
|
||||
displayMessage("Réservation supprimée avec succès");
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
eventMouseover: function (event, jsEvent, view) {
|
||||
// Change la forme du curseur lorsque vous survolez l'événement
|
||||
$(this).css("cursor", "pointer");
|
||||
},
|
||||
eventMouseout: function (event, jsEvent, view) {
|
||||
// Réinitialise la forme du curseur lorsque vous ne survolez plus l'événement
|
||||
$(this).css("cursor", "auto");
|
||||
},
|
||||
});
|
||||
|
||||
//# AFFICHE ALL EVENTS
|
||||
$(document).ready(function () {
|
||||
var calendarAllEvents = $("#calendar-all-events").fullCalendar({
|
||||
events: "./modele/event/fetch-all-events.php",
|
||||
displayEventTime: false,
|
||||
eventRender: function (event, element, view) {
|
||||
if (event.allDay === "true") {
|
||||
event.allDay = true;
|
||||
} else {
|
||||
event.allDay = false;
|
||||
}
|
||||
},
|
||||
selectable: true,
|
||||
selectHelper: true,
|
||||
editable: false,
|
||||
eventClick: function (event) {
|
||||
// Afficher une pop-up avec les détails de l'événement
|
||||
alert(
|
||||
event.title +
|
||||
" : \n" +
|
||||
event.vehicule +
|
||||
" pour le client " +
|
||||
event.utilisateur +
|
||||
"\n" +
|
||||
"\n" +
|
||||
"Période de réservation : " +
|
||||
"\n" +
|
||||
event.start.format("dddd DD MMMM YYYY HH:mm") +
|
||||
" --> " +
|
||||
event.end.format("dddd DD MMMM YYYY HH:mm")
|
||||
);
|
||||
},
|
||||
eventRender: function (event, element, view) {
|
||||
element.bind("contextmenu", function (e) {
|
||||
e.preventDefault(); // Empêche le menu contextuel par défaut de s'afficher
|
||||
var deleteMsg = confirm("Voulez-vous vraiment supprimer la réservation?");
|
||||
if (deleteMsg) {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "./modele/event/delete-event.php",
|
||||
data: "&id=" + event.id,
|
||||
success: function (response) {
|
||||
if (parseInt(response) > 0) {
|
||||
$("#calendar-all-events").fullCalendar("removeEvents", event.id);
|
||||
displayMessage("Réservation supprimée avec succès");
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
eventMouseover: function (event, jsEvent, view) {
|
||||
// Change la forme du curseur lorsque vous survolez l'événement
|
||||
$(this).css("cursor", "pointer");
|
||||
},
|
||||
eventMouseout: function (event, jsEvent, view) {
|
||||
// Réinitialise la forme du curseur lorsque vous ne survolez plus l'événement
|
||||
$(this).css("cursor", "auto");
|
||||
},
|
||||
});
|
||||
|
||||
//# AJOUTE EVENT ADMIN
|
||||
$(document).ready(function () {
|
||||
$("#eventForm").submit(function (event) {
|
||||
event.preventDefault(); // Empêche la soumission du formulaire par défaut
|
||||
// Récupérer les valeurs des champs
|
||||
var id_user = $("#eventidUserSelect").val();
|
||||
var id_vehicule = $("#eventidVehiculeSelect").val();
|
||||
var start = $("#eventStart").val();
|
||||
var end = $("#eventEnd").val();
|
||||
// Validation de base des champs
|
||||
if (!id_user || !id_vehicule || !start || !end) {
|
||||
displayMessage("Tous les champs sont requis.");
|
||||
return;
|
||||
}
|
||||
// Convertir le format datetime-local en format MySQL datetime
|
||||
function convertToMySQLDateTime(datetimeLocal) {
|
||||
return datetimeLocal.replace("T", " ") + ":00";
|
||||
}
|
||||
var startFormatted = convertToMySQLDateTime(start);
|
||||
var endFormatted = convertToMySQLDateTime(end);
|
||||
|
||||
$.ajax({
|
||||
url: "./modele/event/add-event.php",
|
||||
type: "POST",
|
||||
data: {
|
||||
id_user: id_user,
|
||||
id_vehicule: id_vehicule,
|
||||
start: startFormatted,
|
||||
end: endFormatted,
|
||||
},
|
||||
success: function (response) {
|
||||
displayMessage("Réservation créée avec succès.");
|
||||
$("#eventForm")[0].reset();
|
||||
$("#calendar-all-events").fullCalendar("refetchEvents"); // Met à jour les événements dans le calendrier
|
||||
},
|
||||
error: function (xhr, status, error) {
|
||||
console.error("Erreur lors de la création de l'événement:", error);
|
||||
displayMessage("Erreur lors de la création de l'événement.");
|
||||
},
|
||||
});
|
||||
});
|
||||
function displayMessage(message) {
|
||||
alert(message);
|
||||
}
|
||||
});
|
||||
|
||||
//# AJOUTE MY EVENT
|
||||
$(document).ready(function () {
|
||||
$("#eventMyForm").submit(function (event) {
|
||||
event.preventDefault(); // Empêche la soumission du formulaire par défaut
|
||||
|
||||
var id_vehicule = $("#eventidVehiculeSelect").val();
|
||||
var start = $("#eventStart").val();
|
||||
var end = $("#eventEnd").val();
|
||||
|
||||
// Convertir le format datetime-local en format MySQL datetime
|
||||
function convertToMySQLDateTime(datetimeLocal) {
|
||||
return datetimeLocal.replace("T", " ") + ":00";
|
||||
}
|
||||
var startFormatted = convertToMySQLDateTime(start);
|
||||
var endFormatted = convertToMySQLDateTime(end);
|
||||
|
||||
$.ajax({
|
||||
url: "./modele/event/add-my-event.php",
|
||||
type: "POST",
|
||||
data: {
|
||||
id_vehicule: id_vehicule,
|
||||
start: startFormatted,
|
||||
end: endFormatted,
|
||||
},
|
||||
success: function (response) {
|
||||
displayMessage("Réservation créée avec succès.");
|
||||
$("#eventMyForm")[0].reset();
|
||||
$("#calendar-my-events").fullCalendar("refetchEvents"); // Met à jour les événements dans le calendrier
|
||||
},
|
||||
error: function (xhr, status, error) {
|
||||
console.error("Erreur lors de la création de l'événement:", error);
|
||||
displayMessage("Erreur lors de la création de l'événement.");
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
// Fonction pour afficher les messages à l'utilisateur
|
||||
function displayMessage(message) {
|
||||
// Implémentez votre méthode d'affichage des messages ici
|
||||
alert(message);
|
||||
}
|
||||
});
|
||||
|
||||
// Fonction pour afficher les messages à l'utilisateur
|
||||
function displayMessage(message) {
|
||||
// Implémentez votre méthode d'affichage des messages ici
|
||||
alert(message);
|
||||
}
|
||||
});
|
||||
|
||||
function displayMessage(message) {
|
||||
$("#message").html("<div class='alert alert-success'>"+message+"</div>");
|
||||
setInterval(function() { $(".alert-success").fadeOut(); }, 3000);
|
||||
}
|
||||
76
js/script_map.js
Normal file
76
js/script_map.js
Normal file
@@ -0,0 +1,76 @@
|
||||
const DEFAULT_LATITUDE = 48.852969;
|
||||
const DEFAULT_LONGITUDE = 2.349903;
|
||||
// Event de pour initialisé la récuperation des voitures pour la MAP
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
// Vérifier si nous sommes sur la page d'accueil
|
||||
if (["/index.php", "/"].includes(window.location.pathname)) {
|
||||
getCars();
|
||||
}
|
||||
});
|
||||
// Récuperation des voitures pour la MAP
|
||||
function getCars() {
|
||||
fetch("./modele/get_cars.php")
|
||||
.then((response) => {
|
||||
if (!response.ok) {
|
||||
throw new Error(`HTTP error! Status: ${response.status}`);
|
||||
}
|
||||
return response.json();
|
||||
})
|
||||
.then((data) => {
|
||||
initMap(data);
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error("Erreur lors de la récupération des véhicules:", error);
|
||||
});
|
||||
}
|
||||
// Initialisation de la MAP
|
||||
function initMap(vehicules) {
|
||||
const markers = [];
|
||||
const macarte = L.map("map");
|
||||
// Utiliser la géolocalisation pour définir la vue de la carte
|
||||
navigator.geolocation.getCurrentPosition(
|
||||
(position) => {
|
||||
const { latitude, longitude } = position.coords;
|
||||
macarte.setView([latitude, longitude], 11);
|
||||
},
|
||||
() => {
|
||||
// En cas d'erreur de géolocalisation, utiliser les coordonnées par défaut
|
||||
macarte.setView([DEFAULT_LATITUDE, DEFAULT_LONGITUDE], 11);
|
||||
}
|
||||
);
|
||||
const markerClusters = L.markerClusterGroup();
|
||||
L.tileLayer("https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png", {
|
||||
attribution: "données © OpenStreetMap/ODbL - rendu OSM France",
|
||||
minZoom: 1,
|
||||
maxZoom: 20,
|
||||
}).addTo(macarte);
|
||||
for (const vehicule of Object.values(vehicules)) {
|
||||
const { id, lat, lon, img, dispo, marque, modele, annee } = vehicule;
|
||||
const iconBase = img;
|
||||
const disponibilite = dispo ? "Disponible" : "Indisponible";
|
||||
const dispochar = dispo ? "disponible" : "indisponible";
|
||||
const myIcon = L.icon({
|
||||
iconUrl: iconBase,
|
||||
iconSize: [50, 50],
|
||||
iconAnchor: [25, 50],
|
||||
popupAnchor: [-3, -76],
|
||||
});
|
||||
const popupContent = `
|
||||
<div style='text-align: center;'>
|
||||
Modèle: ${marque} ${modele}
|
||||
<br>
|
||||
Année: ${annee}
|
||||
<br>
|
||||
<span class='${dispochar}'>${disponibilite}</span>
|
||||
</div>
|
||||
`;
|
||||
const marker = L.marker([lat, lon], { icon: myIcon }).bindPopup(
|
||||
popupContent
|
||||
);
|
||||
markerClusters.addLayer(marker);
|
||||
markers.push(marker);
|
||||
}
|
||||
const group = L.featureGroup(markers);
|
||||
macarte.fitBounds(group.getBounds().pad(0.5));
|
||||
macarte.addLayer(markerClusters);
|
||||
}
|
||||
Reference in New Issue
Block a user