Skip to content
Snippets Groups Projects
Commit f74a2553 authored by Mathis Verleene's avatar Mathis Verleene
Browse files

C

parent 92d761a1
No related branches found
No related tags found
No related merge requests found
...@@ -78,4 +78,4 @@ window.onpopstate = () => Router.navigate(document.location.pathname, false); ...@@ -78,4 +78,4 @@ window.onpopstate = () => Router.navigate(document.location.pathname, false);
window.onpopstate(); window.onpopstate();
fetch('./news.html') fetch('./news.html')
.then(response => response.text()) .then(response => response.text())
.then(responseText => console.log(responseText)); .then(response => console.log(responseText));
import Page from './Page.js'; import Page from './Page.js';
import Router from '../Router';
export default class AddPizzaPage extends Page { export default class AddPizzaPage extends Page {
render() { render() {
...@@ -8,6 +9,19 @@ export default class AddPizzaPage extends Page { ...@@ -8,6 +9,19 @@ export default class AddPizzaPage extends Page {
Nom : Nom :
<input type="text" name="name"> <input type="text" name="name">
</label> </label>
<label>
Image :<br/>
<input type="text" name="image" placeholder="https://source.unsplash.com/xxxxxxx/600x600">
<small>Vous pouvez trouver des images de pizza sur <a href="https://unsplash.com/">https://unsplash.com/</a> puis utiliser l'URL <code>https://source.unsplash.com/xxxxxxx/600x600</code> où <code>xxxxxxx</code> est l'id de la photo choisie (celui dans la barre d'adresse)</small>
</label>
<label>
Prix petit format :
<input type="number" name="price_small" step="0.05">
</label>
<label>
Prix grand format :
<input type="number" name="price_large" step="0.05">
</label>
<button type="submit">Ajouter</button> <button type="submit">Ajouter</button>
</form>`; </form>`;
} }
...@@ -24,12 +38,29 @@ export default class AddPizzaPage extends Page { ...@@ -24,12 +38,29 @@ export default class AddPizzaPage extends Page {
submit() { submit() {
// D.4. La validation de la saisie // D.4. La validation de la saisie
const nameInput = this.element.querySelector('input[name="name"]'), const nameInput = this.element.querySelector('input[name="name"]'),
name = nameInput.value; imgInput = this.element.querySelector('input[name="image"]'),
smallInput = this.element.querySelector('input[name="price_small"]'),
bigInput = this.element.querySelector('input[name="price_large"]'),
name = nameInput.value,
img = imgInput.value,
small = smallInput.value,
big = bigInput.value;
if (name === '') { if (name === '') {
alert('Erreur : le champ "Nom" est obligatoire'); alert('Erreur : le champ "Nom" est obligatoire');
return; return;
} }
const pizza = {
name: name,
image: img,
price_small: Number(small),
price_large: Number(big),
};
alert(`La pizza ${name} a été ajoutée !`); alert(`La pizza ${name} a été ajoutée !`);
nameInput.value = ''; nameInput.value = '';
fetch('http://localhost:8080/api/v1/pizzas', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(pizza),
}).then(() => Router.navigate('/'));
} }
} }
...@@ -17,8 +17,8 @@ export default class PizzaList extends Page { ...@@ -17,8 +17,8 @@ export default class PizzaList extends Page {
super.mount(element); super.mount(element);
fetch('http://localhost:8080/api/v1/pizzas') fetch('http://localhost:8080/api/v1/pizzas')
.then(response => response.json()) .then(response => response.json())
.then(responseText => { .then(responseArrayPizza => {
this.pizzas = responseText; this.pizzas = responseArrayPizza;
element.innerHTML = this.render(); element.innerHTML = this.render();
}); });
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment