import React, { Component } from 'react'
// import {findRuleByName} from '../engine/rules.js'
import {analyseSituation} from '../engine/traverse'
import './Rule.css'
import JSONTree from 'react-json-tree'
import R from 'ramda'
import PageTypeIcon from './PageTypeIcon'
import {connect} from 'react-redux'
import {formValueSelector} from 'redux-form'
import mockSituation from '../engine/mockSituation.yaml'
// situationGate function useful for testing :
let testingSituationGate = v => // eslint-disable-line no-unused-vars
R.path(v.split('.'))(mockSituation)
@connect(state => ({
situationGate: name => formValueSelector('conversation')(state, name)
}))
export default class Rule extends Component {
render() {
let {
params: {name},
situationGate
} = this.props,
rule = analyseSituation(
situationGate
).find(R.propEq('name', name))
if (!rule) {
this.props.router.push('/404')
return null
}
return (
Pourquoi cette règle me concerne ? Comment est-elle calculée ?
{rule.type}
{name}
{ do {
let [,cond] =
R.toPairs(rule).find(([,v]) => v.rulePropType == 'cond') || []
cond != null &&
Conditions de déclenchement
{cond.jsx}
}}
{/*
*/}
)
}
renderReferences(rule) {
return (
rule['référence'] && {rule['référence']}
)
|| (
rule['références'] &&
{R.toPairs(rule['références']).map(
([name, link]) =>
-
{link.indexOf('legifrance.gouv') >= 0 &&
}
{name}
)}
)
}
}
let RuleProp = ({nodeValue, explanation, name}) =>
{name}
{
explanation.category == 'mecanism' &&
}
let Mecanism = ({nodeValue, name, explanation}) =>
{name}
{R.contains(name)(["l'une de ces conditions", 'toutes ces conditions']) &&
{explanation.map(item => -
{item.category == 'variable' ?
: item.category == 'comparison' ?
:
}
)}
}
{name == 'multiplication' &&
}
{name == 'le maximum de' &&
}
let Multiplication = ({base, rate}) =>
×
{
rate.explanation ?
:
}
let Variable = (yo) => do {
let {nodeValue, variableName} = yo
;
{variableName}
}
let Comparison = ({nodeValue, text}) =>
{text}
let Percentage = ({percentage}) =>
{percentage}
// let Formula = ({explanation, nodeValue}) => do {
//
//
// {expression}
//
//
//
// }
let JSONView = ({o, rootKey}) => (
''}
theme={theme}
hideRoot={true}
shouldExpandNode={() => true}
data={rootKey ? {[rootKey]: o} : o}
/>
)
var theme = {
scheme: 'atelier forest',
author: 'bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest)',
base00: '#1b1918',
base01: '#2c2421',
base02: '#68615e',
base03: '#766e6b',
base04: '#9c9491',
base05: '#a8a19f',
base06: '#e6e2e0',
base07: '#f1efee',
base08: '#f22c40',
base09: '#df5320',
base0A: '#d5911a',
base0B: '#5ab738',
base0C: '#00ad9c',
base0D: '#407ee7',
base0E: '#6666ea',
base0F: '#c33ff3'
}