Skip to content
This repository has been archived by the owner on May 18, 2021. It is now read-only.

Permettre l'édition des paramètres de la DSU et les envoyer au serveur. #71

Merged
merged 6 commits into from
Aug 3, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,15 @@ $padding-y: 15px;
cursor: pointer;
outline: none;

.text {
flex-grow: 1;
display: flex;
align-items: center;

.icon {
margin-right: 5px;
}

.title {
font-weight: bold;
text-transform: uppercase;
Expand All @@ -25,12 +34,10 @@ $padding-y: 15px;

}

.header:hover {
background-color: #e1e1e1;
}

.text {
flex-grow: 1;
.header:hover {
background-color: #e1e1e1;
}

.content {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,29 @@
import ExpandLessIcon from "@material-ui/icons/ExpandLess";
import ExpandMoreIcon from "@material-ui/icons/ExpandMore";
import PropTypes from "prop-types";
import { PureComponent } from "react";

import styles from "./PrimaryExpandablePanel.module.scss";

export class PrimaryExpandablePanel extends PureComponent {
interface Props {
expanded?: boolean;
subTitle?: string;
title: string;
icon?: JSX.Element;
}

interface State {
expanded: boolean;
id: number;
}

export class PrimaryExpandablePanel extends PureComponent<Props, State> {
static lastId = 0;

constructor(props) {
super(props);
PrimaryExpandablePanel.lastId += 1;
const { expanded } = this.props;
this.state = { expanded, id: PrimaryExpandablePanel.lastId };
this.state = { expanded: !!expanded, id: PrimaryExpandablePanel.lastId };
this.onExpandedChange = this.onExpandedChange.bind(this);
}

Expand All @@ -22,7 +33,9 @@ export class PrimaryExpandablePanel extends PureComponent {
}

render() {
const { children, subTitle, title } = this.props;
const {
children, icon, subTitle, title,
} = this.props;
const { expanded, id } = this.state;
return (
<div>
Expand All @@ -33,17 +46,18 @@ export class PrimaryExpandablePanel extends PureComponent {
className={styles.header}
id={`primary-panel${id}-header`}
role="button"
tabIndex="0"
tabIndex={0}
onClick={this.onExpandedChange}
onKeyDown={e => e.key === "Enter" && this.onExpandedChange()}>
<div className={styles.text}>
{icon && <span className={styles.icon}>{icon}</span>}
<span className={styles.title}>{title}</span>
<span className={styles.subTitle}>
{subTitle && ` - ${subTitle}`}
</span>
</div>
<div>
<span aria-disabled="false" aria-hidden="true" className={styles.btn} type="button">
<span aria-disabled="false" aria-hidden="true" className={styles.btn}>
{expanded ? <ExpandLessIcon /> : <ExpandMoreIcon />}
</span>
</div>
Expand All @@ -57,15 +71,3 @@ export class PrimaryExpandablePanel extends PureComponent {
);
}
}

PrimaryExpandablePanel.defaultProps = {
expanded: false,
subTitle: "",
};

PrimaryExpandablePanel.propTypes = {
children: PropTypes.node.isRequired,
expanded: PropTypes.bool,
subTitle: PropTypes.string,
title: PropTypes.string.isRequired,
};
22 changes: 12 additions & 10 deletions components/dotations/articles/Articles.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import LocalFloristIcon from "@material-ui/icons/LocalFlorist";
import LocationCityIcon from "@material-ui/icons/LocationCity";
import { Fragment, PureComponent } from "react";

import { PrimaryExpandablePanel, SecondaryExpandablePanel } from "../../common";
Expand All @@ -10,7 +12,7 @@ import { DsuIndice } from "./dsu-indice";
import { DsuRepartition } from "./dsu-repartition";
// import { MontantDgf } from "./montant-dgf";
// import { MontantDgfCommunes } from "./montant-dgf-communes";
import { MontantDsrDsu } from "./montant-dsr-dsu";
// import { MontantDsrDsu } from "./montant-dsr-dsu";

export class Articles extends PureComponent {
render() {
Expand All @@ -22,6 +24,7 @@ export class Articles extends PureComponent {
<div style={{ marginRight: "1em" }}>
<PrimaryExpandablePanel
expanded
icon={<LocalFloristIcon />}
title="Dotation de solidarité rurale (DSR)">
<SecondaryExpandablePanel
expanded
Expand All @@ -47,14 +50,15 @@ export class Articles extends PureComponent {
</PrimaryExpandablePanel>
{isDsuVisible && (
<PrimaryExpandablePanel
icon={<LocationCityIcon />}
title="Dotation de solidarité urbaine (DSU)">
<SecondaryExpandablePanel
subTitle="Article L2334-16 du CGCT"
title="Périmètre général d&apos;éligibilité">
<DsuEligibilite />
</SecondaryExpandablePanel>
<SecondaryExpandablePanel
subTitle="Article L2334-18-2 du CGCT"
subTitle="Articles L2334-18-2 et L2334-18-4 du CGCT"
title="Répartition">
<DsuRepartition />
</SecondaryExpandablePanel>
Expand All @@ -65,27 +69,25 @@ export class Articles extends PureComponent {
</SecondaryExpandablePanel>
</PrimaryExpandablePanel>
)}
{isDsuVisible && (
<PrimaryExpandablePanel
{/* <PrimaryExpandablePanel
title="Montant des dotations">
{/* <SecondaryExpandablePanel
<SecondaryExpandablePanel
expanded
subTitle="Article L1613-1 du CGCT"
title="Montant de la dotation globale de fonctionnement (DGF)">
<MontantDgf />
</SecondaryExpandablePanel> */}
{/* <SecondaryExpandablePanel
</SecondaryExpandablePanel>
<SecondaryExpandablePanel
subTitle="Article L2334-1"
title="Montant de la DGF communes">
<MontantDgfCommunes />
</SecondaryExpandablePanel> */}
</SecondaryExpandablePanel>
<SecondaryExpandablePanel
subTitle="Article L2334-13 du CGCT"
title="Montants de la DSR et de la DSU">
<MontantDsrDsu />
</SecondaryExpandablePanel>
</PrimaryExpandablePanel>
)}
</PrimaryExpandablePanel> */}
</div>
</Fragment>
);
Expand Down
34 changes: 30 additions & 4 deletions components/dotations/articles/dsu-eligibilite/DsuEligibilite.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import { Fragment, PureComponent } from "react";

import { StateParameter } from "../../../common";

export class DsuEligibilite extends PureComponent {
render() {
// Article L2334-20 du CGCT
Expand All @@ -16,7 +18,15 @@ export class DsuEligibilite extends PureComponent {
&nbsp;:
<br />
<br />
1° Les [deux premiers tiers] 66 premiers % des communes de 10 000 habitants et plus,
1° Les deux premiers tiers [ les premiers
{" "}
<StateParameter editable amendementInputSize="small" path="dotations.communes.dsu.eligibilite.pourcentageRangSeuilHaut" />
{" "}
% ] des communes de
{" "}
<StateParameter editable path="dotations.communes.dsu.eligibilite.popMinSeuilHaut" />
{" "}
habitants et plus,
classées, chaque année, en fonction d&apos;un indice synthétique de ressources
et de charges défini à
{" "}
Expand All @@ -29,8 +39,20 @@ export class DsuEligibilite extends PureComponent {
</a>
<br />
<br />
2° Le [premier dixième] 10 premiers % des communes dont la population est
comprise entre 5 000 et 9 999 habitants, classées, chaque année,
2° Le premier dixième [ les premiers
{" "}
<StateParameter editable amendementInputSize="small" path="dotations.communes.dsu.eligibilite.pourcentageRangSeuilBas" />
{" "}
% ] des communes dont la population est
comprise entre
{" "}
<StateParameter editable path="dotations.communes.dsu.eligibilite.popMinSeuilBas" />
{" "}
et
{" "}
<StateParameter path="dotations.communes.dsu.eligibilite.popMinSeuilHaut" />
{" "}
[exclu] habitants, classées, chaque année,
en fonction d&apos;un indice synthétique de ressources
et de charges défini à
{" "}
Expand All @@ -44,7 +66,11 @@ export class DsuEligibilite extends PureComponent {
<br />
<br />
Toutefois, ne peuvent être éligibles les communes dont le potentiel financier
par habitant est supérieur à [deux fois et demi] 2,5 le potentiel
par habitant est supérieur à [deux fois et demi]
{" "}
<StateParameter editable amendementInputSize="small" path="dotations.communes.dsu.eligibilite.rapportPotentielFinancier" />
{" "}
le potentiel
financier moyen par habitant des communes de même groupe démographique
défini aux 1° et 2°.
</Fragment>
Expand Down
76 changes: 54 additions & 22 deletions components/dotations/articles/dsu-indice/DsuIndice.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Fragment, PureComponent } from "react";

import { ExpandablePanelSubTitle, ExpandableText } from "../../../common";
import { ExpandablePanelSubTitle, ExpandableText, StateParameter } from "../../../common";


export class DsuIndice extends PureComponent {
Expand All @@ -18,12 +18,20 @@ export class DsuIndice extends PureComponent {
>
l&apos;article L. 2334-16
</a>
&nbsp;pour les communes de 10 000 habitants
&nbsp;pour les communes de
{" "}
<StateParameter amendementInputSize="small" path="dotations.communes.dsu.eligibilite.popMinSeuilHaut" />
{" "}
habitants
et plus est constitué :
<br />
<br />
1° Du rapport entre le potentiel financier par habitant des communes
de 10 000 habitants et plus et le potentiel financier par habitant
de
{" "}
<StateParameter amendementInputSize="small" path="dotations.communes.dsu.eligibilite.popMinSeuilHaut" />
{" "}
habitants et plus et le potentiel financier par habitant
de la commune, tel que défini à&nbsp;
<a
href="https://www.legifrance.gouv.fr/affichCodeArticle.do;jsessionid=77D4545E5B93968FCA804A193A0C9A54.tplgfr38s_3?idArticle=LEGIARTI000036589500&cidTexte=LEGITEXT000006070633&categorieLien=id&dateTexte=20181231"
Expand All @@ -37,18 +45,30 @@ export class DsuIndice extends PureComponent {
<br />
2° Du rapport entre la proportion de logements sociaux dans le total
des logements de la commune et la proportion de logements sociaux dans
le total des logements des communes de 10 000 habitants et plus ;
le total des logements des communes de
{" "}
<StateParameter path="dotations.communes.dsu.eligibilite.popMinSeuilHaut" />
{" "}
habitants et plus ;
<br />
<br />
3° Du rapport entre la proportion du total des bénéficiaires
d&apos;aides au logement, y compris leur conjoint et les personnes
à charge vivant habituellement dans leur foyer, dans le nombre
total de logements de la commune et cette même proportion constatée
dans l&apos;ensemble des communes de 10 000 habitants et plus ;
dans l&apos;ensemble des communes de
{" "}
<StateParameter path="dotations.communes.dsu.eligibilite.popMinSeuilHaut" />
{" "}
habitants et plus ;
<br />
<br />
4° Du rapport entre le revenu moyen par habitant des communes
de 10 000 habitants et plus et le revenu par habitant de la commune,
de
{" "}
<StateParameter path="dotations.communes.dsu.eligibilite.popMinSeuilHaut" />
{" "}
habitants et plus et le revenu par habitant de la commune,
calculé en prenant en compte la population définie au premier alinéa
de&nbsp;
<a
Expand All @@ -69,7 +89,7 @@ export class DsuIndice extends PureComponent {
les logements locatifs appartenant aux organismes d&apos;habitations
à loyer modéré, aux sociétés
d&apos;économie mixte locales et aux filiales de la société ICADE,
à l&apos;exclusion des logements-foyers mentionnés au 5° de l&apos;article L. 351-2 du
à l&apos;exclusion des logements-foyers mentionnés au 5° de l&apos;article L. 831-1 du
code de la construction et de l&apos;habitation. Sont aussi retenus comme
des logements sociaux pour l&apos;application du présent article les logements
de la Société nationale immobilière ou de ses filiales qui appartenaient
Expand All @@ -78,6 +98,10 @@ export class DsuIndice extends PureComponent {
le dernier alinéa des articles L. 5214-23-2, L. 5215-35 et
L. 5216-8-1 du présent code. Sont égalEment considérés comme des
logements sociaux pour l&apos;application du présent article les logements
faisant l&apos;objet d&apos;une opération de requalification de copropriétés dégradées
reconnue d&apos;intérêt national selon les modalités définies à l&apos;article L. 741-2
du code de la construction et de l&apos;habitation. Sont également considérés comme
des logements sociaux pour l&apos;application du présent article les logements
appartenant à l&apos;Entreprise minière et chimique et aux sociétés à
participation majoritaire de l&apos;Entreprise minière et chimique,
les logements appartenant aux houillères de bassin,
Expand All @@ -104,10 +128,8 @@ export class DsuIndice extends PureComponent {
Les aides au logement retenues pour l&apos;application du
présent article sont,&nbsp;
<ExpandableText caption="... en savoir plus">
dans
des conditions définies par décret en Conseil d&apos;État, les prestations prévues
aux articles L. 351-1 du code de la construction et de l&apos;habitation et L. 542-1
et L. 831-1 du code de la sécurité sociale.
dans des conditions définies par décret en Conseil d&apos;État, les prestations prévues
à l&apos;article L. 821-1 du code de la construction et de l&apos;habitation.
</ExpandableText>
<br />
<br />
Expand All @@ -121,28 +143,38 @@ export class DsuIndice extends PureComponent {
L&apos;indice synthétique de ressources et de charges est obtenu par addition des
rapports visés aux 1°, 2°, 3° et 4°,
<br />
en pondérant le premier par 45 %,
en pondérant le premier par
{" "}
<StateParameter editable amendementInputSize="small" path="dotations.communes.dsu.eligibilite.indiceSynthetique.ponderationPotentielFinancier" />
{" "}
%,
<br />
le deuxième par 15 %,
le deuxième par
{" "}
<StateParameter editable amendementInputSize="small" path="dotations.communes.dsu.eligibilite.indiceSynthetique.ponderationLogementsSociaux" />
{" "}
%,
<br />

le troisième par 30 %

le troisième par
{" "}
<StateParameter editable amendementInputSize="small" path="dotations.communes.dsu.eligibilite.indiceSynthetique.ponderationAideAuLogement" />
{" "}
%
<br />
et le quatrième par 10 %.


et le quatrième par
{" "}
<StateParameter editable amendementInputSize="small" path="dotations.communes.dsu.eligibilite.indiceSynthetique.ponderationRevenu" />
{" "}
%.
<br />
<br />
Toutefois, chacun des pourcentages de pondération peut être majoré ou
minoré pour l&apos;ensemble des communes bénéficiaires d&apos;au plus [cinq] 5 points
minoré pour l&apos;ensemble des communes bénéficiaires d&apos;au plus cinq points
dans des conditions fixées par un décret en Conseil d&apos;État.
<br />
<br />
Les communes sont classées en fonction de la valeur décroissante
de leur indice synthétique.


</Fragment>
);
}
Expand Down