From 36efca98556f040d74afe090dad98db60fbd027e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grand?= <francois.grand@inrae.fr> Date: Wed, 24 May 2023 09:29:20 +0200 Subject: [PATCH] developer/readme update --- DEVELOPERS.md | 32 ++++++++++++++++---------------- README.md | 45 +-------------------------------------------- 2 files changed, 17 insertions(+), 60 deletions(-) diff --git a/DEVELOPERS.md b/DEVELOPERS.md index 2888e23d6..6be017691 100644 --- a/DEVELOPERS.md +++ b/DEVELOPERS.md @@ -20,7 +20,7 @@ La documentation est générée avec Mkdocs, pandoc et LaTeX. * typescript * angular * angular-material - * protractor + * webdriverIO * electron * service workers * mkdocs @@ -56,7 +56,7 @@ L'interface s'appuie sur les principes de **material design** et de **responsive ### modèle -L'état de la session, des modules, des paramètres et des résultats numériques est conservé par JaLHyd. Seules les représentations graphiques sont conservées par la couche ngHyd. +L'état de la session, des modules, des paramètres et des résultats numériques est conservé par JaLHyd. Seules les représentations graphiques sont conservées par la couche ngHyd (elles font elles même l'objet d'un modèle reflètant l'état de l'interface). Pour chaque module chargé en session, un arbre d'objets partant d'une instance de `FormulaireDefinition` représente la structure des éléments à l'écran : groupes de champs (répétables ou non), champs, listes déroulantes. Ces éléments sont déclarés dans les fichiers du dossier `src/app/formulaire`. @@ -84,7 +84,7 @@ Pour chaque langue, un fichier supplémentaire est présent contenant les traduc ### exemples de sessions -Des exemples de sessions prêtes à charger sont présents sous forme de fichiers JSON dans `src/app/examples`. Lors de l'ajout d'un nouveau fichier d'exemple, celui-ci doit être référencé dans la méthode `get exampleFiles()` dans le fichier `src/app/components/calculator-list.component.ts`. Ces exemples sont affichés sur la page d'accueil dans la dernière carte, lorsqu'aucun module n'a encore été créé. +Des exemples de sessions prêtes à charger sont présents sous forme de fichiers JSON dans `src/app/examples`. Lors de l'ajout d'un nouveau fichier d'exemple, celui-ci doit être référencé dans la méthode `get exampleFiles()` dans le fichier `src/app/components/calculator-list/calculator-list.component.ts`. Ces exemples sont affichés sur la page d'accueil dans la dernière carte, lorsqu'aucun module n'a encore été créé. ### langues et traduction @@ -109,7 +109,7 @@ Le dossier `release` contient (entre autres) les paquets générés par electron ### PWA Le déploiement de ngHyd sous forme d'application mobile se fait à l'aide de l'ensemble de technologies rassemblées sous le nom de Progressive Web Application. -Les fichiers et dossiers concernés sont `ngsw-config.json`, `src/manifest.webmanifest` (fichiers nouveaux), `index.html`, `angular.json`, `src/app/app.module.ts` (fichiers modifiés), et les différentes icônes `.png` présentes dans `src/assets/icons`. +Les fichiers et dossiers concernés sont `ngsw-config.json`, `ngsw-config-template.json`, `src/manifest.webmanifest` (fichiers nouveaux), `index.html`, `angular.json`, `src/app/app.module.ts` (fichiers modifiés), et les différentes icônes `.png` présentes dans `src/assets/icons`. ### documentation @@ -123,19 +123,17 @@ L'organisation hiérarchique de la documentation est définie dans les fichiers La documentation de chaque langue est compilée au format PDF via pandoc, qui convertit les sources markdown vers du LaTeX. Cette conversion est réalisée par le script python 3 `mkdocs2pdf.py`. -Les préambules LaTeX pour chaque langue se trouvent dans `docs/latex`, par exemple `docs/latex/cassiopee_doc_fr.tex`. Les PDF générés sont placés dans `src/assets/docs/pdf`. +Les préambules LaTeX pour chaque langue se trouvent dans `docs/latex`, par exemple `docs/latex/cassiopee_doc_fr.tex`. Les PDF générés sont placés dans `dist/assets/docs/pdf`. ### tests unitaires -Les tests unitaires dits "end-to-end" ou "e2e" sont réalisés avec Protractor, basé sur Selenium et fourni avec Angular. Les tests se trouvent dans le dossier `e2e` et sont configurés dans `protractor.conf.js`. +Les tests unitaires dits "end-to-end" ou "e2e" sont réalisés avec WebDriverIO, basé sur Selenium. Les tests se trouvent dans le dossier `e2e` et sont configurés dans `wdio.conf.ts`. -Bien qu'elle soit supposée fonctionner avec d'autres navigateurs, l'exécution des tests n'est garantie qu'avec Chrome / Chromium. Le pilote Selenium pour Chrome ("chromedriver") posant parfois problème, `protractor.conf.js` contient une astuce qui recherche le pilote dans le système avant de le rechercher dans node_modules. - -Pour plus d'informations sur les problèmes liés à la version du pilote Selenium pour Chrome, consulter le chapitre "chromedriver version in e2e tests" dans la documentation utilisateurs (en anglais). +Bien qu'elle soit supposée fonctionner avec d'autres navigateurs, l'exécution des tests n'est garantie qu'avec Chrome / Chromium. ### scripts -Le dossier `scripts` contient des scripts d'aide à la compilation, utilisés par les commandes `npm` déclarées dans `package.json`. +Le dossier `scripts` contient des scripts d'aide à la compilation utilisés par les commandes `npm` déclarées dans `package.json`. ## Ajouter un module de calcul @@ -343,6 +341,8 @@ Il faut ensuite faire 2 choses : } ``` +- éventuellement ajouter une méthode `updateLocalisation()` pour spécialiser la traduction des entrées et du titre (cf. par exemple `SelectFieldChartType`). + - modifier la méthode `newSelectField` de la classe `SelectFieldFactory` pour créer une instance de la classe dérivée en utilisant le champ `id` précisé dans le JSON de configuration : ```typescript public static newSelectField(json: {}, parent: FormulaireNode): SelectField { @@ -442,10 +442,10 @@ Dans la configuration du module, créer un "fieldset_template" en donnant le typ ```json { "id": "fs_yaxn", - "type": "fieldset_template", - "calcType": "YAXN", - "fields": [ - … + "type": "fieldset_template", + "calcType": "YAXN", + "fields": [ + … }, { "id": "yaxn_container", @@ -469,9 +469,9 @@ if (f instanceof FormulaireMacrorugoCompound) { } ``` -Dans cet exemple, on ajoute l'interface pour le premier enfant du Nub (instancié par JaLHyd), à l'élément de formulaire de type `FieldsetContainer` (ici, il n'y en a qu'un). +Dans cet exemple, on ajoute l'interface pour le premier enfant du Nub (instancié par JaLHyd) à l'élément de formulaire de type `FieldsetContainer` (ici, il n'y en a qu'un). -Ajouter ensuite la création de fieldsets pour les enfants existants, dans la méthode `createFormulaire()` de `FormulaireService`, dans le fichier `src/app/services/formulaire.service.ts`. Exemple pour `ParallelStructures` : +Ajouter ensuite la création de fieldsets pour les enfants existants, dans la méthode `createFormulaire()` de `FormulaireService`, dans le fichier `src/app/services/formulaire.service.ts`. Exemple pour `ParallelStructure` : ```typescript if (f.currentNub instanceof ParallelStructure) { diff --git a/README.md b/README.md index 0fc8a9725..1fc916854 100644 --- a/README.md +++ b/README.md @@ -161,44 +161,6 @@ Find the generated package in `/release`. Note: the generated package will not be signed. -### Build a mobile release for Android (from Linux platform) - -#### install dependencies - * java - `apt install openjdk-8-jdk` or `apt install oracle-java8-jdk` - * gradle - `apt install gradle` - -#### install Android Studio and SDKs - -#### using GUI - -Download Android Studio here and install it : https://developer.android.com/studio - -Run Android Studio, click "configure > SDK manager". Install at least one SDK, for ex. 7.0 Nougat. - -#### using CLI - -Download Android SDK Tools from https://developer.android.com/studio : click "DOWNLOAD OPTIONS" then scroll down to "Command line tools only" and choose `sdk-tools-linux-*.zip`. - -Download and unzip to, for example, `/opt/android/`. - -Add `/opt/android/tools/bin` to your PATH. - -Install an SDK, for example android 28 (Android 9 "Pie") : - -```sh -sdkmanager "platform-tools" "platforms;android-28" "build-tools;28.0.3" -``` - -#### build .apk package - -```sh -npm run release-android -``` - -Find the generated package in `/release`. - -Note: the generated package will not be signed. - ### Generate HTML documentation ```sh @@ -252,12 +214,7 @@ Custom Material SVG Icons will only show up when the application is deployed on ### chromedriver version in e2e tests -It is possible that Chrome / Chromium version installed on your system evolves faster than the Chrome Selenium driver (`chromedriver`) installed by "protractor" dependency of Angular, which makes e2e tests fail with an error message about versions compatibility. In this case, it's possible to install an updated system-wide version of the pilot: -```bash -sudo npm install -g protractor -sudo webdriver-manager update -sudo find /usr/lib/node_modules/protractor -regextype sed -regex "^.*/chromedriver.*[0-9]$" -exec ln -s '{}' /usr/bin/chromedriver ';' -``` +The chromedriver version used in e2e tests is determined by the Docker image dedicated to these tests. For further information, see Dockerfile of cassiopee2-integration project. ## Release policy -- GitLab