DDorch / jacase

JAvascript CAlculators for Scientific Equations
http://hydraulique.g-eau.net/-Calculettes-pour-l-hydraulique-
MIT License
0 stars 0 forks source link

User interface pour la bibliothèque de calculettes #13

Closed DDorch closed 8 years ago

DDorch commented 8 years ago

La bibliothèque va prendre la forme d'une barre de navigation à gauche de l'écran qui permette de choisir avec quelle calculette travailler.

La barre de navigation peut être créée avec sidenav de Angular-material https://github.com/angular/material2/tree/master/src/demo-app/sidenav. On pourra s'inspirer du projet de démonstration d'utilisation de angular-material https://github.com/jelbourn/material2-app.

Pour lister les calculettes disponibles, on lira les informations dans le fichier jacase.config.json (cf. #10).

Ensuite pour charger les calculettes, je suppose qu'il faudra s'intéresser aux routers (https://angular.io/docs/ts/latest/guide/router.html).

DDorch commented 8 years ago

Pour construire l'architecture de l'interface utilisateur de notre application, on devrait pouvoir se baser sur la structuration proposée dans la doc officielle (https://angular.io/docs/ts/latest/guide/router.html#router-links).

Ils ont un template qui se présente comme cela :

<h1>Component Router</h1>
<nav>
    <a routerLink="/crisis-center" routerLinkActive="active">Crisis Center</a>
    <a routerLink="/heroes" routerLinkActive="active">Heroes</a>
</nav>
<router-outlet></router-outlet>

Dans <nav></nav>, il y aurait pour nous la liste des calculettes et dans <router-outlet></router-outlet> la calculette choisie.

Pour mettre en oeuvre le router, il suffit de suivre les instructions de la doc :

Ici la liste des calculettes est définie statiquement dans le code et pas dynamiquement à partir d'un fichier json comme on souhaite le faire. Je te propose de procéder par étape en se basant sur l'exemple de la documentation pour maîtriser les routers et réussir à faire marcher deux calculettes dans notre application. On creusera la question de comment rendre ça dynamique une fois qu'on aura une première version à deux calculettes qui marche. Une chose est sûr, rendre la liste des calculettes dynamique sera sûrement un peu complexe étant donné que la requête json est asynchrone...

DDorch commented 8 years ago

L'ensemble du code source de l'exemple de la doc officielle se trouve ici : https://angular.io/resources/live-examples/router/ts/plnkr.html

Ça aide pour faire le parallèle entre les fichiers de l'exemple et la structuration de l'application.

DDorch commented 8 years ago

J'ai trouvé la solution pour charger dynamiquement les routers à partir d'un json: http://stackoverflow.com/questions/36429843/async-load-routes-data-and-build-route-instruction-for-angular-2#answer-36431396

L'appli est bootstrapée quand le json est chargé grâce à la méthode subscribe. C'est la même technique qu'on a utilisé pour résoudre l'initialisation des boutons radios à partir du json dans #2.

manalaf commented 8 years ago

Je travaille sur les routers depuis hier après-midi. Je modifierai les config.json après avoir réussi à charger les calculettes à partir du main.html.

manalaf commented 8 years ago

Quand je clique sur le lien, les fichiers auxquels on doit etre renvoyé se chargent: GET XHR http://localhost:3000/app/common/formulaire.html et l'url change aussi mais rien ne s'affiche sur le router-outlet.

DDorch commented 8 years ago

J'ai du effectuer quelques corrections (cf. #19) pour faire marcher le code. Maintenant, j'arrive à avoir les deux calculettes. Par contre les boutons radio ne fonctionnent plus correctement. Ils se sélectionnent systématiquement par ligne entière. Par contre, si on fait abstraction de l'affichage des boutons, il semble que tout se passe bien en mémoire car on arrive à lancer les calculs.

manalaf commented 8 years ago

Je suis entrain de tester le sidenav sur une autre application pour bien comprendre comment ça marche et pouvoir l'integrer à jacase par la suite.

DDorch commented 8 years ago

Super ! Un menu escamotable avec les calculettes qui s'affichent quand on clique !

Est-ce qu'il y a moyen de modifier la mise en forme ? J'ai quelques petites doléances :

La première doléance doit pouvoir se régler avec un data-binding. Les autres concernent le mise en forme, je ne sais pas s'il y a des paramètres dans la mise en œuvre de la sidenav ou s'il faut redéfinir les styles de la navbar avec ses propres css dans le composant (voir comment faire avec https://scotch.io/tutorials/all-the-ways-to-add-css-to-angular-2-components).

manalaf commented 8 years ago

Le bandeau dont tu parles est bien le bandeau bleu-vert ?

manalaf commented 8 years ago

"Faire apparaître le menu au dessus des calculettes au lieu de les décaler vers la droite": Le sidenav n'apparaitra plus après avoir sélectionné la calculette, donc elle n'apparaitra pas à droite. Je n'ai pas compris ce que tu veux dire par "au dessus", si le menu est au dessus alors ça ne sera plus un sidenav ?

manalaf commented 8 years ago

Quand on selectionne une calculette et on initialise la page juste après, elle reste chargée. ça nous renvoit pas au menu avant selection qu'on retrouve après le "npm start". Quand j'ai rétréci la largeur du menu, le texte est coupé il n'apparait pas en entier. Je pensais que les titres relativement longs allaient apparaitre en deux lignes.

DDorch commented 8 years ago

Pour le bandeau, je veux parler de celui en haut de la page où il y a le bouton pour faire apparaître le sidenav et un titre.

Quand je dis "par dessus", je veux dire à la façon de cet exemple pour le bandeau à droite : https://material.angularjs.org/latest/demo/sidenav (Cliquer sur "TOGGLE RIGHT" pour faire apparaître le sidenav).

DDorch commented 8 years ago

Good job ! Ça commence à avoir de la gueule !

Mission menu calculette réussie !