# 0 - Développement d'applications destinées à la population vieillissante
* Auteur: Prune Pillone
* Début du projet : 02/07/2019
Ce projet nécessite :
- Java 8
- Node 10.9
- Angular 8
- Maven 3
Si vous possédez déjà tout cela vous pouvez passer directement à la partie 1. [Partie 1](/ax1FlLcHRh-4LqJXlenvHA)
[TOC]
## Partie 0 – Configuration
Le but de ce TP est d’obtenir une base concrète et bien mise en place qui sera la même pour tout le monde. Sur cette base, des extensions diverses vont ensuite pouvoir venir se greffer sans modifier la structure réalisée. Ce TP va donc être divisé en 3 grandes parties :
- Séléction du patient
- Quiz
- Configuration pour le soignant
Voici l’architecture qui va être mise en place lors de ce TP d’introduction. Le but est d’ajouter à chaque étape une nouvelle fonctionnalité qui va traverser toutes les couches de cette architecture.
Avant toute chose, plusieurs logiciels vont être nécessaires.
### Base de données
Téléchargez les binaires correspondant à votre système d’exploitation à ce lien : https://www.postgresql.org/download/
Choisissez le mot de passe du super-utilisateur.
Sur Windows, ajouter C:\Program Files\PostgreSQL\10\bin à la variable d’environnement PATH.
Sur macOS il est également possible d'installer avec [homebrew](https://www.codementor.io/engineerapart/getting-started-with-postgresql-on-mac-osx-are8jcopb) :
`brew install postgresql`
Dans tous les cas, retenez bien le port et le mot de passe choisi.
### Back-End
#### Installation de Java
Téléchargez la version de Java8 correspondant à votre OS ici, puis ajouter Java au PATH. https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
#### Installation de Maven
Téléchargez Maven ici : https://maven.apache.org/download.cgi
Suivez les instructions données ici : https://maven.apache.org/install.html
Pour plus d’informations sur Maven si vous ne connaissez pas : https://fr.wikipedia.org/wiki/Apache_Maven
#### Installation d’IntelliJ
L’IDE conseillé est IntelliJ, car il offre de nombreuses fonctionnalités, dont un plugin Flutter ce qui permet de ne pas avoir à télécharger Android Studio en plus pour développer sur mobile. (Sachant qu’il existe aussi un plugin Android mais que cela ne servirait pas pour les utilisateurs d’Iphone, qui seraient obligés de télécharger en plus un émulateur).
Vous pouvez télécharger IntelliJ Community ici https://www.jetbrains.com/idea/download/ ou vous créer un compte avec votre adresse étudiante qui vous donnera le droit aux versions Ultimate de tous les IDEs Jetbrains.
### Front-End Angular
Pour la première partie du Front-End, nous allons utiliser Angular 8. Angular nécessite d’installer Node afin d’avoir le gestionnaire de package npm.
#### Node
Téléchargez NodeJS version LTS ici : https://nodejs.org/en/
Encore une fois ici sous mac il est possible d'utiliser homebrew :
`brew install node`
#### Angular 8
##### Avec une version d'Angular déjà existante
Suivre les instructions ici : https://update.angular.io
##### Sans version déjà installée
Suivre les instructions ici : https://angular.io/guide/setup-local
##### Packages additionnels
Une fois angular installé, vous pouvez executer ces commandes :
`npm install -g ng2-charts
npm install -g chart.js `
#### Possibles erreurs
##### Cannot find module
Si le message suivant apparait :
```Error: Cannot find module '@angular-devkit/core'```
Il faut changer dans `package.json` la ligne
`@angular/cli: {numero de version} ` par `@angular/cli: ^{numero de version}`, puis faire un npm update
##### events.js:174
Si le message d'erreur est le suivant :
```
events.js:174
throw er; // Unhandled 'error' event
^
Error: read ECONNRESET
at TCP.onStreamRead (internal/stream_base_commons.js:111:27)
Emitted 'error' event at:
at Socket.socketErrorListener (_http_client.js:392:9)
at Socket.emit (events.js:198:13)
at emitErrorNT (internal/streams/destroy.js:91:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:59:3)
at process._tickCallback (internal/process/next_tick.js:63:19)
```
`npm clean-install` puis `npm update` devrait résoudre le problème.
##### You must install peer depedencies yourself
Si des messages de ce type sont présents :
```
npm WARN @angular-devkit/build-webpack@0.801.0 requires a peer of webpack@^4.6.0 but none is installed. You must install peer dependencies yourself.
```
Il faut lancer à la main
`npm install webpack@^4.6.0` (par exemple ici) pour **chacune** des erreurs.
##### Au lancement de ng serve
```
Cannot read property 'config' of null
TypeError: Cannot read property 'config' of null
```
Faire un `npm install` révélera des erreurs.