Ceci est une ancienne révision du document !
TD n°4
![]() | Ce projet utilise Semantic-UI pour la partie CSS. ember install semantic-ui-ember |
- Projet boards
- Application gestion de projets SCRUM
Objectifs
- Se connecter à un service web externe
- Créer des composants
- Manipuler les models
Contexte
Vous travaillez sur un outil permettant de gérer des projets.
Voici les principales caractéristiques du système d'information :
- Chaque projet [project] possède un nom, un descriptif, une date de début et de fin, et un propriétaire (owner, qui est un développeur)
- L'équipe est constituée d'un ensemble de développeurs [developer].
- Chaque User story [story] a un code et un descriptif, et appartient à un projet.
- Il est possible de lui apposer des tags [tags], composés d'une couleur et d'un label.
- Elle peut être affectée à un développeur[dev] (qui a juste une identité).
- Elle peut contenir une liste de tâches [tasks], à réaliser ou réalisées.
Création de la base de données
Démarrer mongoDb :
mongod
Démarrer le serveur restheart :
java -jar restheart.jar
Créer les collections suivantes dans la base de données mongoDb boards :
- projects
- developers
- steps
- stories
- tags
- tasks
Exemple : Dans la console mongo :
use boards db.createCollection('developers',{})
Création du projet, intégration des composants
Créer le projet boards
Ajouter le plugin ember-cli-uuid pour la génération d'uuid côté client :
ember install ember-cli-uuid
Adapter & serializer
Générer l'adapter pour l'application :
ember g adapter applicationModifier l'adapter comme ci-dessous :
import DS from 'ember-data'; import { pluralize } from 'ember-inflector'; var Adapater=DS.RESTAdapter.extend({ ajaxOptions: function(url, type, options) { var hash = this._super(url, type, options); if (type == 'POST' || type=='PUT') { hash.dataType = 'text'; } return hash; }, host:'http://127.0.0.1:8080', namespace: 'boards', urlForDeleteRecord(id, modelName) { modelName=pluralize(modelName); return this.get('host')+'/'+this.get('namespace')+`/${modelName}/*?filter={_id:'${id}'}`; } }); export default Adapater;
Générer le serializer pour l'application :
ember g serializer applicationModifier le serializer comme ci-dessous :
import DS from 'ember-data'; export default DS.JSONSerializer.extend({ primaryKey: '_id', isNewSerializerAPI: true, extractId: function (modelClass, resourceHash) { if(resourceHash._id) return (resourceHash._id.$oid || resourceHash._id); }, normalizeResponse(store, primaryModelClass, payload, id, requestType) { if(requestType=='createRecord') return this._super(store, primaryModelClass, {}, id, requestType); if(requestType=='updateRecord') return this._super(store, primaryModelClass, {}, id, requestType); if(requestType=='deleteRecord') return this._super(store, primaryModelClass, null, id, requestType); if (payload._embedded) return this._super(store, primaryModelClass, payload._embedded, id, requestType); return this._super(store, primaryModelClass, payload, id, requestType); }, serializeId (snapshot, json) { let id = snapshot.id; json['_id'] = id; } });
Partie Administration
Créer les models project et developer, ajouter les membres.