From a8342ba7aa6ae7dfc9508b9f00dc22ea6898190e Mon Sep 17 00:00:00 2001
From: Thomas Fritsch <tf@kumquats.fr>
Date: Mon, 10 Feb 2020 01:10:08 +0100
Subject: [PATCH] =?UTF-8?q?D.3.=20Propri=C3=A9t=C3=A9s=20et=20m=C3=A9thode?=
 =?UTF-8?q?s=20statiques=20:=20La=20classe=20PageRenderer?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 js/PageRenderer.js   | 13 +++++++++++++
 js/main.js           |  9 +++++----
 js/pages/HomePage.js |  7 +++----
 js/pages/Page.js     | 14 ++++++++++++++
 4 files changed, 35 insertions(+), 8 deletions(-)
 create mode 100644 js/PageRenderer.js
 create mode 100644 js/pages/Page.js

diff --git a/js/PageRenderer.js b/js/PageRenderer.js
new file mode 100644
index 0000000..4b3f572
--- /dev/null
+++ b/js/PageRenderer.js
@@ -0,0 +1,13 @@
+export default class PageRenderer {
+	static titleElement;
+	static contentElement;
+
+	static renderPage(page) {
+		if (this.titleElement) {
+			this.titleElement.innerHTML = page.renderTitle();
+		}
+		if (this.contentElement) {
+			this.contentElement.innerHTML = page.render();
+		}
+	}
+}
diff --git a/js/main.js b/js/main.js
index 5222ee0..a44ba05 100644
--- a/js/main.js
+++ b/js/main.js
@@ -1,9 +1,10 @@
 import data from './data.js';
 import Component from './components/Component.js';
 import HomePage from './pages/HomePage.js';
-
-const title = new Component('h1', null, ['La', ' ', 'carte']);
-document.querySelector('.pageTitle').innerHTML = title.render();
+import PageRenderer from './PageRenderer.js';
 
 const homePage = new HomePage(data);
-document.querySelector('.pizzasContainer').innerHTML = homePage.render();
+
+PageRenderer.titleElement = document.querySelector('.pageTitle');
+PageRenderer.contentElement = document.querySelector('.pizzasContainer');
+PageRenderer.renderPage(homePage);
diff --git a/js/pages/HomePage.js b/js/pages/HomePage.js
index 6a1f3b5..1f31b95 100644
--- a/js/pages/HomePage.js
+++ b/js/pages/HomePage.js
@@ -1,11 +1,10 @@
-import Component from '../components/Component.js';
+import Page from './Page.js';
 import PizzaThumbnail from '../components/PizzaThumbnail.js';
 
-export default class HomePage extends Component {
+export default class HomePage extends Page {
 	constructor(pizzas) {
 		super(
-			'section',
-			null,
+			'La carte',
 			pizzas.map(pizza => new PizzaThumbnail(pizza))
 		);
 	}
diff --git a/js/pages/Page.js b/js/pages/Page.js
new file mode 100644
index 0000000..cab885d
--- /dev/null
+++ b/js/pages/Page.js
@@ -0,0 +1,14 @@
+import Component from '../components/Component';
+
+export default class Page extends Component {
+	title = '';
+
+	constructor(title, children) {
+		super('section', null, children);
+		this.title = title;
+	}
+
+	renderTitle() {
+		return `<h1>${this.title}</h1>`;
+	}
+}
-- 
GitLab