From 2e2caabb8fda94035a25a78e116b46aab442aadc Mon Sep 17 00:00:00 2001
From: Clotaire DUFRESNE <clotaire.dufresne.etu@univ-lille.fr>
Date: Sat, 13 Feb 2021 15:13:59 +0100
Subject: [PATCH] tp3 fini

---
 src/Router.js          |  9 ++++++++-
 src/main.js            |  7 +++++--
 src/pages/PizzaForm.js | 16 ++++++++++++++--
 src/pages/PizzaList.js |  2 +-
 4 files changed, 28 insertions(+), 6 deletions(-)

diff --git a/src/Router.js b/src/Router.js
index 64b8bfd..4785ab1 100644
--- a/src/Router.js
+++ b/src/Router.js
@@ -4,12 +4,19 @@ export default class Router {
 	static routes = [];
 	static #menuElement;
 
-	static navigate(path) {
+	static navigate(path, noPush) {
 		const route = this.routes.find(route => route.path === path);
 		if (route) {
 			this.titleElement.innerHTML = `<h1>${route.title}</h1>`;
 			this.contentElement.innerHTML = route.page.render();
 			route.page.mount?.(this.contentElement);
+			const d = document.querySelectorAll('.mainMenu a');
+			d.forEach(element => {
+				if (element.textContent == route.title) element.classList.add('active');
+				else element.classList.remove('active');
+			});
+			if(!noPush)
+				window.history.pushState(null, null, route.path);
 		}
 	}
 
diff --git a/src/main.js b/src/main.js
index 0cedb90..18c8e03 100644
--- a/src/main.js
+++ b/src/main.js
@@ -18,8 +18,11 @@ Router.routes = [
 
 Router.menuElement = document.querySelector('.mainMenu');
 
-Router.navigate('/'); // affiche une page vide
 pizzaList.pizzas = data;
-Router.navigate('/'); // affiche la liste des pizzas
+Router.navigate(document.location.pathname); // affiche la liste des pizzas
 
 document.querySelector('.newsContainer').setAttribute('style', '');
+
+window.onpopstate = () => {
+	Router.navigate(document.location.pathname, true);
+};
\ No newline at end of file
diff --git a/src/pages/PizzaForm.js b/src/pages/PizzaForm.js
index 20438f7..fdbdf43 100644
--- a/src/pages/PizzaForm.js
+++ b/src/pages/PizzaForm.js
@@ -14,7 +14,19 @@ export default class PizzaForm extends Page {
 
 	mount(element) {
 		super.mount(element);
+		const form = document.querySelector('form');
+		form.addEventListener('submit', event => this.submit(event));
 	}
 
-	submit(event) {}
-}
\ No newline at end of file
+	submit(event) {
+		event.preventDefault();
+		const target = event.target, input = target.querySelector('input[name=name]').value;
+		if(input === "") {
+			window.alert("Nom vide !");
+		}
+		else {
+			window.alert(`La pizza ${input} a été ajoutée`);
+			target.reset();
+		}
+	}
+}
diff --git a/src/pages/PizzaList.js b/src/pages/PizzaList.js
index fc69533..64a39b9 100644
--- a/src/pages/PizzaList.js
+++ b/src/pages/PizzaList.js
@@ -6,7 +6,7 @@ export default class PizzaList extends Page {
 	#pizzas;
 
 	constructor(pizzas) {
-		super('pizzaList');// on pase juste la classe CSS souhaitée
+		super('pizzaList');// on passe juste la classe CSS souhaitée
 		this.pizzas = pizzas;
 	}
 
-- 
GitLab