diff --git a/package.json b/package.json
index 1095c6bd2..3167448f8 100644
--- a/package.json
+++ b/package.json
@@ -20,11 +20,11 @@
"nearley": "^2.7.14",
"npm": "^4.4.1",
"ramda": "^0.23.0",
- "react": "^15.5.3",
- "react-dom": "^15.5.3",
+ "react": "^15.5.4",
+ "react-dom": "^15.5.4",
"react-json-tree": "^0.10.0",
"react-redux": "^5.0.3",
- "react-router": "^3.0.2",
+ "react-router-dom": "^4.1.1",
"reduce-reducers": "^0.1.2",
"redux": "^3.6.0",
"redux-form": "^6.4.3",
diff --git a/règles/entités/salariat/Salariat.CDD.yaml b/règles/entités/salariat/Salariat.CDD.yaml
index 15089f2d5..f87a85dd8 100644
--- a/règles/entités/salariat/Salariat.CDD.yaml
+++ b/règles/entités/salariat/Salariat.CDD.yaml
@@ -3,9 +3,19 @@
- Variable: CDD
attache: Salariat
nom complet: CDD
- description: Contrat de travail pour lequel un employeur (société, entreprise) peut recruter directement un salarié pour une durée déterminée, car la cause de cette détermination, de la date ou échéance de fin de contrat est prévue explicitement par le Code du travail.
+ description: Contrat de travail pour lequel un employeur peut recruter un salarié pour une durée déterminée, car la cause de cette détermination, de la date ou échéance de fin de contrat est prévue explicitement par le Code du travail.
référence: https://fr.wikipedia.org/wiki/Contrat_de_travail_%C3%A0_dur%C3%A9e_d%C3%A9termin%C3%A9e_en_France
# TODO: règle de type : il faut q'un motif et une durée soient sélectionnés pour qu'un contrat soit un CDD. Cela revient à dire que les variables CDD et motif sont obligatoires *dans le contexte* de leur attache
+ # implique:
+ # - emploi temporaire
+ # - motif de recours
+
+# - Variable: emploi temporaire
+# attache: Salariat . CDD
+# description: Le contrat n'a ni pour objet ni pour effet de pourvoir durablement un emploi lié à l'activité normale et permanente de l'entreprise.
+# références:
+# Code du travail - Article L1242-1 : https://www.legifrance.gouv.fr/affichCodeArticle.do;jsessionid=BF6DDD5AADF2010EFD3ED78B7CC00691.tpdila20v_1?idArticle=LEGIARTI000006901194&cidTexte=LEGITEXT000006072050&dateTexte=20100508
+
- Variable: durée contrat
attache: Salariat . CDD
@@ -22,6 +32,7 @@
6 mois: 6
3 mois: 3
+
- Variable: motif # alias utilisé dans l'article L. 1242-1
nom complet: motif de recours
attache: Salariat . CDD
@@ -94,6 +105,10 @@
références:
service-public.fr: https://www.service-public.fr/professionnels-entreprises/vosdroits/F33693
# concerne: emploi temporaire par nature
+ notes: |
+ - exprimer la justification du CDD d'usage au delà des secteurs.
+ " l'usage exclut le recours au CDI en raison de la nature de l'activité et du caractère temporaire de ces emplois."
+ + interdictions explicites (grève et travaux dangereux)
formule-futur: #TODO intégrer ça dans le formulaire. Comment ?
contrainte:
@@ -125,8 +140,8 @@
titre: Événement de contrat
question: Pensez-vous être confronté à l'un de ces événements au cours du contrat ?
description: |
- Certains de ces événements impactent fortement les objectifs de la simulation.
- Par exemple, si le CDD est poursuivi en CDI, aucune majoration ou indemnité ne sera à verser !
+ Certains de ces événements impactent fortement les résultats de la simulation, et peuvent donc la racourcir.
+ Par exemple, dans l'hypothèse d'un CDD poursuivi en CDI, aucune majoration ou indemnité ne sera à verser !
# au lieu de lister tous les cas, l'alternative est de simplement indiquer qu'ils sont exclusifs,
# et les identifier dynamiquement par leur attribut "attache" :
langue au chat possible: oui
diff --git a/règles/simulateurs.yaml b/règles/simulateurs.yaml
new file mode 100644
index 000000000..26d32cdea
--- /dev/null
+++ b/règles/simulateurs.yaml
@@ -0,0 +1,30 @@
+# Les simulateurs sont définis ici. Ils ont une variable comme objectif de calcul. Le moteur va analyser cette variable et son arbre pour produire un formulaire. Il sera exposé sur /simulateurs/:id
+
+- titre: Simulateur CDD
+ sous-titre: Découvrir le surcoût employeur du CDD par rapport au CDI
+ id: cdd
+ introduction:
+ - icône: fa-handshake-o
+ texte: Vous avez embauché ou vous réfléchissez à l'embauche d'un salarié en CDD.
+ titre: Votre situation
+ - icône: fa-balance-scale
+ texte: Votre contrat ne peut donc avoir ni pour objet ni pour effet de pourvoir durablement un emploi lié à l'activité normale et permanente de l'entreprise.
+ titre: Votre obligation
+
+ action:
+ texte: Répondez à quelques questions pour estimer le montant des 4 obligations du CDD.
+ bouton: C'est parti !
+ objectif: surcoût CDD
+ conclusion: |
+ 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](mailto:contact@embauche.beta.gouv.fr) !
+#
+
+
+# - titre: Du brut au net
diff --git a/source/components/CDD.css b/source/components/CDD.css
index de8484eb2..c08fc5cd5 100644
--- a/source/components/CDD.css
+++ b/source/components/CDD.css
@@ -16,7 +16,7 @@ p {
#conversation {
- margin: 1em auto;
+ margin: 3em auto;
font-size: 110%;
line-height: normal;
display: flex;
@@ -24,6 +24,7 @@ p {
align-items: flex-start;
min-height: 10em;
max-width: 90%;
+ max-height: 85%;
}
@@ -34,25 +35,11 @@ p {
text-align: center;
font-style: italic;
}
-
+#fin p:first-of-type {
+ font-weight: bold
+}
#questions-answers {
- min-width: 60%;
+ min-width: 55%;
transition: width 1s;
}
-
-
-
-#sim #results {
- padding: .1em;
- background: #333350;
- box-shadow: 1px -7px 20px 2px #ccc;
- position: fixed;
- bottom: 0;
- left: 0;
- width: 100%;
- font-size: 80%;
- color: white;
- height: 12em;
- text-align: center;
-}
diff --git a/source/components/CDDIntro.css b/source/components/CDDIntro.css
index 77bb0ce36..30f779db3 100644
--- a/source/components/CDDIntro.css
+++ b/source/components/CDDIntro.css
@@ -1,4 +1,4 @@
-#CDDIntro {
+#simulateurIntro {
background: radial-gradient(ellipse at center, #4A89DC -160%,#333350 100%);
color: white;
position: fixed;
@@ -8,24 +8,24 @@
height: 100%;
}
-#CDDIntro h1 {
+#simulateurIntro h1 {
margin-top: 3%;
text-align: center;
font-size: 350%;
font-weight: 800;
}
-#CDDIntro .subtitle {
+#simulateurIntro .subtitle {
text-align: center;
font-size: 110%;
font-weight: 300;
}
-#CDDIntro #introduction {
+#simulateurIntro {
margin-top: 4%;
}
-#CDDIntro p {
+#simulateurIntro p {
font-size: 120%;
color: white;
opacity: .9;
@@ -33,19 +33,19 @@
margin: 2em auto;
}
-#CDDIntro #introduction .insist {
+#simulateurIntro #introduction .insist {
font-weight: 600;
/*font-style: italic;*/
}
-#CDDIntro #action {
+#simulateurIntro #action {
color: white;
margin-top: 3%;
display: block;
text-align: center;
}
-#CDDIntro #action button {
+#simulateurIntro #action button {
color: inherit;
background: #4A89DC;
padding: .6em 1.2em;
@@ -55,7 +55,7 @@
border: none;
box-shadow: 0px 9px 14px 0px rgba(0, 0, 0, 0.1)
}
-#CDDIntro #action button:hover {
+#simulateurIntro #action button:hover {
box-shadow: none;
opacity: .95;
}
diff --git a/source/components/CDDIntro.js b/source/components/CDDIntro.js
index 168b9b9e4..84df432b5 100644
--- a/source/components/CDDIntro.js
+++ b/source/components/CDDIntro.js
@@ -2,14 +2,14 @@ import React from 'react'
import colours from './themeColours'
import PageTypeIcon from './PageTypeIcon'
import './CDDIntro.css'
-import {Link} from 'react-router'
+import {Link} from 'react-router-dom'
export default () => (
Simulateur CDD
- Découvrir le surcoût pour l'employeur du CDD par rapport au CDI
+ Découvrir le surcoût employeur du CDD par rapport au CDI
diff --git a/source/components/Contact.js b/source/components/Contact.js
new file mode 100644
index 000000000..bf587d5b6
--- /dev/null
+++ b/source/components/Contact.js
@@ -0,0 +1,10 @@
+import React from 'react'
+
+export default () =>
+
+
+ Pour nous écrire : contact@embauche.beta.gouv.fr
+
+ {/* TODO: credits for the image to add: https://thenounproject.com/search/?q=post+card&i=715677 */}
+
+
diff --git a/source/components/Results.css b/source/components/Results.css
index f9a3cb55c..a0a3845f6 100644
--- a/source/components/Results.css
+++ b/source/components/Results.css
@@ -1,4 +1,23 @@
+#results {
+ padding: .1em;
+ background: #333350;
+ font-size: 80%;
+ color: white;
+ padding-top: 2em;
+ text-align: center;
+ width: 100%;
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ border-top: 3px solid white;
+}
+#results.started {
+ border: none;
+ box-shadow: 1px -7px 20px 2px #ccc;
+}
+
+
#results #results-titles {
color: white;
width: 18%;
@@ -42,6 +61,7 @@
border-radius: 3px;
white-space: nowrap;
color: #333350;
+ min-width: 15em;
}
#results li.irrelevant .rule-box {
background: rgba(255, 255, 255, 0.65);
diff --git a/source/components/Results.js b/source/components/Results.js
index df648e4b0..347cc2a8d 100644
--- a/source/components/Results.js
+++ b/source/components/Results.js
@@ -1,6 +1,6 @@
import React, { Component } from 'react'
import classNames from 'classnames'
-import {Link} from 'react-router'
+import {Link} from 'react-router-dom'
import {connect} from 'react-redux'
import R from 'ramda'
import './Results.css'
@@ -10,21 +10,24 @@ let humanFigure = decimalDigits => value => fmt(value.toFixed(decimalDigits))
@connect(
state => ({
- pointedOutObjectives: state.pointedOutObjectives
+ pointedOutObjectives: state.pointedOutObjectives,
+ analysedSituation: state.analysedSituation,
+ conversationStarted: !R.isEmpty(state.form)
})
)
export default class Results extends Component {
render() {
- let {analysedSituation, pointedOutObjectives} = this.props
+ let {analysedSituation, pointedOutObjectives, conversationStarted} = this.props
// On travaille pour l'instant sur un objectif qui est une somme de plusieurs variables, et c'est ces variables que nous affichons comme résultats. D'où ce chemin :
let explanation = R.path(['formule', 'explanation', 'explanation'])(analysedSituation)
if (!explanation) return null
return (
-
+
+
)
}
}
diff --git a/source/engine/known-mecanisms.yaml b/source/engine/known-mecanisms.yaml
index 05db80b3a..06aee286f 100644
--- a/source/engine/known-mecanisms.yaml
+++ b/source/engine/known-mecanisms.yaml
@@ -32,7 +32,7 @@ taux:
multiplication:
description: |
- C'est une multiplication un peu améliorée, très utile pour exprimer les cotisations, souvent linéaires.
+ C'est une multiplication un peu améliorée, très utile pour exprimer les cotisations.
Sa propriété `assiette` est multipliée par un pourcentage, `taux`, ou par un `facteur` quand ce nom est plus approprié.
diff --git a/source/engine/marked.js b/source/engine/marked.js
index 972e7aa5f..8f45f110c 100644
--- a/source/engine/marked.js
+++ b/source/engine/marked.js
@@ -1,4 +1,5 @@
import marked from 'marked'
+import React from 'react'
let customMarked = new marked.Renderer()
customMarked.link = ( href, title, text ) =>
@@ -7,4 +8,8 @@ marked.setOptions({
renderer: customMarked
})
+export let createMarkdownDiv = markdown =>
+
+
+
export default marked
diff --git a/source/engine/traverse-common-jsx.js b/source/engine/traverse-common-jsx.js
index 3a38f5553..b4cdcdda5 100644
--- a/source/engine/traverse-common-jsx.js
+++ b/source/engine/traverse-common-jsx.js
@@ -2,7 +2,7 @@ import React from 'react'
import R from 'ramda'
import classNames from 'classnames'
-let treatValue = data => console.log('data', data) ||
+let treatValue = data =>
data == null
? '?'
: !isNaN(data) ? Math.round(+data) : data ? 'oui' : 'non'
diff --git a/source/images/contact.png b/source/images/contact.png
new file mode 100644
index 000000000..14f436963
Binary files /dev/null and b/source/images/contact.png differ
diff --git a/source/images/contact.svg b/source/images/contact.svg
new file mode 100644
index 000000000..debf61526
--- /dev/null
+++ b/source/images/contact.svg
@@ -0,0 +1,56 @@
+
+
\ No newline at end of file
diff --git a/source/routes.js b/source/routes.js
deleted file mode 100644
index 28e238a90..000000000
--- a/source/routes.js
+++ /dev/null
@@ -1,33 +0,0 @@
-import React from 'react'
-import { Route, IndexRoute, Link } from 'react-router'
-import Layout from './containers/Layout'
-import Home from './containers/Home'
-import Rule from './components/Rule'
-import SimulationCDD from './components/SimulationCDD'
-import SimulationNet from './components/SimulationNet'
-import CDDIntro from './components/CDDIntro'
-
-
-let RouteNotFound = () =>
-
-
- On peut facilement se perdre dans la législation...
-
-
- {/* TODO: credits for the image to add: https://thenounproject.com/term/treasure-map/96666/ */}
-
- Revenir en lieu sûr
-
-