From dd2db299d602f628a6bf080918042ed0f15668f5 Mon Sep 17 00:00:00 2001 From: Johan Girod Date: Tue, 24 Mar 2020 19:09:09 +0100 Subject: [PATCH] =?UTF-8?q?Ajoute=20l'ensemble=20des=20m=C3=A9canismes=20e?= =?UTF-8?q?xistants?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 1 + source/engine/README.md | 2 +- source/engine/mecanisms.yaml | 24 +++-- source/sites/publi.codes/App.js | 4 +- source/sites/publi.codes/Landing.js | 2 + source/sites/publi.codes/Mécanismes.tsx | 66 +++++++++++++ source/sites/publi.codes/Studio.tsx | 16 +--- .../sites/publi.codes/exemples/bareme-ir.yaml | 23 ----- source/sites/publi.codes/exemples/douche.yaml | 96 ------------------- yarn.lock | 7 ++ 10 files changed, 96 insertions(+), 145 deletions(-) delete mode 100644 source/sites/publi.codes/exemples/bareme-ir.yaml delete mode 100644 source/sites/publi.codes/exemples/douche.yaml diff --git a/package.json b/package.json index 75f5da648..c013cc1f0 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/source/engine/README.md b/source/engine/README.md index ebc94ec4d..fdfdbba10 100644 --- a/source/engine/README.md +++ b/source/engine/README.md @@ -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é diff --git a/source/engine/mecanisms.yaml b/source/engine/mecanisms.yaml index 5eef242f6..83c94c7a0 100644 --- a/source/engine/mecanisms.yaml +++ b/source/engine/mecanisms.yaml @@ -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: diff --git a/source/sites/publi.codes/App.js b/source/sites/publi.codes/App.js index 858bf0bd2..566d96da1 100644 --- a/source/sites/publi.codes/App.js +++ b/source/sites/publi.codes/App.js @@ -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 = () => { <> - + + diff --git a/source/sites/publi.codes/Landing.js b/source/sites/publi.codes/Landing.js index 28a38a568..59708f9e7 100644 --- a/source/sites/publi.codes/Landing.js +++ b/source/sites/publi.codes/Landing.js @@ -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 (
+


diff --git a/source/sites/publi.codes/Mécanismes.tsx b/source/sites/publi.codes/Mécanismes.tsx index e69de29bb..59531c525 100644 --- a/source/sites/publi.codes/Mécanismes.tsx +++ b/source/sites/publi.codes/Mécanismes.tsx @@ -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) => ( + +

+
{name}
+

+ + {exemples && ( + <> + {Object.entries(exemples).map(([name, exemple]) => ( + +

{name === 'base' ? 'Exemple' : capitalise0(name)}

+ +
+ ))}{' '} + + )} + Retour à la liste +
+) +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 ( +
+ +
+

Mécanismes existants

+
    + {Object.entries(mecanisms).map(([name, data]) => ( +
  • + {name} +
  • + ))} +
+ {Object.entries(mecanisms).map(([name, data]) => ( + + ))} +
+ ) +} diff --git a/source/sites/publi.codes/Studio.tsx b/source/sites/publi.codes/Studio.tsx index 34e594585..5ddaa27a6 100644 --- a/source/sites/publi.codes/Studio.tsx +++ b/source/sites/publi.codes/Studio.tsx @@ -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([]) const [rules, setRules] = useState(editorValue) const handleShare = useCallback(() => { diff --git a/source/sites/publi.codes/exemples/bareme-ir.yaml b/source/sites/publi.codes/exemples/bareme-ir.yaml deleted file mode 100644 index 75ae4bc44..000000000 --- a/source/sites/publi.codes/exemples/bareme-ir.yaml +++ /dev/null @@ -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% diff --git a/source/sites/publi.codes/exemples/douche.yaml b/source/sites/publi.codes/exemples/douche.yaml deleted file mode 100644 index d002af0dc..000000000 --- a/source/sites/publi.codes/exemples/douche.yaml +++ /dev/null @@ -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 diff --git a/yarn.lock b/yarn.lock index e41f2a28c..8d9d6c3e5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -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"