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