🐛 réintroduction du choix 'Aucun' si pas interdit

L'interdiction n'est qu'un fix temporaire. Voir les commentaires pour les détails
pull/6/head
mama 2017-04-27 20:08:52 +02:00
parent e030ed1e44
commit ae6af2b1f1
5 changed files with 30 additions and 30 deletions

View File

@ -6,6 +6,8 @@
Le CDD est un contrat d'exception: son recours doit être autorisé par l'un des motifs spécifiés dans la loi.
formule:
une possibilité:
choix obligatoire: oui # cette contrainte devrait découler de la valeur CDD en amont, c'est un fix temporaire, qui devra être levé au passage à une simulation CDI / CDD
possibilités:
- classique
- contrat aidé
- complément formation
@ -16,6 +18,7 @@
embaucher en CDD: https://www.service-public.fr/particuliers/vosdroits/F34
les cas de recours au CDD: https://www.easycdd.com/LEGISLATION-CDD/Avant-de-rediger-un-contrat-CDD/Les-cas-de-recours-au-contrat-CDD
- espace: contrat salarié . CDD . motif
nom: classique
titre: motifs classiques

View File

@ -6,10 +6,11 @@
nom complet: CDD
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
# # 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
# # C'est ici que l'on dit : si le CDD a été choisi, la réponses à motif CDD doit être donnée (on ne peut ne pas y répondre)
# - Variable: emploi temporaire
# 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.

View File

@ -5,7 +5,6 @@
description: |
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 !
langue au chat possible: oui
formule:
une possibilité:
- CDD poursuivi en CDI

View File

@ -42,7 +42,7 @@ export default class Question extends Component {
if (R.is(Array)(choices))
return this.renderBinaryQuestion()
else
return this.renderChildren(choices.children)
return this.renderChildren(choices)
}
renderBinaryQuestion(){
let {
@ -59,7 +59,7 @@ export default class Question extends Component {
</ul>
)
}
renderChildren(children) {
renderChildren(choices) {
let {
input, // vient de redux-form
stepProps,
@ -73,16 +73,21 @@ export default class Question extends Component {
radioDottedName.split(name + ' . ')[1]
return (<ul>
{ children.map( ({name, titre, dottedName, children: nextChildren}) =>
nextChildren ?
{ choices.children.map( ({name, titre, dottedName, children}) =>
children ?
<li key={name} className="variant">
<div>{titre || name}</div>
{this.renderChildren(nextChildren)}
{this.renderChildren({children})}
</li>
: <li key={name} className="variantLeaf">
<RadioLabel key={name} {...{value: relativeDottedName(dottedName), label: titre || name, input, submit, themeColours}}/>
<RadioLabel {...{value: relativeDottedName(dottedName), label: titre || name, input, submit, themeColours}}/>
</li>
)}
{choices.canGiveUp &&
<li key='aucun' className="variantLeaf">
<RadioLabel {...{value: false, label: 'Aucun', input, submit, themeColours}}/>
</li>
}
</ul>)
}
}

View File

@ -33,13 +33,17 @@ let isVariant = R.path(['formule', 'une possibilité'])
let buildVariantTree = relevantPaths => path => {
let rec = path => {
let node = findRuleByDottedName(path),
variants = isVariant(node),
shouldBeExpanded = variants && variants.find( v => relevantPaths.find(rp => R.contains(path + ' . ' + v)(rp) ))
variant = isVariant(node),
variants = variant && R.unless(R.is(Array), R.prop('possibilités'))(variant),
shouldBeExpanded = variant && variants.find( v => relevantPaths.find(rp => R.contains(path + ' . ' + v)(rp) )),
canGiveUp = variant && !variant['choix obligatoire']
return Object.assign(
node,
shouldBeExpanded ?
{children: variants.map(v => rec(path + ' . ' + v))}
{ canGiveUp,
children: variants.map(v => rec(path + ' . ' + v))
}
: null
)
}
@ -57,25 +61,13 @@ export let generateGridQuestions = R.pipe(
})
),
// R.map( R.pipe(
// R.flatten,
// R.map(findRuleByDottedName),
// ([variant, ...variants]) =>
// Object.assign(
// constructStepMeta(variant),
// //TODO reintroduce langue au chat !
// {
// component: Question,
// choices: variants,
// },
// {objectives: []}
//TODO reintroduce objectives
// {
// objectives: R.pipe(
// R.chain(v => missingVariables[variant.dottedName + ' . ' + v]),
// R.uniq()
// )(variant['une possibilité'])
// }
//TODO reintroduce objectives
// {
// objectives: R.pipe(
// R.chain(v => missingVariables[variant.dottedName + ' . ' + v]),
// R.uniq()
// )(variant['une possibilité'])
// }
)
export let generateSimpleQuestions = R.pipe(
R.values, //TODO exploiter ici les groupes de questions de type 'record' (R.keys): elles pourraient potentiellement êtres regroupées visuellement dans le formulaire