Ceci est une ancienne révision du document !
TD n°2
Prérequis :
--Exercice : choix multiples
-- Objectifs
- Créer un module et un contrôleur
- Utiliser des directives Angular
- Mettre en oeuvre le Data-binding
-- Fonctionnalités
- Lister les produits disponibles
- Ajouter un ou plusieurs produits disponibles aux produits sélectionnés
- Ajouter tous les produits disponibles aux produits sélectionnés
- Retirer un ou plusieurs produits sélectionnés
- Retirer tous les produits sélectionnés
- Valider le choix de produits sélectionnés
- Revenir au choix des produits
-- Application/Contrôleurs
| Application | ListesApp (app/listesApp.js) |
|---|---|
| Contrôleur | ListesController (app/listesController.js) |
| dispoItems Tableau des produits disponibles défini en JSON |
|
| includedItems Tableau des produits à inclure |
|
| selectedDispoItems Tableau des éléments sélectionnés dans la liste des produits disponibles |
|
| selectedIncludedItems Tableau des éléments sélectionnés dans la liste des produits à inclure |
|
| step Variable d'état agissant sur les vues et prenant les valeurs 1 : choix des produits ou 2 : visualisation du choix |
|
| addToIncluded() Ajoute les produits disponibles en surbrillance (selectedDispoItems) à la liste des produits à inclure (includedItems) |
|
| addAllToIncluded() Ajoute tous les produits disponibles (dispoItems) à la liste des produits à inclure (includedItems) |
|
| removeFromIncluded() Retire les produits sélectionnés en surbrillance (selectedIncludedItems) pour les remettre dans la liste des produits disponibles (items) |
|
| RemoveAllFromIncluded() Retire tous les produits à inclure (includedItems) pour les remettre dans la liste des produits disponibles (items) |
dispoItems : à intégrer dans le contrôleur
[
{
url: 'http://tutorialzine.com/2013/07/50-must-have-plugins-for-extending-twitter-bootstrap/',
title: '50 Must-have plugins for extending Twitter Bootstrap',
image: 'http://cdn.tutorialzine.com/wp-content/uploads/2013/07/featured_4-100x100.jpg'
},
{
url: 'http://tutorialzine.com/2013/08/simple-registration-system-php-mysql/',
title: 'Making a Super Simple Registration System With PHP and MySQL',
image: 'http://cdn.tutorialzine.com/wp-content/uploads/2013/08/simple_registration_system-100x100.jpg'
},
{
url: 'http://tutorialzine.com/2013/08/slideout-footer-css/',
title: 'Create a slide-out footer with this neat z-index trick',
image: 'http://cdn.tutorialzine.com/wp-content/uploads/2013/08/slide-out-footer-100x100.jpg'
},
{
url: 'http://tutorialzine.com/2013/06/digital-clock/',
title: 'How to Make a Digital Clock with jQuery and CSS3',
image: 'http://cdn.tutorialzine.com/wp-content/uploads/2013/06/digital_clock-100x100.jpg'
},
{
url: 'http://tutorialzine.com/2013/05/diagonal-fade-gallery/',
title: 'Smooth Diagonal Fade Gallery with CSS3 Transitions',
image: 'http://cdn.tutorialzine.com/wp-content/uploads/2013/05/featured-100x100.jpg'
},
{
url: 'http://tutorialzine.com/2013/05/mini-ajax-file-upload-form/',
title: 'Mini AJAX File Upload Form',
image: 'http://cdn.tutorialzine.com/wp-content/uploads/2013/05/ajax-file-upload-form-100x100.jpg'
},
{
url: 'http://tutorialzine.com/2013/04/services-chooser-backbone-js/',
title: 'Your First Backbone.js App – Service Chooser',
image: 'http://cdn.tutorialzine.com/wp-content/uploads/2013/04/service_chooser_form-100x100.jpg'
}
]
-- Vues
-- Directives utilisées
- ng-app
- ng-controller
- Expressions {{expression}}
-- Interface
step==1 :
step==2 :
-- Logique applicative / comportement de l'interface
- Les 4 boutons d'ajout ou de retrait des services à inclure s'activent ou se désactive (disabled) en fonction du contenu des listes et/ou des éléments sélectionnés
- bouton ▶| : ajoute le(s) élément(s) sélectionnés de la liste de gauche à la liste de droite
- bouton ▶▶| : ajoute tous les éléments sélectionnés de la liste de gauche à la liste de droite
- bouton |◀ : retire le(s) élément(s) sélectionnés de la liste de droite et les place dans la liste de gauche
- bouton |◀◀ : retire tous les éléments sélectionnés de la liste de droite et les place dans la liste de gauche
- Un double clic sur l'un des éléments des 2 listes ajoute ou retire l'élément et le passe dans la liste associée
- Le nombre de produits inclus se met à jour en fonction du nombre d'éléments dans la liste de droite
- Le passage à l'étape suivante n'est possible que si la liste de droite n'est pas vide
- le bouton “Passer à l'étape suivante” affiche la vue suivante (en passant step à 2)
- la vue affiche la liste des éléments ajoutés dans les éléments à inclure
-- Exercice : Gestion des contacts
-- Objectifs
- Utiliser la directive ngRepeat
- Utiliser la validation des formulaires
- Créer des directives simples
-- Fonctionnalités
- Obtenir la liste des contacts et la filtrer
- Ajouter un contact dans la liste
- Modifier un contact existant
- Supprimer un contact
-- Application/Contrôleurs
| Application | ContactApp (app/ContactApp.js) |
|---|---|
| Contrôleur | ContactController (app/contactController.js) |
| contacts Tableau des contacts existants |
|
| contact Variable contenant le contact à modifier |
|
| tmpContact Variable contenant le contact modifié par le formulaire |
|
| operation Chaîne indiquant la modification ou l'ajout d'un contact |
|
| edit Contrôle l'affichage du formulaire d'ajout/modification |
|
| toUpdate(contact) Affiche le formulaire de modification du contact |
|
| toAdd() Affiche le formulaire d'ajout d'un contact |
|
| add() Ajoute le contact |
|
| update() Met à jour la liste des contacts après validation du formulaire (ajout ou modif) |
|
| delete(contact) Supprime de la liste le contact |
-- Vue
-- Directives utilisées
- ng-app
- ng-controller
- ng-click
- ng-model
-- Directives à créer
A placer dans app/directives.js
| Nom | Description |
|---|---|
| contactElem | Permet d'afficher un contact sur une ligne de tableau |
| frmContact | Affiche un formulaire de contact |
-- Interface
-- Logique applicative / comportement de l'interface
- Zone filter : filtre l'ensemble des contacts affichés.
- Boutons :
- [x] : supprime le contact associé
- […] : affiche le formulaire de modification du contact
- Ajouter : affiche le formulaire d'ajout de contact
- Formulaire d'ajout/modification
- Le champ nom est obligatoire
- Le champ mail doit comporter une adresse email valide
- Le bouton Valider ajoute le contact à la liste des contacts et masque le formulaire
- Le bouton Annuler masque le formulaire
-- Exercice : Convertisseur de devises
-- Objectifs
- Utiliser des services Angular existants
- Mettre en oeuvre l'injection de dépendance
-- Fonctionnalités
- Saisir un montant dans une devise source
- Sélectionner la devise cible
- Calculer la conversion à partir des taux courants
- Effectuer l'opération inverse (échange des devises)
-- Ressources à utiliser
- Télécharger le fichier currencymap.json sur le site Locale Planet
- Enregistrer le dans le dossier app/data ( à créer) de votre projet
Ce fichier JSON va permettre l'initialisation des listes de monnaies affichées dans l'application
Pour l'obtention des taux de change, on utilisera l'API Currency sur http://rate-exchange.appspot.com/ via Ajax et JSONP
Exemple d'interrogation :
http://rate-exchange.appspot.com/currency?from=USD&to=EUR&q=1
Résultat JSON :
{"to": "EUR", "rate": 0.83329500000000001, "from": "USD", "v": 0.83329500000000001}
-- Application/Contrôleurs
| Application | CurrenyApp (app/currencyApp.js) |
|---|---|
| Contrôleur | CurencyController (app/currencyController.js) |
| currencies variable Objet stockant la liste des monnaies alimentée par le fichier JSON currencymap.json au démarrage du contrôleur |
|
| from variable stockant la monnaie source (à initialiser en euro) |
|
| to variable stockant la monnaie cible (à initialiser en dollars US) |
|
| what variable stockant le montant à convertir (à initialiser à 1) |
|
| result variable donnant le résultat de la conversion |
|
| getResult() Retourne le résultat en effectuant une requête JSONP vers l'adresse rate-exchange.appspot.com Modifie en retour la variable result |
|
| swap() Echange la monnaie source et la monnaie cible |
-- Vue
-- Directives utilisées
- ng-app
- ng-controller
- ng-click
- ng-model
-- Interface
-- Idées de prolongement possible
- Ajouter la liste des conversions déjà effectuées (les 2 monnaies, le sens , le tx et la date/heure de conversion)
- Vider cette liste
-- Application en ligne
-- Exercice : Calculatrice
-- Objectifs
- Créer un service (moteur de la calculatrice)
- Utiliser un service (Injection de dépendance)
- Créer des directives
-- Fonctionnalités
- Faire des calculs simples
- Mémoriser un résultat
- Eteindre/allumer calculatrice


