Commit Graph

21 Commits (50d691b4afc9b2bdfa19d998c8f2d2229a1e5c89)

Author SHA1 Message Date
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 139ca46ad1
⚙️ Traduction des unités
Gestion du pluriel (1 jour, 2 jours) et de la traduction (3 days).

Fixes #729
2019-10-13 20:36:22 +02:00
Maxime Quandalle 579a385b41
Regroupe les fonctions de formatage
Par ailleurs ce commit formate les taux les tableaux des barèmes linéaires
2019-09-25 17:09:59 +02:00
Maxime Quandalle 0663c97204 Utilisation du hook useTranslation de react-i18next
Suppression de notre composant withLanguage qui rajoutait une abstraction
inutile.

Note: de nombreux appels à withTranslation et withLanguage était inutile
car le composant augmenté n'utilisait pas les paramètres fournis (language, t, i18n).
L'utilisation des hooks nous permet de mieux gérer le code mort, car il s'agit
de simples variables dont le non-usage est détecté par l'analyse statique.
2019-09-11 11:17:23 +02:00
Johan Girod 34780a2e15
🎨 Refacto l'économie collaborative
- L'état interne est plus simple
- Le parcours est plus beau et plus facile
- On peut revenir en arrière facilement
- Correction des bugs d'update, de modifications etc...
- La traduction sera plus simple
- L'état est sauvegardé dans le local storage
- Ajout de redirections quand l'utilisateur n'a pas suivi le parcours

NOTE ! Il reste à refactorer les exemptions
2019-09-03 13:35:54 +02:00
Mael 18cbe0623f On oublie cette histoire de faux pourcentages
Introduit au commit précédent, car je n'avais pas vu que l'option format
(couplée au normalize) de redux form existait.
2019-08-01 18:32:15 +02:00
Mael 1431c02f34 Introduction du faux pourcentage (%)
Quand une variable est destinée à être saisie par l'utilisateur, on veut
qu'il saisisse 50, pas 0.5 pour exprimer 50%.

On pourrait lui faire saisir 50 et convertir en direct vers la vraie
valeur de 0.5, mais c'est compliqué aujourd'hui dans reduxForm
(l'attribut "normalize" ne suffit pas, car la valeur 0.5 sera visible
après un bref instant de debounce).

Je pense qu'il serai quand même mieux que nous stockions les variables
qui sont des ratios comme 0.5 et que l'UI se charge d'afficher et de
faire saisir ces valeurs sous forme 50%.
2019-07-23 19:07:40 +02:00
Mael 5de2231267 Changement de la signature et des digits de NumberFormatter 2019-07-23 17:03:00 +02:00
Mael 6606bb4f34 Unités des barèmes et composantes 2019-07-23 17:03:00 +02:00
Mael 342605e86b Unités : pourcentage et multiplication 2019-07-23 17:03:00 +02:00
Mael 956a8662fe 🔥 Un seul numberFormatter 2019-07-23 17:03:00 +02:00
Mael 0110af7dce 🎨 🐛 Coloration des lignes de la fiche de paie 2019-07-12 12:30:31 +02:00
Mael 633b213869 🐛 Affichage d'une valeur quand elle est nulle 2019-07-12 10:33:02 +02:00
Mael d95c305c31 Aurevoir valueFormats, validators, .format, valueTypes 2019-07-12 10:33:02 +02:00
Mael 2834fbd053 Réparation et amélioration d'AnswerList
On affiche les prochaines questions. Super intéressant pour pouvoir
sauter directement à une question précise sans se taper toutes les
questions une par une.
2019-07-12 10:33:02 +02:00
Mael 7cadc42349 Passage de SchemeComparison aux getRuleFromAnalysis et Value
Et enfin suppression de regleSelectors
2019-07-12 10:33:02 +02:00
Mael 99993af761 Finalisation de la refacto valeurs 2019-07-12 10:33:02 +02:00
Mael ed4d4a0d7a Mutualisation de <Value>
Remplacement de Montant par Value
Rétablissement des explications simu salarié
Possibilité de définir des objegtifs secondaires qui sont calculés mais
pas affichés par targetSelectuon
2019-07-12 10:33:02 +02:00
Mael 76b60afed7 1er affichage des unités : indemnité km vélo 2019-07-12 10:33:02 +02:00
Mael 6154419250 Changement de programme : tentative d'implé de l'unité dans l'eval
Car quand on parse et qu'on tombe sur une variable, on ne rentre pas
dans cette variable. Elle sera traitée par la suite dans le parseAll.
Ainsi on ne peut pas connaître son unité si elle a une formule

A = B * C
B = D / E

C unité km
D unité €
E unité km

Quand on tombe sur B dans A, B n'est pas encore parsée, et donc on ne
peut pas savoir que B est en € / km.

Il faudrait parser B, ce qui serait trop couteux. On pourrait
implémenter un cache au parsing, implémenter les unités comme des fonctions, ou encore gérer les unités lors de l'éval (ce qui est bête, car on n'a pas besoin des valeurs pour inférer les unités)
2019-07-12 10:33:02 +02:00
Mael a7c6cb25fa Première unité affichée sur la page règle 2019-07-12 10:33:02 +02:00