[model] Desugar variable tags
parent
59a64d6573
commit
b684e4b150
|
@ -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>
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
t
|
||||
body {
|
||||
font-family: Open Sans;
|
||||
color: #333;
|
||||
|
|
34
model.js
34
model.js
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,15 +1,10 @@
|
|||
- variable: chomage
|
||||
description: Cotisation d’assurance 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:
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue