1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
class Formulaire {
constructor(station) {
this.station = station;
this.requiredFields();
this.clearFields();
this.changeButton();
this.validateForm();
this.cancelReservation();
}
showForm() {
//On fait apparaitre le formulaire sur le côté en réduisant la taille de la map
Dom.mapElement.style.width = '60%';
Dom.mapElement.style.transitionDuration = "1000ms";
if (window.matchMedia("(max-width: 768px)").matches) {
Dom.mapElement.style.width = '100%';
Dom.mapElement.style.transitionDuration = "0ms";
}
}
requiredFields() {
//Si le formulaire est vide, on laisse cacher le canvas
Dom.reserveElement.addEventListener('click', () => {
console.log('Ok')
if (Dom.firstNameElement.value == '' && Dom.surnameElement.value == '') {
alert('Veuillez renseigner votre nom et votre prénom');
} else {
Dom.canvasElement.style.visibility = 'visible';
Dom.canvasElement.style.transitionDuration == "500ms";
Dom.signElement.style.display = 'flex';
Dom.formElement.style.height = "auto";
}
});
}
changeButton() {
//Lorsqu'on clique sur le canvas, on switch le bouton réserver par le bouton valider
Dom.canvasElement.addEventListener('click', () => {
Dom.reserveElement.style.display = 'none';
Dom.signElement.style.display = "none";
Dom.validateElement.style.display = 'flex';
});
Dom.canvasElement.addEventListener('touchend', () => {
Dom.reserveElement.style.display = 'none';
Dom.signElement.style.display = "none";
Dom.validateElement.style.display = 'flex';
});
}
validateForm() {
Dom.validateElement.addEventListener('click', () => {
const resa = new Reservation(this.station);
//console.log('infos:', this.station);
resa.storeDatas();
resa.startReservation();
//Dom.modalElement.style.display = "none";
Dom.validateElement.style.display = "none";
Dom.cancelElement.style.display = 'flex';
Dom.textChronoElement.style.display = 'inline';
this.station.removeBike();
Dom.availableBikesElement.innerHTML = this.station.getAvailableBikes();
Dom.canvasElement.style.visibility = 'hidden';
Dom.formElement.style.height = "500px";
const canvas = new Canvas();
canvas.clearCanvas();
});
}
//Lorsqu'on clique sur le bouton "Annuler", on cache celui-ci, on cache le texte du chrono, on affiche le texte annuler
cancelReservation() {
Dom.cancelElement.addEventListener('click', () => {
Dom.textChronoElement.style.display = 'none'; //On fait disparaitre le texte du chrono
Dom.textChronoAnnulerElement.style.display = 'block'; //On fait apparaitre le texte "Réservation annulée"
Dom.cancelElement.style.display = 'none'; // On cache le bouton annuler
this.station.addBike();
Dom.availableBikesElement.innerHTML = this.station.getAvailableBikes();
Dom.firstNameElement.value = '';
Dom.surnameElement.value = '';
const stopChrono = new Chrono();
stopChrono.clearMe();
});
}
statusOfReservation() {
//Tant que le texte du chrono est affiché, on ne peut pas effectuer d'autres réservations.
if (Dom.textChronoElement.style.display === 'flex') {
alert('Vous avez déjà une réservation en cours. Veuillez annulez la précédente')
}
}
clearFields() {
Dom.firstNameElement.value = '';
Dom.surnameElement.value = '';
}
} |
Partager