[model] Desugar variable tags

pull/1/head
Mael Thomas 2016-07-27 16:40:38 +02:00
parent 59a64d6573
commit b684e4b150
6 changed files with 36 additions and 28 deletions

View File

@ -15,7 +15,7 @@ function convertHex(hex,opacity){
const Variable = ({color, name, selectVariable}) =>
<li
className="variable" style={{background: convertHex(color, .15)}}
className="variable" style={{background: convertHex(color, .2)}}
onClick={() => selectVariable(name)} >
<h3>{name}</h3>
</li>

View File

@ -1,3 +1,4 @@
t
body {
font-family: Open Sans;
color: #333;

View File

@ -2,28 +2,40 @@ import parameters from './load-parameters'
import deepAssign from 'deep-assign'
import R from 'ramda'
let groupedItemsByVariable = R.groupBy(R.prop('variable'))(parameters),
higherOrderVariables = R.pipe(
R.keys,
R.map(R.pipe(
R.propEq('variable'),
R.flip(R.find)(parameters)
))
)(groupedItemsByVariable),
/* Fonctions utiles */
let
hasHistoryProp = R.pipe(JSON.stringify, R.contains('"historique":')),
itemHasHistoricProp = (item, prop) => R.has(prop)(item) && hasHistoryProp(item[prop]),
itemIsCalculable = item =>
itemHasHistoricProp(item, 'linear') || itemHasHistoricProp(item, 'marginalRateTaxScale'),
/*
L'attribut tags est une hash map,
ou une liste
- de clés, qui sont un moyen courant d'exprimer [clef]: oui
- de hash maps.
Cette fonction fusionne tout ceci dans un objet
*/
handleHybridTags = R.when(R.isArrayLike,
R.reduce((final, tag) =>
R.merge(final, R.is(Object, tag) ? tag : {[tag]: 'oui'})
, {})
),
tagsConflict = (tags1, tags2) =>
R.compose(
R.any(R.identity),
R.values,
R.mapObjIndexed((tagValue, tag) => tags2[tag] != undefined && tags2[tag] !== tagValue)
)(tags1),
)(tags1)
let
groupedItemsByVariable = R.pipe(
// Desugar tags
R.map(p => R.merge(p, {tags: handleHybridTags(p.tags)})),
R.groupBy(R.prop('variable'))
)(parameters),
mergedItemsByVariable =
R.mapObjIndexed((variableItems, name) => {
/* Les items sont des fragments de variables.

View File

@ -1,8 +1,8 @@
- variable: AGS
description: Cotisation au Régime de Garantie des Salaires
tags:
dû par: employeur
plafonnée: oui
- plafonnée
- dû par: employeur
conditions:
assimilé salarié: non
reference: https://www.service-public.fr/professionnels-entreprises/vosdroits/F31409

View File

@ -1,15 +1,10 @@
- variable: chomage
description: Cotisation dassurance chômage
tags:
plafonnée: oui
branche: chomage
collecteur: URSSAF
destinataire: Pôle emploi
# Devrait être :
# - plafonnée
# - branche: chomage
# collecteur: URSSAF
# destinataire: Pôle emploi
- plafonnée
- branche: chomage
collecteur: URSSAF
destinataire: Pôle emploi
conditions:
assimilé salarié: non
linear:

View File

@ -37,14 +37,14 @@
- variable: vieillesse
tags:
plafonnée: oui
- plafonnée
linear:
limit: 4 * plafond_securite_sociale
- variable: vieillesse
tags:
dû par: salarié
plafonnée: oui
- plafonnée
- dû par: salarié
linear:
historique:
2017-01-01: .0690
@ -57,8 +57,8 @@
- variable: vieillesse
tags:
dû par: employeur
plafonnée: oui
- plafonnée
- dû par: employeur
linear:
historique:
2017-01-01: .0855