Ajoute l'ensemble des mécanismes existants
parent
0f1ca13b7f
commit
dd2db299d6
|
@ -52,6 +52,7 @@
|
|||
"react-redux": "^7.0.3",
|
||||
"react-router": "^5.1.1",
|
||||
"react-router-dom": "^5.1.1",
|
||||
"react-router-hash-link": "^1.2.2",
|
||||
"react-spring": "=8.0.27",
|
||||
"react-syntax-highlighter": "^10.1.1",
|
||||
"react-to-print": "^2.5.1",
|
||||
|
|
|
@ -222,7 +222,7 @@ prime:
|
|||
taux: taux du bonus
|
||||
```
|
||||
|
||||
**[Voir la liste des mécanismes existants](/mécanismes)**
|
||||
> **[Voir la description des mécanismes existants](./mécanismes)**
|
||||
|
||||
## Applicabilité
|
||||
|
||||
|
|
|
@ -5,11 +5,13 @@ une de ces conditions:
|
|||
Renvoie vrai si l'une des conditions est applicable.
|
||||
retourne: Booléen
|
||||
exemples:
|
||||
base:
|
||||
base: >-
|
||||
age:
|
||||
formule: 17 ans
|
||||
|
||||
mineur émancipé:
|
||||
formule: oui
|
||||
|
||||
peut voter:
|
||||
formule:
|
||||
une de ces conditions:
|
||||
|
@ -44,18 +46,20 @@ produit:
|
|||
plafond: Plafond au dessus duquel le taux appliqué est nul
|
||||
|
||||
exemples:
|
||||
base:
|
||||
base: >-
|
||||
cotisation:
|
||||
formule:
|
||||
produit:
|
||||
assiette: 2000 €/mois
|
||||
taux: 5%
|
||||
|
||||
assiette plafonnée:
|
||||
assiette plafonnée: >-
|
||||
plafond sécurité sociale:
|
||||
formule: 3000 €/mois
|
||||
|
||||
assiette cotisation:
|
||||
formule: 15000 €/mois
|
||||
|
||||
chômage:
|
||||
formule:
|
||||
produit:
|
||||
|
@ -81,7 +85,7 @@ variations:
|
|||
- ...
|
||||
- sinon: consequence évaluée si aucune des conditions précédente n'était applicable
|
||||
exemples:
|
||||
base:
|
||||
base: >-
|
||||
taux réduit:
|
||||
formule: oui
|
||||
|
||||
|
@ -92,7 +96,7 @@ variations:
|
|||
alors: 3.45%
|
||||
- sinon: 5.25%
|
||||
|
||||
dans un produit:
|
||||
dans un produit: >-
|
||||
assiette cotisation:
|
||||
formule: 2300 €/mois
|
||||
|
||||
|
@ -121,17 +125,19 @@ somme:
|
|||
- ...
|
||||
|
||||
exemples:
|
||||
base:
|
||||
base: >-
|
||||
somme:
|
||||
- 15.89 €
|
||||
- 12% * 14 €
|
||||
- (-30 €)
|
||||
terme non applicable:
|
||||
terme non applicable: >-
|
||||
a:
|
||||
formule: 50 €
|
||||
|
||||
b:
|
||||
applicable si: non
|
||||
formule: 20 €
|
||||
|
||||
somme:
|
||||
formule:
|
||||
somme:
|
||||
|
@ -158,7 +164,7 @@ arrondi:
|
|||
description: >-
|
||||
Arrondi à l'entier le plus proche, ou à une précision donnée.
|
||||
exemples:
|
||||
base:
|
||||
base: >-
|
||||
arrondi:
|
||||
formule:
|
||||
arrondi:
|
||||
|
@ -180,7 +186,7 @@ régularisation:
|
|||
numérique, et avoir une unité `/mois`
|
||||
|
||||
exemples:
|
||||
base:
|
||||
base: >-
|
||||
brut:
|
||||
formule:
|
||||
somme:
|
||||
|
|
|
@ -8,6 +8,7 @@ import { getSessionStorage } from '../../utils'
|
|||
import redirects from '../mon-entreprise.fr/redirects'
|
||||
import Landing from './Landing'
|
||||
import Studio from './LazyStudio'
|
||||
import Mécanismes from './Mécanismes'
|
||||
|
||||
function Router({ language }) {
|
||||
useEffect(() => {
|
||||
|
@ -38,7 +39,8 @@ let RouterSwitch = () => {
|
|||
<>
|
||||
<Switch>
|
||||
<Route exact path="/" component={Landing} />
|
||||
<Route exact path="/Studio" component={Studio} />
|
||||
<Route exact path="/studio" component={Studio} />
|
||||
<Route exact path="/mécanismes" component={Mécanismes} />
|
||||
<Route component={App} />
|
||||
</Switch>
|
||||
</>
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import { Markdown } from 'Components/utils/markdown'
|
||||
import { ScrollToTop } from 'Components/utils/Scroll'
|
||||
import publicodeReadme from 'Engine/README.md'
|
||||
import React, { useEffect } from 'react'
|
||||
import { Header } from './Header'
|
||||
|
@ -19,6 +20,7 @@ export default function Landing() {
|
|||
})
|
||||
return (
|
||||
<div className="app-content ui__ container" css="margin: 2rem 0">
|
||||
<ScrollToTop />
|
||||
<Header />
|
||||
<br />
|
||||
<br />
|
||||
|
|
|
@ -0,0 +1,66 @@
|
|||
import { Markdown } from 'Components/utils/markdown'
|
||||
import { ScrollToTop } from 'Components/utils/Scroll'
|
||||
import mecanisms from 'Engine/mecanisms.yaml'
|
||||
import React, { useEffect } from 'react'
|
||||
import { useLocation } from 'react-router'
|
||||
import { HashLink as Link } from 'react-router-hash-link'
|
||||
import { capitalise0 } from '../../utils'
|
||||
import { Header } from './Header'
|
||||
|
||||
type MecanismProp = {
|
||||
name: string
|
||||
exemples: { base: string }
|
||||
description: string
|
||||
arguments: any
|
||||
}
|
||||
const Mecanism = ({ name, description, exemples }: MecanismProp) => (
|
||||
<React.Fragment key={name}>
|
||||
<h2 id={name}>
|
||||
<pre>{name}</pre>
|
||||
</h2>
|
||||
<Markdown source={description} />
|
||||
{exemples && (
|
||||
<>
|
||||
{Object.entries(exemples).map(([name, exemple]) => (
|
||||
<React.Fragment key={name}>
|
||||
<h3>{name === 'base' ? 'Exemple' : capitalise0(name)}</h3>
|
||||
<Markdown source={`\`\`\`yaml\n${exemple}\n\`\`\``} />
|
||||
</React.Fragment>
|
||||
))}{' '}
|
||||
</>
|
||||
)}
|
||||
<Link to={useLocation().pathname + '#top'}>Retour à la liste</Link>
|
||||
</React.Fragment>
|
||||
)
|
||||
export default function Landing() {
|
||||
useEffect(() => {
|
||||
var css = document.createElement('style')
|
||||
css.type = 'text/css'
|
||||
css.innerHTML = `
|
||||
#js {
|
||||
animation: appear 0.5s;
|
||||
opacity: 1;
|
||||
}
|
||||
#loading {
|
||||
display: none !important;
|
||||
}`
|
||||
document.body.appendChild(css)
|
||||
})
|
||||
return (
|
||||
<div className="app-content ui__ container" css="margin: 2rem 0">
|
||||
<ScrollToTop />
|
||||
<Header />
|
||||
<h1 id="top">Mécanismes existants</h1>
|
||||
<ul>
|
||||
{Object.entries(mecanisms).map(([name, data]) => (
|
||||
<li key={name}>
|
||||
<Link to={useLocation().pathname + '#' + name}>{name}</Link>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
{Object.entries(mecanisms).map(([name, data]) => (
|
||||
<Mecanism {...data} name={name} />
|
||||
))}
|
||||
</div>
|
||||
)
|
||||
}
|
|
@ -1,5 +1,3 @@
|
|||
import baremeIr from '!!raw-loader!./exemples/bareme-ir.yaml'
|
||||
import douche from '!!raw-loader!./exemples/douche.yaml'
|
||||
import { ControlledEditor } from '@monaco-editor/react'
|
||||
import Engine from 'Engine/react'
|
||||
import { safeLoad } from 'js-yaml'
|
||||
|
@ -10,11 +8,6 @@ import { useLocation } from 'react-router'
|
|||
import styled from 'styled-components'
|
||||
import { Header } from './Header'
|
||||
|
||||
let examples = {
|
||||
'bareme-ir': baremeIr,
|
||||
douche
|
||||
}
|
||||
|
||||
let initialInput = `a:
|
||||
formule: 10€
|
||||
b:
|
||||
|
@ -30,15 +23,8 @@ d:
|
|||
|
||||
export default function Studio() {
|
||||
const search = new URLSearchParams(useLocation().search ?? '')
|
||||
const currentExample = search.get('exemple')
|
||||
const code = search.get('code')
|
||||
const [editorValue, setEditorValue] = useState(
|
||||
code
|
||||
? code
|
||||
: currentExample && Object.keys(examples).includes(currentExample)
|
||||
? examples[currentExample]
|
||||
: initialInput
|
||||
)
|
||||
const [editorValue, setEditorValue] = useState(code ? code : initialInput)
|
||||
const [targets, setTargets] = useState<string[]>([])
|
||||
const [rules, setRules] = useState(editorValue)
|
||||
const handleShare = useCallback(() => {
|
||||
|
|
|
@ -1,23 +0,0 @@
|
|||
revenu imposable:
|
||||
formule: 18000 €
|
||||
|
||||
revenu abattu:
|
||||
formule:
|
||||
allègement:
|
||||
assiette: revenu imposable
|
||||
abattement: 10%
|
||||
|
||||
impôt sur le revenu:
|
||||
formule:
|
||||
barème:
|
||||
assiette: revenu abattu
|
||||
tranches:
|
||||
- taux: 0%
|
||||
plafond: 9807€
|
||||
- taux: 14%
|
||||
plafond: 27086€
|
||||
- taux: 30%
|
||||
plafond: 72617€
|
||||
- taux: 41%
|
||||
plafond: 153783€
|
||||
- taux: 45%
|
|
@ -1,96 +0,0 @@
|
|||
douche:
|
||||
icônes: 🚿
|
||||
|
||||
douche . impact par douche:
|
||||
titre: Une douche
|
||||
formule: impact par litre * litres d'eau
|
||||
|
||||
douche . impact par litre:
|
||||
formule: eau . impact par litre froid + chauffage . impact par litre
|
||||
|
||||
douche . litres d'eau:
|
||||
formule: durée de la douche * litres par minute
|
||||
|
||||
douche . litres par minute:
|
||||
unité: l/minute
|
||||
formule:
|
||||
variations:
|
||||
- si: pomme de douche économe
|
||||
alors: 9
|
||||
- sinon: 18
|
||||
références:
|
||||
- https://www.jeconomiseleau.org/index.php/particuliers/economies-par-usage/la-douche-et-le-bain
|
||||
|
||||
douche . pomme de douche économe:
|
||||
question: Utilisez-vous une pomme de douche économe ?
|
||||
par défaut: non
|
||||
|
||||
douche . durée de la douche:
|
||||
question: Combien de temps dure votre douche en général (en minutes) ?
|
||||
par défaut: 5
|
||||
unité: minute
|
||||
suggestions:
|
||||
expresse: 5
|
||||
moyenne: 10
|
||||
lente: 20
|
||||
|
||||
chauffage:
|
||||
icônes: 🔥
|
||||
|
||||
chauffage . type:
|
||||
question: Votre eau est chauffée comment ?
|
||||
formule:
|
||||
une possibilité:
|
||||
choix obligatoire: oui
|
||||
possibilités:
|
||||
- gaz
|
||||
- fioul
|
||||
- électricité
|
||||
par défaut: gaz
|
||||
|
||||
chauffage . impact par kWh:
|
||||
unité: kgCO₂e/kWh
|
||||
formule:
|
||||
variations:
|
||||
- si: type = 'gaz'
|
||||
alors: 0.227
|
||||
- si: type = 'fioul'
|
||||
alors: 0.324
|
||||
- si: type = 'électricité'
|
||||
alors: 0.059
|
||||
|
||||
note: |
|
||||
La base carbone de l'ADEME ne permet malheureusement pas de faire des liens profonds vers les chiffres utilisés.
|
||||
Pour l'électricité, nous retenons le chiffre de l'ADEME "Electricité - 2016 - usage : Eau Chaude Sanitaire - consommation".
|
||||
références:
|
||||
- http://www.bilans-ges.ademe.fr/fr/accueil
|
||||
- https://www.electricitymap.org/?page=country&solar=false&remote=true&wind=false&countryCode=FR
|
||||
- https://decrypterlenergie.org/decryptage-quel-est-le-contenu-en-co2-du-kwh-electrique
|
||||
|
||||
chauffage . énergie consommée par litre:
|
||||
formule: 0.0325
|
||||
unité: kWh
|
||||
références:
|
||||
- https://www.econologie.com/forums/plomberie-et-sanitaire/prix-reel-d-un-bain-ou-d-une-douche-pour-l-eau-et-chauffage-t12727.html
|
||||
|
||||
chauffage . impact par litre:
|
||||
titre: impact par litre chauffé
|
||||
formule: impact par kWh * énergie consommée par litre
|
||||
|
||||
eau:
|
||||
icônes: 🌊
|
||||
|
||||
eau . impact par litre froid:
|
||||
unité: kgCO₂e/l
|
||||
formule: eau potable + traitement eau usée
|
||||
références:
|
||||
- >-
|
||||
http://www.bilans-ges.ademe.fr/documentation/UPLOAD_DOC_FR/index.htm?boissons.htm
|
||||
|
||||
eau . impact par litre froid . eau potable:
|
||||
unité: kgCO₂e/l
|
||||
formule: 0.000132
|
||||
|
||||
eau . impact par litre froid . traitement eau usée:
|
||||
unité: kgCO₂e/l
|
||||
formule: 0.000262
|
|
@ -9365,6 +9365,13 @@ react-router-dom@^5.1.1:
|
|||
tiny-invariant "^1.0.2"
|
||||
tiny-warning "^1.0.0"
|
||||
|
||||
react-router-hash-link@^1.2.2:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/react-router-hash-link/-/react-router-hash-link-1.2.2.tgz#7a0ad5e925d49596d19554de8bc6c554ce4f8099"
|
||||
integrity sha512-LBthLVHdqPeKDVt3+cFRhy15Z7veikOvdKRZRfyBR2vjqIE7rxn+tKLjb6DOmLm6JpoQVemVDnxQ35RVnEHdQA==
|
||||
dependencies:
|
||||
prop-types "^15.6.0"
|
||||
|
||||
react-router@5.1.2, react-router@^5.1.1:
|
||||
version "5.1.2"
|
||||
resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.1.2.tgz#6ea51d789cb36a6be1ba5f7c0d48dd9e817d3418"
|
||||
|
|
Loading…
Reference in New Issue