Ajout d'un paramètre explicite "rules" au reducer

pull/671/head
Maxime Quandalle 2019-09-23 09:44:22 +02:00
parent 7a965e6d99
commit ffd65ae613
No known key found for this signature in database
GPG Key ID: 428641C03D29CA10
3 changed files with 19 additions and 17 deletions

View File

@ -67,6 +67,11 @@ export const updateSituation = (fieldName, value) => ({
value
})
export const updatePeriod = toPeriod => ({
type: 'UPDATE_PERIOD',
toPeriod
})
// $FlowFixMe
export function setExample(name, situation, dottedName) {
return { type: 'SET_EXAMPLE', name, situation, dottedName }

View File

@ -1,3 +1,4 @@
import { updatePeriod } from 'Actions/actions'
import React from 'react'
import { Trans } from 'react-i18next'
import { useDispatch, useSelector } from 'react-redux'
@ -12,10 +13,9 @@ export default function PeriodSwitch() {
)
const currentPeriod = situation.période
let periods = ['année', 'mois']
const updatePeriod = toPeriod => dispatch({ type: 'UPDATE_PERIOD', toPeriod })
if (!currentPeriod) {
updatePeriod(defaultPeriod)
dispatch(updatePeriod(defaultPeriod))
}
return (
@ -27,7 +27,7 @@ export default function PeriodSwitch() {
name="période"
type="radio"
value={period}
onChange={() => updatePeriod(period)}
onChange={() => dispatch(updatePeriod(period))}
checked={currentPeriod === period}
/>
<span>

View File

@ -135,7 +135,7 @@ function updatePeriod(situation, { toPeriod, rules }) {
}
}
function simulation(state = null, action) {
function simulation(state = null, action, rules) {
if (action.type === 'SET_SIMULATION') {
const { config, url } = action
return { config, url, hiddenControls: [], situation: {} }
@ -162,7 +162,7 @@ function simulation(state = null, action) {
...state,
situation: updatePeriod(state.situation, {
toPeriod: action.toPeriod,
rules: action.rules
rules: rules
})
}
}
@ -201,26 +201,23 @@ const existingCompanyReducer = (state, action) => {
}
return newState
}
export default (state, action) => {
// Enrich the action
if (action.type === 'UPDATE_PERIOD') {
action.rules = state.rules
}
return reduceReducers(
existingCompanyReducer,
storageReducer,
export default reduceReducers(
existingCompanyReducer,
storageReducer,
(state, action) =>
combineReducers({
sessionId: defaultTo(Math.floor(Math.random() * 1000000000000) + ''),
conversationSteps,
lang,
rules: defaultTo(null),
simulation,
explainedVariable,
// We need to access the `rules` in the simulation reducer
simulation: (a, b) => simulation(a, b, state.rules),
previousSimulation: defaultTo(null),
currentExample,
situationBranch,
activeTargetInput,
inFranceApp: inFranceAppReducer
})
)(state, action)
}
})(state, action)
)