-
Notifications
You must be signed in to change notification settings - Fork 8
Développer sa première application hypertopique
- Sur www.npmjs.org :
- Cherchez le paquetage
hypertopic. - Choisissez de le tester en ligne ("Test hypertopic in your browser").
- Cherchez le paquetage
- À partir d'éléments de code glanés dans la documentation (à droite), interrogez les serveurs (les vrais : enlevez
testdans l'URI) pour avoir la liste des corpus de l'utilisateurvitraux.- Lors de la construction de l'objet Hypertopic, pourquoi y a-t-il plusieurs serveurs ?
- D'après vous que fait le premier traitement de la chaîne (
getView) ? Combien de fois ? - Étudiez le deuxième traitement de la chaîne. Que fait cette fonction mais surtout quand et à partir de quelles données ? Qu'en déduisez-vous sur ce que l'on pourra qualifier de "promesse" ?
- À partir du code permettant d'obtenir le contenu des points de vue et des corpus d'un utilisateur.
- Étudiez le second traitement de la chaîne ? Comment comprenez-vous cette nouvelle notation "fléchée" ? Que fait exactement cette fonction ? Simplifiez la pour avoir en bout de chaîne uniquement le contenu des corpus (et plus des points de vue).
- Adaptez l'URI pour demander les attributs de ces mêmes corpus (en se basant sur le protocole). Dans le résultat, quel attribut correspond au lieu ?
- Adaptez l'URI pour demander les valeurs de cet attribut (en se basant sur le protocole).
- Traitez les données (en une ou plusieurs étapes) :
- pour n'avoir que le second niveau des données (avec
Object.values()d'ES 2017), - pour n'avoir que le troisième niveau (celui des lieux),
- pour ne garder que les clefs (avec
Object.keys()d'ES 2015), - pour que les listes de lieux soient fusionnées (avec
concatetreduced'ES 2011), - pour que les doublons soient supprimés (avec
Array.frometnew Setd'ES 2015), - pour que seul les lieux qui sont à Troyes soient conservés (avec
filterd'ES 2011).
- pour n'avoir que le second niveau des données (avec
Pré-requis : Avoir une version à jour de Node sur son poste.
-
Toujours en ligne de commande, créez votre projet (si possible sur le bureau) :
npx create-react-app vitraux-a-troyes -
Faites ensuite ce que l'écran vous suggère de faire.
-
En gardant le navigateur ouvert, suivez les instructions pour remplacer le message d'accueil de votre application par
Où voir des vitraux à Troyes ?. Que se passe-t-il quand vous enregistrez cette modification ? -
Dans le composant
App, mettez à la suite du titre un appel à un nouveau composant :<CityMap/>. Définissez le à la suite sous la forme d'une classe :
class CityMap extends React.Component {
render() {
return (
<p>Ma carte de Troyes</p>
);
}
}Enregistrez et corriger éventuellement les erreurs qui apparaissent dans le navigateur.
- Modifiez le code de la méthode
renderafin de remplacer le texte par une image dont l'URI esthttps://maps.googleapis.com/maps/api/staticmap?center=Troyes&size=600x480&zoom=14&key=API_KEY(remplacezAPI_KEYpar une clef obtenue auprès de Google). Enregistrez et corriger éventuellement les erreurs qui apparaissent dans le navigateur. - Dans votre classe, ajoutez une méthode "constructeur" :
constructor() {
super();
this.state = {places:["Office du tourisme, Troyes"]};
}Puis, au début de la méthode render, la ligne suivante :
let markers = this.state.places.map(x => `&markers=${x}`);Remplacez enfin l'URI de l'image par la concaténation de la chaîne existante et de markers.
Enregistrez et observez le résultat dans le navigateur. Interprétez la manière dont cela fonctionne.
-
Il est temps maintenant d'interroger les services Hypertopic... Dans un nouveau terminal, à l'intérieur du dossier du projet, installez la bibliothèque Hypertopic :
npm install hypertopic
Importez maintenant la bibliothèque dans votre fichier source.
- Dans votre classe, ajoutez une méthode
componentDidMountet copiez-collez le code de la première partie du TD. En lieu et place de la fonction d'affichage (_log), mettez la fonction suivante :
x => this.setState({places: x})Enregistrez et observez le résultat dans le navigateur.
Bravo 👏👩🏽🎓👨🎓🍾🥇🎉 Vous avez fabriqué votre première application hypertopique !!!
En espérant que cette première application vous donnera envie d'en faire beaucoup d'autres ! 😉