Commits (5)
...@@ -32,7 +32,7 @@ git commit -m "Message de commit" ...@@ -32,7 +32,7 @@ git commit -m "Message de commit"
Pousser vos modifications vers votre dépôt distant: Pousser vos modifications vers votre dépôt distant:
```bash ```bash
git push origin nom_de_votre_branche git push origin ks110222
``` ```
Créer une merge request: Créer une merge request:
...@@ -45,10 +45,11 @@ Résumé du sujet : ...@@ -45,10 +45,11 @@ Résumé du sujet :
Vous devrez réaliser un site de e-commerce proposant des voitures. Vous devrez réaliser un site de e-commerce proposant des voitures.
## Partie A : Utilisation des prototypes ## Partie A : Utilisation des prototypes
**Créer un prototype Extra dans le fichier js/extra.js, contenant les propriétés suivantes : Créer un prototype Extra dans le fichier js/extra.js, contenant les propriétés suivantes :
- `name`
- `price`
name
price
Créer un prototype Car dans le fichier js/car.js contenant les propriétés suivantes : Créer un prototype Car dans le fichier js/car.js contenant les propriétés suivantes :
- `image` - `image`
...@@ -66,19 +67,19 @@ Modifier la fonction `generateCar` pour qu'elle retourne une nouvelle instance d ...@@ -66,19 +67,19 @@ Modifier la fonction `generateCar` pour qu'elle retourne une nouvelle instance d
## Partie B : Modification du DOM ## Partie B : Modification du DOM
Ajouter au prototype Car : Ajouter au prototype Car :
1. la méthode `generateImage(elt)` qui, sans utiliser innerHTML, va créer une balise img qui aura comme source l'attribut image du prototype et comme alt, attribut make concaténé à model. En plus, ajouter les classes img-fluid, rounded-top et w-100. 1. la méthode `generateImage(elt)` qui, sans utiliser innerHTML, va créer une balise img qui aura comme source l'attribut image du prototype et comme alt, attribut make concaténé à model. En plus, ajouter la classe `card-img-top` .
1. la méthode `generateExtras(elt)` qui, sans utiliser innerHTML, va créer une balise ul, puis, pour chaque Extra, une balise li qui contiendra le nom concaténé au prix. 1. la méthode `generateExtras(elt)` qui, sans utiliser innerHTML, va créer une balise ul, puis, pour chaque Extra, une balise li qui contiendra le nom concaténé au prix.
Ces 2 méthodes doivent ajouter l'élément créé à celui passé en paramètre. Ces 2 méthodes doivent ajouter l'élément créé à celui passé en paramètre.
completer la fonction showHideExtra de maniére a : completer la fonction `showHideExtra` de maniére a :
1. afficher `+` sur le boutton si les extras sont masqué et `-` sinon 1. afficher `+` sur le boutton si les extras sont masqué et `-` sinon
1. afficher ou masquer la liste des extras en utilisant `car.generateExtras()` 1. afficher ou masquer la liste des extras en utilisant les fonctions du prototype Car
Département Informatique Département Informatique
BUT Info 2 - 2022/2023 BUT Info 2 - 2023/2024
Applications Web Applications Web
Khraimeche Salim. Khraimeche Salim.
\ No newline at end of file
...@@ -36,10 +36,8 @@ ...@@ -36,10 +36,8 @@
<script> <script>
function generateCar(image, make, model, description, price, category, year, mileage, extras) { function generateCar(image, make, model, description, price, category, year, mileage, extras) {
// Créer un tableau d'instances d'Extra à partir des noms d'extras //Create an array of Extra instances based on Extras names and prices
// Create a new Car instance
// Créer une nouvelle instance de Car
} }
function showHideExtra(btn,elt,car) { function showHideExtra(btn,elt,car) {
......
...@@ -105,31 +105,35 @@ const cars = [ ...@@ -105,31 +105,35 @@ const cars = [
const app = document.getElementById('app'); const app = document.getElementById('app');
let index = 0; let index = 0;
let s = "";
for (const car of cars) { for (const car of cars) {
if(car !== undefined) if(car !== undefined)
{ {
index++; index++;
app.innerHTML += `<div class="col"> s += `<div class="col">
<div class="card h-100"> <div class="card h-100">
<div id="img-car-${index}"></div> <div id="img-car-${index}"></div>
<div class="card-body"> <div class="card-body">
<h5 class="card-title">${car.make} ${car.model}</h5> <h5 class="card-title">${car.make} ${car.model}</h5>
<p class="card-text">${car.description}</p> <p class="card-text">${car.description}</p>
<ul class="list-group list-group-flush"> <ul class="list-group list-group-flush">
<li class="list-group-item">Prix: ${car.price} €</li> <li class="list-group-item">Catégorie: ${car.category} </li>
<li class="list-group-item">Année: ${car.year}</li> <li class="list-group-item">Prix: ${car.price} €</li>
<li class="list-group-item">Kilométrage: ${car.mileage} </li> <li class="list-group-item">Année: ${car.year}</li>
</ul> <li class="list-group-item">Kilométrage: ${car.mileage} </li>
<button class="float-end btn btn-secondary" id="btn-car-${index}" data-index="${index-1}">-</button> </ul>
<div id="body-car-${index}" class="body-extra"></div> <button class="float-end btn btn-secondary" id="btn-car-${index}" data-index="${index-1}">-</button>
</div> <div id="body-car-${index}" class="body-extra"></div>
</div> </div>
</div>` </div>
</div>`
} }
} }
app.innerHTML += '</div>' s += '</div>'
app.innerHTML = s
index =0; index =0;
for (const car of cars) { for (const car of cars) {
...@@ -142,6 +146,7 @@ for (const car of cars) { ...@@ -142,6 +146,7 @@ for (const car of cars) {
if(car.generateExtras !== undefined) if(car.generateExtras !== undefined)
car.generateExtras(document.getElementById("body-car-"+ index)); car.generateExtras(document.getElementById("body-car-"+ index));
document.getElementById("btn-car-"+ index).addEventListener('click',(event)=>{ showHideExtra(event.target,event.target.parentElement.querySelector('.body-extra'),cars[event.target.getAttribute('data-index')]) }); document.getElementById("btn-car-"+ index).addEventListener('click',(event)=>{ showHideExtra(event.target,event.target.parentElement.querySelector('.body-extra'),cars[event.target.getAttribute('data-index')]) });
} }
......