Projet de soutien: Pizzeria
Étape 0 :
Créez un repository public avec un README sur GitHub, appelez-le
bre04-soutien-pizzeriaClonez le dans votre IDE.
Étape 1 :
Récupérez tous les fichiers du projet. Gardez la même architecture de dossiers et fichiers.
Ne créez pas de dossiers séparés pour les étapes, le projet est un tout.
Étape 2 : Créer la classe Ingredient
Vous allez commencer par créer une classe Ingredient dans un fichiers classes/ingredient.js.
Un Ingredient a deux attributs :
Un
namequi est une chaine de caractèresUn
filequi est une chaine de caractères
Ses attributs seront privés, et ils auront tous les deux des getters et setters.
Votre constructeur prendra ces deux attributs en paramètre et les initialisera.
Étape 3 : Créer le tableau des ingrédients
Dans votre index.js, une fois le DOM chargé, vous allez créer un tableau vide que vous appelerez availableIngredients.
Vous allez instancier une classe Ingredient pour chacun des ingrédients suivants :
Bacon:assets/img/bacon.pngCarotte:assets/img/carrots.pngFromage:assets/img/cheese.pngOeuf:assets/img/egg.pngAubergine:assets/img/eggplant.pngFromage de chèvre:assets/img/goat-cheese.pngMiel:assets/img/honey.pngChampignon:assets/img/mushroom.pngOlive:assets/img/olive.pngPiment:assets/img/pepper.pngPomme de terre:assets/img/potato.pngTomate:assets/img/tomato.png
Vous allez ensuite une par une, les ajouter dans le tableau availableIngredients.
Étape 4 : Générer le HTML des Ingrédients
Dans votre index.html vous avez une intégration en dur de la liste des ingrédients (dans la section#stage). Vous allez devoir faire en sorte de la générer en JavaScript.
Vous allez donc dans votre index.js, une fois le DOM chargé et le tableau availableIngredients rempli devoir parcourir ce tableau et générer le HTML nécessaire pour afficher tout ça.
N'oubliez pas de commenter le HTML de démonstration de départ pour bien voir celui que vous avez généré en JS apparaitre.
Dans le HTML de démonstration, Tomate et Fromage sont sélectionnés par défaut, cela n'est pas le cas dans votre version c'était pour que vous puissiez voir à quoi ça ressemble (et deviner comment c'est fait en observant le code).
Étape 5 : Dynamiser la liste des ingrédients
Faits en sorte que lorsque l'on clique sur un des ingrédients de la liste dans la section#stage:
s'il est sélectionné, on le désélectionne
s'il n'est pas sélectionné on le sélectionne
Étape 6 : Créer la classe Pizza
Vous allez maintenant créer une classe Pizza dans un fichier classes/pizza.js.
Une Pizza a un seul attribut, appelé ingredients.
Son constucteur ne prend pas de paramètres, par contre il initialise l'attribut ingredients comme un tableau vide.
Son attribut ingredients a un getter mais pas de setter.
Pizza a par contre trois méthodes :
addIngredient(ingredient)qui ajoute au tableau l'ingrédient passé en paramètresremoveIngredient(ingredient)qui retire du tableau l'ingrédient passé en paramètresdisplay()qui permet d'afficher la Pizza dans l'aside (laissez la vide pour le moment)
On ajoute les nouveaux ingrédients à la fin du tableau. Par contre quand on veut retirer un ingrédient, il faut remplacer le tableau ingredients par un nouveau tableau qui ne contient pas l'ingrédient que l'on souhaite retirer.
Étape 7 : Sélectionner des ingrédients
Lorsque vous allez cliquer sur l'un des ingrédients dans la section#stage vous allez evoir vérifier si une Pizza est en cours de composition. S'il n'y en a pas, instanciez-en une.
Si l'ingrédient était sélectionné, retirez le de la Pizza, sinon ajoutez le.
Une fois que c'est fait, actualisez l' <aside> en utilisant la méthode display de la Pizza (vous allez remplir la méthode display à l'étape suivante).
Étape 8 : Dynamiser la composition de la pizza
Dans l' <aside> de votre HTML vous avez un ul qui va contenir la liste des ingrédients de la Pizza.
Faites en sorte que lorsque l'on appelle la méthode display d'une Pizza, cette liste d'ingrédients soit mise à jour.
Attention cependant le bouton commander doit rester disponible et tout en bas de la liste.
Étape 9 : Commander une pizza
Lorsque vous cliquez sur le bouton commander, lancez le temps de cuisson de la Pizza, elle met une seconde à cuire par ingrédient qui la compose.
Lorsqu'une pizza est commandée la liste de ses ingrédients se réinitialise. La section#stage doit revenir à son état initial et l' aside ne doit plus contenir d'ingrédients.
Étape 10 : La pizza est prête
Lorsque la pizza est prête (à la fin de son temps de cuisson donc) faites en sorte d'afficher l'image de Pizza et le message Pizza prête! en bas de l' aside.
L'image et le message s'effacent au bout de 5 secondes.