statistiques/src/statistiques/v2/penales/computeStatDepartement.ts
2025-06-23 09:28:57 +02:00

42 lines
1.6 KiB
TypeScript

import { Famille } from "../../../data/Famille";
import { isEvtTypeProcedurePenaleHorsGendarmerie } from "../../../data/TypeEvenementsPenal";
import { filterFamillesWithOneOfEvenements } from "../filterFamillesWithOneOfEvenements";
import { filterFamillesWithOneOfEvenementsOfType } from "../filterFamillesWithOneOfEvenementsOfType";
import { percent } from "../math/percent";
import { nbFamillesAvecPagesLiees } from "../nbFamillesAvecPagesLiees";
import { StatsPenales } from "./StatsPenales";
export function computeStatDepartement(
famillesDepartements: Famille[]
): StatsPenales["parDepartements"][string] {
return {
nbFamilles: nbFamillesAvecPagesLiees(famillesDepartements),
pourcentageMED: percent(
filterFamillesWithOneOfEvenementsOfType(
famillesDepartements,
"Mise en demeure de scolarisation"
).length,
famillesDepartements.length
),
pourcentageProcedurePenaleHorsGendarmerie: percent(
filterFamillesWithOneOfEvenements(famillesDepartements, (e) =>
isEvtTypeProcedurePenaleHorsGendarmerie(e.Type)
).length,
famillesDepartements.length
),
pourcentageTribunalCorrectionnel: percent(
filterFamillesWithOneOfEvenements(
famillesDepartements,
(e) => e.Type === "Tribunal correctionnel"
).length,
famillesDepartements.length
),
pourcentageTribunalPolice: percent(
filterFamillesWithOneOfEvenements(
famillesDepartements,
(e) => e.Type === "Tribunal de police judiciaire"
).length,
famillesDepartements.length
),
};
}