Commit Graph

18 Commits (91483d76944cf462d59381f9825fc39eae378b1d)

Author SHA1 Message Date
Johan Girod 00b122fa97 ⚙️ ajoute la conversion d'unité
Gros changements en perspective :
- Supprime la notion de période, au bénéfice de celle d'unité
  (`période : mensuelle` devient `unité: €/mois`)
- Améliore les rapports d'erreur avec des messages plus clair
- Ajoute un avertissement lorsque des types ne sont pas compatible
- Ajoute la conversion automatique d'unité dans le moteur
- Ajoute une notion d'unité par défaut de la simulation,
  c'est l'unité vers laquelle les règles qui ne spécifient pas
  d'unité seront converties
- Ajoute une notion d'unité par défaut des règles, qui spécifie
  l'unité de la règle qui prévaut lorsque qu'il n'y a pas
  d'unité par défaut de la simulation (utile pour les question ou
  pour s'assurer du bon type d'une règle)
2019-12-16 11:34:04 +01:00
Maxime Quandalle 6de970f0e3 🔥 Migration vers TypeScript
Outils
======

Ce commit retire le tooling de Flow, et ajoute le support de TypeScript
pour les fichiers .ts et .tsx. Il n'est pas nécessaire de tout migrer
d'un coup ce qui facilite la transition. On garde en effet le
compilateur Babel avec un preset TypeScript (ce qui permet donc de
retirer à la fois les types Flow et TypeScript) plutôt que d'utiliser le
compilateur standard pour la conversion du code. Cela permet aussi de
mieux s'intégrer avec d'autres outils, notamment les test-runners.

Ajout d'une nouvelle commande `yarn run type-check`, intégrée dans
CircleCI.

Par ailleurs ajout du support de l'opérateur ?? pour donner des valeurs
par défaut (nullish-coalescing-operator).

Typage des libraires tierces
============================

Les principales libraires que nous utilisons ont un typage TypeScript de
bon niveau, ce qui facilite l'intégration. J'ai mis à jour react-i18next
et i18next afin de corriger un problème de typage.

Typage du code
==============

Le typage est loin d'être complet dans ce commit, en particulier il
manque les types relatifs au state Redux, ainsi qu'au moteur (règle,
explication). Néanmoins le typage des contextes fonctionne, en
particulier sitePaths (avec un type récursif non trivial !) qui a déjà
permis de détecter un lien mort.

Le typage des "paths" (Components/, Règles/, etc.) fonctionne bien, y
compris avec l'auto-complétion automatique des import par Typescript.

TypeScript se révèle déjà bien agréable dans VSCode (auto-complétion,
refacto, etc.) ! Reste à migrer progressivement le reste du code !
2019-10-30 10:20:48 +01:00
Maxime Quandalle 1ccaf94a1c
⚙️ Nouvelle syntaxe de définition publicodes
* Définition à partir du nom complet en notation pointée (plutôt que
  comme deux attributs indépendants "name" et "espace")
* Structure de données de premier niveau "dictionnaire" plutôt que liste,
  s'aligne mieux avec notre contrainte d'unicité des noms
* Possibilité de définir les règles à partir d'une liste dans les tests,
  dans ce cas il ne faut plus utiliser l'attribut "espace" mais renseigner
  directement la notation pointée dans le "nom".
2019-10-13 11:46:29 +02:00
Mael 0eba339309 La librairie prend la notation pointée en entrée 2019-10-07 16:38:29 +02:00
Maxime Quandalle 6ea5dd0870 Migration de React "class" à "function"
Le but de la refacto est de généraliser l'utilisation des hook

Nombre de composants convertis: 52
Nombre de composants restants: 12

Il est possible de compter les composants class restants en utilisant
grep "render()"

L'occasion aussi de remplacer la dernière occurence de UNSAFE_componentWillMount
2019-09-11 11:17:23 +02:00
Maxime Quandalle a1b99fdc64 Suppression des do-expression
Il s'agit d'une fonctionnalité non standard de JavaScript qui est peu
utilisée dans la base de code. Ajoute de la complexité pour les nouveaux
développeurs (configuration spécifique de l'environnement de dév) pour
trop peu de bénéfices.
2019-09-11 11:17:23 +02:00
Johan Girod de2f41ecd4 💚 Répare les tests unitaire, les erreurs flow et les erreurs eslint 2019-02-01 17:21:41 +01:00
Mael 2af373376f Optimisation du code
js-yaml est très lourd, utiliser react suspense
tree shaking sur ramda
react suspence pour le choix de couleur
2018-11-23 16:01:46 +00:00
Mael 0c9cbde9e7 Résolution de petits problèmes divers 2018-11-23 16:01:13 +00:00
Mael aa0e654ef7 Nouvelle configuration webpack pour la librairie de calcul 2018-11-23 16:01:13 +00:00
Mael 6a4faaeef3 Simplification de l'usage de la librairie
Plus besoin de passer plusieurs objectif et elle renvoit directement la
valeur, pas les objets compliqués
2018-11-23 16:01:13 +00:00
Mael 2103974d65 🐛 Défauts des règles ajoutés maintenant pris en compte 2018-11-23 16:01:13 +00:00
Mael b867c215c0 Nettoyage des règles de la SASU 2018-11-23 16:01:13 +00:00
Mael 12bba5fe9a La librairie permet d'étendre la base défaut avec de nouvelles règles 2018-11-23 16:01:13 +00:00
Mael dbf2b0eeb6 Charger de nouvelles règles dans la lib pour les évaluer 2018-11-23 16:01:12 +00:00
Mael 7cc01d66f3 test 2018-11-23 16:01:12 +00:00
Mael 42e1500bcf :cogs: Nouvelle fonction publique 2018-11-23 16:01:12 +00:00
Mael d072ea0e3f Nouvelle cible webpack 'engine' 2018-11-23 16:01:12 +00:00