Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
T
TP3 - API DOM
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Hugo Dautricourt
TP3 - API DOM
Commits
eea86dd2
Commit
eea86dd2
authored
5 years ago
by
AeeRo
Browse files
Options
Downloads
Patches
Plain Diff
ajout tp3
parent
9e45c289
No related branches found
No related tags found
No related merge requests found
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
js/PageRenderer.js
+1
-0
1 addition, 0 deletions
js/PageRenderer.js
js/main.js
+83
-0
83 additions, 0 deletions
js/main.js
js/pages/AddPizzaPage.js
+108
-0
108 additions, 0 deletions
js/pages/AddPizzaPage.js
js/pages/Page.js
+8
-0
8 additions, 0 deletions
js/pages/Page.js
package.json
+1
-1
1 addition, 1 deletion
package.json
with
201 additions
and
1 deletion
js/PageRenderer.js
+
1
−
0
View file @
eea86dd2
...
@@ -9,5 +9,6 @@ export default class PageRenderer {
...
@@ -9,5 +9,6 @@ export default class PageRenderer {
if
(
this
.
contentElement
)
{
if
(
this
.
contentElement
)
{
this
.
contentElement
.
innerHTML
=
page
.
render
();
this
.
contentElement
.
innerHTML
=
page
.
render
();
}
}
page
.
mount
(
this
.
contentElement
);
}
}
}
}
This diff is collapsed.
Click to expand it.
js/main.js
+
83
−
0
View file @
eea86dd2
import
data
from
'
./data.js
'
;
import
data
from
'
./data.js
'
;
import
HomePage
from
'
./pages/HomePage.js
'
;
import
HomePage
from
'
./pages/HomePage.js
'
;
import
PageRenderer
from
'
./PageRenderer.js
'
;
import
PageRenderer
from
'
./PageRenderer.js
'
;
import
AddPizzaPage
from
'
./pages/AddPizzaPage.js
'
;
// Initialisation du PageRenderer
// Initialisation du PageRenderer
PageRenderer
.
titleElement
=
document
.
querySelector
(
'
.pageTitle
'
);
PageRenderer
.
titleElement
=
document
.
querySelector
(
'
.pageTitle
'
);
...
@@ -8,10 +9,92 @@ PageRenderer.contentElement = document.querySelector('.pizzasContainer');
...
@@ -8,10 +9,92 @@ PageRenderer.contentElement = document.querySelector('.pizzasContainer');
// Affichage de la HomePage
// Affichage de la HomePage
const
homePage
=
new
HomePage
(
data
);
const
homePage
=
new
HomePage
(
data
);
const
pizzaPage
=
new
AddPizzaPage
();
PageRenderer
.
renderPage
(
homePage
);
// affiche la liste des pizzas
PageRenderer
.
renderPage
(
homePage
);
// affiche la liste des pizzas
pizzaPage
.
onSubmit
=
function
(
nom
,
base
,
image
,
prix_petite
,
prix_grande
,
ingredients
)
{
const
pizza
=
{
nom
,
base
,
prix_petite
:
Number
(
prix_petite
),
prix_grande
:
Number
(
prix_grande
),
image
,
};
data
.
push
(
pizza
);
homePage
.
pizzas
=
data
;
PageRenderer
.
renderPage
(
homePage
);
};
//
//
// On aurait aussi pu faire ceci :
// On aurait aussi pu faire ceci :
//
//
// const homePage = new HomePage([]);
// const homePage = new HomePage([]);
// homePage.pizzas = data;
// homePage.pizzas = data;
// PageRenderer.renderPage(homePage); // affiche la liste des pizzas
// PageRenderer.renderPage(homePage); // affiche la liste des pizzas
// --- Partie A --- //
//console.log(document.querySelector('.pageTitle'));
//console.log(document.querySelector('img'));
//console.log(document.querySelector('.pizzaFormButton'));
//console.log(document.querySelector('footer a'));
//console.log(document.querySelector('h4'));
//console.log(document.querySelectorAll('li a'));
//console.log(document.querySelectorAll('section ul li'));
document
.
querySelector
(
'
.navbar-brand
'
).
innerHTML
+=
`<small class="label label-success">les pizzas c'est la vie</small>`
;
document
.
querySelector
(
'
h4
'
).
innerHTML
=
`<h4>Savoyarde</h4>`
;
document
.
querySelector
(
'
li
'
).
setAttribute
(
'
class
'
,
'
active
'
);
console
.
log
(
document
.
querySelectorAll
(
'
footer a
'
)[
1
]);
function
handleClick
(
event
)
{
event
.
preventDefault
();
console
.
log
(
event
);
}
const
link
=
document
.
querySelector
(
'
a
'
);
link
.
addEventListener
(
'
click
'
,
handleClick
);
function
messageClick
(
event
)
{
event
.
preventDefault
();
console
.
log
(
event
.
currentTarget
.
innerHTML
);
document
.
querySelectorAll
(
'
.navbar-right li
'
).
forEach
(
element
=>
{
element
.
setAttribute
(
'
class
'
,
''
);
});
event
.
currentTarget
.
setAttribute
(
'
class
'
,
'
active
'
);
}
document
.
querySelectorAll
(
'
.navbar-right li
'
).
forEach
(
element
=>
{
element
.
addEventListener
(
'
click
'
,
messageClick
);
});
document
.
querySelector
(
'
.newsContainer
'
)
.
setAttribute
(
'
style
'
,
'
display:initial
'
);
function
closeNewsContainer
(
event
)
{
event
.
preventDefault
();
document
.
querySelector
(
'
.newsContainer
'
)
.
setAttribute
(
'
style
'
,
'
display:none
'
);
}
function
showAddPizza
(
event
)
{
PageRenderer
.
renderPage
(
pizzaPage
);
}
document
.
querySelector
(
'
.closeButton
'
)
.
addEventListener
(
'
click
'
,
closeNewsContainer
);
document
.
querySelector
(
'
.pizzaFormButton
'
)
.
addEventListener
(
'
click
'
,
showAddPizza
);
This diff is collapsed.
Click to expand it.
js/pages/AddPizzaPage.js
0 → 100644
+
108
−
0
View file @
eea86dd2
import
Page
from
'
./Page.js
'
;
import
PageRenderer
from
'
../PageRenderer.js
'
;
export
default
class
AddPizzaPage
extends
Page
{
onSubmit
;
constructor
()
{
super
(
'
Ajouter une pizza
'
);
this
.
submit
=
this
.
submit
.
bind
(
this
);
}
render
()
{
return
/*html*/
`
<form class="addPizzaPage">
<label>
Nom :
<input type="text" name="nom" class="form-control">
</label>
<label>
Base :
<select name="base" class="form-control">
<option>Tomate</option>
<option>Crème</option>
</select>
</label>
<label>
Image :
<input type="text" name="image" class="form-control" placeholder="https://...">
</label>
<label>
Prix petit format :
<input type="number" name="prix_petite" class="form-control" step="0.05">
</label>
<label>
Prix grand format :
<input type="number" name="prix_grande" class="form-control" step="0.05">
</label>
<label>
Ingrédients :
<select name="ingredients" multiple="true" class="form-control">
<option value="1">Mozzarella</option>
<option value="2">Jambon</option>
<option value="3">Champignon</option>
<option value="4">Olives</option>
</select>
</label>
<button type="submit" class="btn btn-default">Ajouter</button>
<a class="btn btn-default btn-ingredient">Ajouter Ingrédients</a>
</form>
`
;
}
renderIngredient
()
{
return
/*html*/
`
<form class="addIngredientPage">
<label>
Nom :
<input type="text" name="nom" class="form-control">
</label>
<button type="submit" class="btn btn-default">Ajouter</button>
</form>
`
;
}
mount
(
element
)
{
const
form
=
document
.
querySelector
(
'
.addPizzaPage
'
);
form
.
addEventListener
(
'
submit
'
,
this
.
submit
);
const
pageIngredient
=
this
.
renderIngredient
();
document
.
querySelector
(
'
.btn-ingredient
'
);
}
submit
(
event
)
{
event
.
preventDefault
();
const
nom
=
document
.
querySelector
(
'
input[name="nom"]
'
).
value
;
const
base
=
document
.
querySelector
(
'
select[name="base"]
'
).
selectedOptions
;
const
image
=
document
.
querySelector
(
'
input[name="image"]
'
).
value
;
const
prix_petite
=
document
.
querySelector
(
'
input[name="prix_petite"]
'
)
.
value
;
const
prix_grande
=
document
.
querySelector
(
'
input[name="prix_grande"]
'
)
.
value
;
const
ingredients
=
document
.
querySelector
(
'
select[name="ingredients"]
'
)
.
selectedOptions
;
if
(
nom
==
''
||
base
.
length
==
0
||
image
==
''
||
prix_petite
==
''
||
prix_grande
==
''
||
ingredients
.
length
==
0
)
{
alert
(
'
Il manque des valeurs Timothé
'
);
}
else
{
console
.
log
(
"
Demande d'ajout de :
"
+
nom
+
base
+
image
+
prix_petite
+
prix_grande
+
ingredients
);
event
.
currentTarget
.
reset
();
debugger
;
this
.
onSubmit
(
nom
,
base
,
image
,
prix_petite
,
prix_grande
,
ingredients
);
}
}
}
This diff is collapsed.
Click to expand it.
js/pages/Page.js
+
8
−
0
View file @
eea86dd2
...
@@ -11,4 +11,12 @@ export default class Page extends Component {
...
@@ -11,4 +11,12 @@ export default class Page extends Component {
renderTitle
()
{
renderTitle
()
{
return
`<h1>
${
this
.
title
}
</h1>`
;
return
`<h1>
${
this
.
title
}
</h1>`
;
}
}
mount
(
element
)
{
// Cette méthode sera appelée par PageRenderer après chaque render()
// par défaut, cette méthode ne fait rien
// ce sont les classes filles qui devront surcharger cette méthode
}
}
}
This diff is collapsed.
Click to expand it.
package.json
+
1
−
1
View file @
eea86dd2
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment