Gestion d'une cave à vins. consultation, mise à jour, rangement, création de casiers etc.
Le répertoire assets qui contient les images est accessible depuis n'importe quel template, n'importe quel SCSS via le path "../assets". La raison est que, au build, ionic crée en guis de contexte de serveur un répertoire "www" dans lequel on trouve, au premier niveau, le répertoire build et le répertoire assets. Dans le répertoire build, tout a été transpilé, minifié et webpackisé dans main.js, main.css. Tous les chemins indiqués à ce niveau doivent donc remonter d'un répertoire et redescendre dans assets. Conclusion: toutes les images, tous les fichiers contenus dans assets sont inclus via un chemin "../assets".
Feature | description | implémentée |
---|---|---|
liste des bouteilles | lister les bouteilles de la cave | oui |
recherche | recherche multicritères, par région, couleur, appellation, millésime... | oui |
recherche | recherche par mot clé | oui |
importer | importer la cave depuis cavus sous forme CSV | oui |
importer | importer la cave depuis cavus sous forme XLS | oui |
statistiques | gérer quelques statistiques | oui |
statistiques | les montrer graphiquement | oui |
importer | idéalement automatiser la connexion à cavus et récupérer le flux XLS | non |
stocker les factures | photographier une facture et l'associer à un lot de bouteilles | non |
gérer le login | identifier l'utilisateur (FB, tweeter, mail...) | mail, FB, ano |
authentifier l'utilisateur | gérer l'empreinte digitale | non |
mise à jour | mise à jour d'un lot de bouteille | partiel |
détail | lister les photos liées à une bouteille | non |
retirer une bouteille | mettre à jour le nombre de bouteilles restantes, saisir un court formulaire d'impression sur la bouteille | oui |
ranger les bouteilles | faciliter le travail pour retrouver les bouteilles rangées. pointer les emplacements, d'n'd pour déplacer ? etc. | oui |
recherche | compléter avec options 'bouteilles actuellement en cave' et 'vaforites seulement' | oui |
chargement | effectuer le chargement en background pour plus de fluidité, par blocs de 50 ? | non |
L'application repose sur le framework Ionic 3.20.x à fin mai 2018.
Ionic repose sur Angular 5.2.10 à fin mai 2018. Le routeur d'Angular n'est pour l'instant pas utilisable dans Ionic, Ionic fournit le sien, plus simple mais plus limité (notamment en terme de gardes, resolvers et children pages)
Firebase est une DB NoSql hébergée par Google. Gratuite pour les petits volumes, elle est très intéressante car elle permet le databinding direct entre le GUI et la DB. Aucun backend n'est nécessaire. Elle s'appuie énormément sur les Promises et donc les observables.
Angular est bâti sur RXJS. Je me suis très fortement appuyé sur RXJS afin d'améliorer au mieux les performances de l'application Angular sous-jacente (ChangeDetectionStrategy.OnPush) et également pour respecter la philosophie "réactive" d'Angular
L'application était devenue trop complexe et difficilement maintenable. Les données étaient manipulées dans toutes les pages, tous les composants, les observables émettaient depuis n'importe où (services, composants, pages...) et cela parfois partait en boucle. La liste des bouteilles, des casiers, dégustations etc. était stockée en plusieurs endroits de l'application: DB, services, pages, et partiellement composants. Les filtres étaient créés dans le browse et modifiés partout.
Il fallait mettre en place une vraie gestion d'état. Pour cela j'ai donc choisi d'utiliser NGRX. Il reste des défauts dans son utilisation: les bouteilles et casiers sont modifiables dans certianes pages. Il y a donc création d'objets Bottle et Locker en plusieurs endroits (updatePage, cellar page quand on déplace des bouteilles ou qu'on redimensionne un casier qui n'est pas vide. Ces pages sont comme des formulaires, qui émettent des actions de modifications.
plutôt compliqué ! une fois suivi le tutorial https://javebratt.com/ionic-2-facebook-login/ il faut impératibvement
==> ça a marché...
cordova plugin add cordova-plugin-facebook4 --save --variable APP_ID="253712085111353" --variable APP_NAME="cellar-explorer"
J'utilise le plugin Chrome "Lighthouse" de Google pour analyser la home page et dégager les principaux problèmes. Grâce à ce plugin j'ai déjà changé:
Dans src/app/scss/icons/fonts se trouve une police générée spécialement pour le projet. Voir le fichier README_FONT.txt
il reste des choses à modifier pour améliorer l'application: