import React, {Component} from 'react' import './CDD.css' import {reduxForm, formValueSelector, reset} from 'redux-form' import {connect} from 'react-redux' import './conversation/conversation.css' import {START_CONVERSATION} from '../actions' import Aide from './Aide' import PageTypeIcon from './PageTypeIcon' import R from 'ramda' import {Redirect, Link, withRouter} from 'react-router-dom' import {createMarkdownDiv} from '../engine/marked' import './Simulateur.css' import classNames from 'classnames' import {findRuleByName, decodeRuleName} from '../engine/rules' import {capitalise0} from '../utils' let situationSelector = formValueSelector('conversation') @withRouter @reduxForm({form: 'conversation', destroyOnUnmount: false}) @connect( state => ({ situation: variableName => situationSelector(state, variableName), foldedSteps: state.foldedSteps, unfoldedSteps: state.unfoldedSteps, themeColours: state.themeColours, analysedSituation: state.analysedSituation, }), dispatch => ({ startConversation: rootVariable => dispatch({type: START_CONVERSATION, rootVariable}), resetForm: rootVariable => dispatch(reset('conversation')) }) ) export default class extends React.Component { componentWillMount() { let { match: { params: { name: encodedName } } } = this.props, name = decodeRuleName(encodedName) this.encodedName = encodedName this.name = name this.rule = findRuleByName(name) // C'est ici que la génération du formulaire, et donc la traversée des variables commence if (this.rule.formule) this.props.startConversation(name) } render(){ if (!this.rule.formule) return let started = !this.props.match.params.intro, {foldedSteps, unfoldedSteps, situation} = this.props, sim = path => R.path(R.unless(R.is(Array), R.of)(path))(this.rule.simulateur || {}), reinitalise = () => { this.props.resetForm(name); this.props.startConversation(name); } return (

{sim('titre') || capitalise0(this.rule['titre'] || this.rule['nom'])}

{sim('sous-titre') &&
{sim('sous-titre')}
} {sim(['introduction', 'notes']) &&
{sim(['introduction', 'notes']).map( ({icône, texte, titre}) =>
{texte}
)}
} { // Tant que le bouton 'C'est parti' n'est pas cliqué, on affiche l'intro !started ?

{sim(['introduction', 'motivation']) || 'Simulez cette règle en quelques clics'}

Pour simplifier, les résultats sont calculés par mois de contrat, et pour un temps complet.

N'hésitez pas à nous écrire ! La loi française est très ciblée, et donc complexe. Nous pouvons la rendre plus transparente.

: (
{ !R.isEmpty(foldedSteps) &&
{foldedSteps .map(step => ( ))}
}
{ !R.isEmpty(unfoldedSteps) && do { let step = R.head(unfoldedSteps) ; }}
{unfoldedSteps.length == 0 && }
)}
) } } class Conclusion extends Component { render() { return (

Nous n'avons plus de questions : votre simulation est terminée.

Cliquez sur les obligations en bas pour comprendre vos résultats.

Une remarque ? Écrivez-nous !

) } }