From 2efdbad74dfeb742ce626f34a896fce852610232 Mon Sep 17 00:00:00 2001 From: Maxime Quandalle Date: Sun, 9 Feb 2020 16:03:28 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Ne=20pas=20afficher=20la=20secti?= =?UTF-8?q?on=20explication=20en=20cas=20d'erreur=20inversion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Si l'erreur était bien capturée par React, l'affichage n'était pas rétabli lorsqu'une nouvelle saisie était effectuée. Lorsque le moteur n'arrive pas à exécuter une simulation il ne sert à rien d'essayer d'afficher des explications et/ou contrôles. Convertit Components/Controls vers les React hooks et TypeScript --- .../components/{Controls.js => Controls.tsx} | 73 ++++------ source/components/SalaryExplanation.tsx | 137 ++++++++---------- source/locales/en.yaml | 6 +- source/selectors/analyseSelectors.ts | 13 +- 4 files changed, 101 insertions(+), 128 deletions(-) rename source/components/{Controls.js => Controls.tsx} (58%) diff --git a/source/components/Controls.js b/source/components/Controls.tsx similarity index 58% rename from source/components/Controls.js rename to source/components/Controls.tsx index 89fdce48c..a55a2da3c 100644 --- a/source/components/Controls.js +++ b/source/components/Controls.tsx @@ -1,49 +1,50 @@ import { goToQuestion, hideControl } from 'Actions/actions' import { makeJsx } from 'Engine/evaluation' -import { compose } from 'ramda' import React from 'react' import emoji from 'react-easy-emoji' import { useTranslation } from 'react-i18next' -import { connect } from 'react-redux' +import { useDispatch, useSelector } from 'react-redux' +import { RootState } from 'Reducers/rootReducer' import { analysisWithDefaultsSelector } from 'Selectors/analyseSelectors' import animate from 'Ui/animate' import './Controls.css' import { Markdown } from './utils/markdown' import { ScrollToElement } from './utils/Scroll' -function Controls({ - controls, - goToQuestion, - hideControl, - foldedSteps, - hiddenControls, - inversionFail -}) { +export default function Controls() { const { t } = useTranslation() + const foldedSteps = useSelector( + (state: RootState) => state.simulation?.foldedSteps + ) + const analysis = useSelector(analysisWithDefaultsSelector) + const controls = analysis?.controls + const inversionFail = analysis?.cache._meta.inversionFail + const hiddenControls = useSelector( + (state: RootState) => state.simulation?.hiddenControls + ) + const dispatch = useDispatch() + if (!controls) { return null } - let messages = [ - ...controls, - ...(inversionFail - ? [ - { - message: t([ - 'simulateurs.inversionFail', - 'Le montant saisi est trop faible ou aboutit à une situation impossible, essayez en un autre' - ]), - level: 'avertissement' - } - ] - : []) - ] + let messages = inversionFail + ? [ + { + message: t([ + 'simulateurs.inversionFail', + 'Le montant saisi ne permet pas de calculer un résultat, nous vous invitons à essayer une autre valeur.' + ]), + level: 'avertissement' + } + ] + : controls if (!messages?.length) return null return (