mirror of
https://framagit.org/enfance-libre/statistiques
synced 2025-12-07 13:53:45 +00:00
feat: admin adhoc => stat globale
This commit is contained in:
parent
2a202fc126
commit
fb9399285d
11 changed files with 144 additions and 144 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
import { Famille, isExResistant, isResistant } from "../../../data/Famille";
|
import { Famille, isExResistant, isResistant } from "../../../data/Famille";
|
||||||
import { filterFamillesWithOneOfEvenementsOfType } from "../filterFamillesWithOneOfEvenementsOfType";
|
import { filterFamillesWithOneOfEvenementsOfType } from "../filterFamillesWithOneOfEvenementsOfType";
|
||||||
import { nbFamillesAvecPagesLiees } from "../penales/nbFamillesAvecPagesLiees";
|
import { nbFamillesAvecPagesLiees } from "../nbFamillesAvecPagesLiees";
|
||||||
import { StatsAutres } from "./StatsAutres";
|
import { StatsAutres } from "./StatsAutres";
|
||||||
|
|
||||||
export function computeStatsAutres(familles: Famille[]): StatsAutres {
|
export function computeStatsAutres(familles: Famille[]): StatsAutres {
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import { median } from "../../../utils/math/median";
|
||||||
import { StatsGenerales } from "./StatsGenerales";
|
import { StatsGenerales } from "./StatsGenerales";
|
||||||
import _, { countBy, uniq } from "lodash";
|
import _, { countBy, uniq } from "lodash";
|
||||||
import { isIntegrationEnCours } from "../../../data/StatutFamille";
|
import { isIntegrationEnCours } from "../../../data/StatutFamille";
|
||||||
import { nbFamillesAvecPagesLiees } from "../penales/nbFamillesAvecPagesLiees";
|
import { nbFamillesAvecPagesLiees } from "../nbFamillesAvecPagesLiees";
|
||||||
|
|
||||||
export function computeStatsGenerales(familles: Famille[]): StatsGenerales {
|
export function computeStatsGenerales(familles: Famille[]): StatsGenerales {
|
||||||
const famillesResistantesOrEx = familles.filter(
|
const famillesResistantesOrEx = familles.filter(
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import { Famille } from "../../../data/Famille";
|
import { Famille } from "../../data/Famille";
|
||||||
import { StatsData } from "../desc/StatsDesc";
|
import { StatsData } from "./desc/StatsDesc";
|
||||||
|
|
||||||
export function nbFamillesAvecPagesLiees(familles: Famille[]): StatsData {
|
export function nbFamillesAvecPagesLiees(familles: Famille[]): StatsData {
|
||||||
return {
|
return {
|
||||||
|
|
@ -10,9 +10,6 @@ export const statsTribunalCorrectionnelDesc = {
|
||||||
nbFamillesViceDeProcedure: {
|
nbFamillesViceDeProcedure: {
|
||||||
label: "Nb familles pour lesquels il y a eu un vice de procédure",
|
label: "Nb familles pour lesquels il y a eu un vice de procédure",
|
||||||
},
|
},
|
||||||
nbFamillesAdministrateurAdhoc: {
|
|
||||||
label: "Nb familles pour lesquelles un Administrateur ad'hoc à été nommé",
|
|
||||||
},
|
|
||||||
nbFamillesAppelDuJugement: {
|
nbFamillesAppelDuJugement: {
|
||||||
label: "Nb familles ayant fait appel du jugement",
|
label: "Nb familles ayant fait appel du jugement",
|
||||||
},
|
},
|
||||||
|
|
@ -108,6 +105,9 @@ export const statsPenalesDesc = {
|
||||||
nbFamilleAvecRequisitionJudiciaire: {
|
nbFamilleAvecRequisitionJudiciaire: {
|
||||||
label: "Nb Familles avec Réquisition Judiciaire",
|
label: "Nb Familles avec Réquisition Judiciaire",
|
||||||
},
|
},
|
||||||
|
nbFamilleAvecAdministrateurAdhoc: {
|
||||||
|
label: "Nb familles avec Administrateur ad'hoc",
|
||||||
|
},
|
||||||
tribunalDePolice: {
|
tribunalDePolice: {
|
||||||
label: "Tribunal de Police",
|
label: "Tribunal de Police",
|
||||||
stats: {
|
stats: {
|
||||||
|
|
@ -115,10 +115,11 @@ export const statsPenalesDesc = {
|
||||||
label: "Nb familles avec Tribunal de police",
|
label: "Nb familles avec Tribunal de police",
|
||||||
},
|
},
|
||||||
nbFamillesAppel: {
|
nbFamillesAppel: {
|
||||||
label: "Nb familles ayant fait appel",
|
label: "Nb familles ayant fait appel",
|
||||||
},nbFamillesRelaxee: {
|
},
|
||||||
label: "Nb familles relaxées",
|
nbFamillesRelaxee: {
|
||||||
},
|
label: "Nb familles relaxées",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
intervalGendarmerieProcureur: {
|
intervalGendarmerieProcureur: {
|
||||||
|
|
|
||||||
|
|
@ -1,43 +0,0 @@
|
||||||
import { Famille } from "../../../data/Famille";
|
|
||||||
import { isTribunalCorrectionnel } from "./computeStatsPenales";
|
|
||||||
import { InfoTribunalCorrectionnel } from "./InfoTribunalCorrectionnel";
|
|
||||||
|
|
||||||
export function buildInfoTribunauxCorrectionnel(f: Famille): InfoTribunalCorrectionnel[] {
|
|
||||||
const evtTribunaux = f.EvenementsEL.filter(isTribunalCorrectionnel);
|
|
||||||
|
|
||||||
return evtTribunaux.map((evtTribunal, index) => {
|
|
||||||
const prevEvtTrib = (index - 1 >= 0) ? evtTribunaux[index - 1] : null;
|
|
||||||
const nextEvtTrib = index + 1 < evtTribunaux.length ? evtTribunaux[index + 1] : null;
|
|
||||||
|
|
||||||
const eventsBetweenPreviousTribAndCurrentTrib = f.EvenementsEL.filter(
|
|
||||||
(e) => evtTribunal.Date != null &&
|
|
||||||
e.Date != null &&
|
|
||||||
e.Date <= evtTribunal.Date &&
|
|
||||||
(prevEvtTrib?.Date == null || e.Date > prevEvtTrib.Date)
|
|
||||||
);
|
|
||||||
|
|
||||||
const eventsBetweenCurrentTribAndNextTrib = f.EvenementsEL.filter(
|
|
||||||
(e) => evtTribunal.Date != null &&
|
|
||||||
e.Date != null &&
|
|
||||||
e.Date >= evtTribunal.Date &&
|
|
||||||
(nextEvtTrib?.Date == null || e.Date < nextEvtTrib.Date)
|
|
||||||
);
|
|
||||||
|
|
||||||
return {
|
|
||||||
evtTribunal: evtTribunal,
|
|
||||||
evtAdminAdhoc: eventsBetweenPreviousTribAndCurrentTrib.find(
|
|
||||||
(e) => e.Type === "Administrateur AD'HOC"
|
|
||||||
),
|
|
||||||
evtAppel: eventsBetweenCurrentTribAndNextTrib.find(
|
|
||||||
(e) => (index === 0 && e.Type === "Appel jugement Tribunal Correctionnel") ||
|
|
||||||
(index === 1 && e.Type == "Appel du 2ème jugement TC")
|
|
||||||
),
|
|
||||||
evtViceDeProcedure: eventsBetweenCurrentTribAndNextTrib.find(
|
|
||||||
(e) => e.Type === "Vice de procédure tribunal correctionnel"
|
|
||||||
),
|
|
||||||
evtRelaxe: eventsBetweenCurrentTribAndNextTrib.find(
|
|
||||||
(e) => e.Type === "Relaxe Tribunal correctionnel"
|
|
||||||
),
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
@ -2,7 +2,6 @@ import { differenceInDays } from "date-fns";
|
||||||
import {
|
import {
|
||||||
isCompositionPenale,
|
isCompositionPenale,
|
||||||
isCRPC,
|
isCRPC,
|
||||||
isEvenementBefore,
|
|
||||||
isProcureur,
|
isProcureur,
|
||||||
isGendarmerie,
|
isGendarmerie,
|
||||||
isEvtProcedurePenale,
|
isEvtProcedurePenale,
|
||||||
|
|
@ -14,11 +13,13 @@ import { average } from "../../../utils/math/average";
|
||||||
import { filterFamillesWithOneOfEvenements } from "../filterFamillesWithOneOfEvenements";
|
import { filterFamillesWithOneOfEvenements } from "../filterFamillesWithOneOfEvenements";
|
||||||
import { filterFamillesWithOneOfEvenementsOfType } from "../filterFamillesWithOneOfEvenementsOfType";
|
import { filterFamillesWithOneOfEvenementsOfType } from "../filterFamillesWithOneOfEvenementsOfType";
|
||||||
import { StatsPenales } from "./StatsPenales";
|
import { StatsPenales } from "./StatsPenales";
|
||||||
import { nbFamillesAvecPagesLiees } from "./nbFamillesAvecPagesLiees";
|
import { nbFamillesAvecPagesLiees } from "../nbFamillesAvecPagesLiees";
|
||||||
import { buildInfoTribunauxCorrectionnel } from "./buildInfoTribunauxCorrectionnel";
|
import { buildInfoTribunauxCorrectionnel } from "./tc/buildInfoTribunauxCorrectionnel";
|
||||||
import { InfoTribunalCorrectionnel } from "./InfoTribunalCorrectionnel";
|
import { InfoTribunalCorrectionnel } from "./tc/InfoTribunalCorrectionnel";
|
||||||
|
import { computeTribunalCorrectionnel } from "./tc/computeTribunalCorrectionnel";
|
||||||
|
import { computeTribunalPolice } from "./tp/computeTribunalPolice";
|
||||||
|
|
||||||
type FamilleAvecInfoTribunaux = Famille & {
|
export type FamilleAvecInfoTribunaux = Famille & {
|
||||||
infoTribunaux: InfoTribunalCorrectionnel[];
|
infoTribunaux: InfoTribunalCorrectionnel[];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -109,6 +110,12 @@ export function computeStatsPenales(familles: Famille[]): StatsPenales {
|
||||||
2
|
2
|
||||||
),
|
),
|
||||||
|
|
||||||
|
nbFamilleAvecAdministrateurAdhoc: nbFamillesAvecPagesLiees(
|
||||||
|
filterFamillesWithOneOfEvenementsOfType(
|
||||||
|
famillesResistantesOuEx,
|
||||||
|
"Administrateur AD'HOC"
|
||||||
|
)
|
||||||
|
),
|
||||||
nbFamilleAvecRequisitionJudiciaire: nbFamillesAvecPagesLiees(
|
nbFamilleAvecRequisitionJudiciaire: nbFamillesAvecPagesLiees(
|
||||||
filterFamillesWithOneOfEvenementsOfType(
|
filterFamillesWithOneOfEvenementsOfType(
|
||||||
famillesResistantesOuEx,
|
famillesResistantesOuEx,
|
||||||
|
|
@ -131,31 +138,6 @@ export function computeStatsPenales(familles: Famille[]): StatsPenales {
|
||||||
return statsPenales;
|
return statsPenales;
|
||||||
}
|
}
|
||||||
|
|
||||||
function computeTribunalPolice(
|
|
||||||
famillesResistantesOuEx: Famille[]
|
|
||||||
): StatsPenales["tribunalDePolice"] {
|
|
||||||
return {
|
|
||||||
nbFamilles: nbFamillesAvecPagesLiees(
|
|
||||||
filterFamillesWithOneOfEvenementsOfType(
|
|
||||||
famillesResistantesOuEx,
|
|
||||||
"Tribunal de police judiciaire"
|
|
||||||
)
|
|
||||||
),
|
|
||||||
nbFamillesAppel: nbFamillesAvecPagesLiees(
|
|
||||||
filterFamillesWithOneOfEvenementsOfType(
|
|
||||||
famillesResistantesOuEx,
|
|
||||||
"Appel Tribunal Police opposition ordonnance pénale"
|
|
||||||
)
|
|
||||||
),
|
|
||||||
nbFamillesRelaxee: nbFamillesAvecPagesLiees(
|
|
||||||
filterFamillesWithOneOfEvenementsOfType(
|
|
||||||
famillesResistantesOuEx,
|
|
||||||
"Relaxe Tribunal de police"
|
|
||||||
)
|
|
||||||
),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function computeCrpc(
|
function computeCrpc(
|
||||||
famillesResistantesOuEx: Famille[]
|
famillesResistantesOuEx: Famille[]
|
||||||
): StatsPenales["procureur"]["crpc"] {
|
): StatsPenales["procureur"]["crpc"] {
|
||||||
|
|
@ -202,62 +184,6 @@ function computeCompositionPenales(
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function computeTribunalCorrectionnel(
|
|
||||||
famillesResistantesOuEx: FamilleAvecInfoTribunaux[],
|
|
||||||
indexTribunal: number
|
|
||||||
): StatsPenales["tribunalCorrectionnel1"] {
|
|
||||||
const now = new Date();
|
|
||||||
const famillesPassees = famillesResistantesOuEx.filter(
|
|
||||||
(f) =>
|
|
||||||
f.infoTribunaux.length > indexTribunal &&
|
|
||||||
isEvenementBefore(f.infoTribunaux[indexTribunal].evtTribunal, now)
|
|
||||||
);
|
|
||||||
|
|
||||||
const famillesConvoquees = famillesResistantesOuEx.filter(
|
|
||||||
(f) =>
|
|
||||||
f.infoTribunaux.length > indexTribunal &&
|
|
||||||
!isEvenementBefore(f.infoTribunaux[indexTribunal].evtTribunal, now)
|
|
||||||
);
|
|
||||||
|
|
||||||
const famillesRelaxees = famillesPassees.filter(
|
|
||||||
(f) =>
|
|
||||||
f.infoTribunaux.length > indexTribunal &&
|
|
||||||
f.infoTribunaux[indexTribunal].evtRelaxe
|
|
||||||
);
|
|
||||||
|
|
||||||
const famillesAppelDuJugement = famillesPassees.filter(
|
|
||||||
(f) =>
|
|
||||||
f.infoTribunaux.length > indexTribunal &&
|
|
||||||
f.infoTribunaux[indexTribunal].evtAppel
|
|
||||||
);
|
|
||||||
const famillesAdministrateurAdhoc = famillesPassees.filter(
|
|
||||||
(f) =>
|
|
||||||
f.infoTribunaux.length > indexTribunal &&
|
|
||||||
f.infoTribunaux[indexTribunal].evtAdminAdhoc
|
|
||||||
);
|
|
||||||
|
|
||||||
const famillesViceDeProcedure = famillesPassees.filter(
|
|
||||||
(f) =>
|
|
||||||
f.infoTribunaux.length > indexTribunal &&
|
|
||||||
f.infoTribunaux[indexTribunal].evtViceDeProcedure
|
|
||||||
);
|
|
||||||
|
|
||||||
return {
|
|
||||||
nbFamillesPassees: nbFamillesAvecPagesLiees(famillesPassees),
|
|
||||||
nbFamillesConvoquees: nbFamillesAvecPagesLiees(famillesConvoquees),
|
|
||||||
nbFamillesRelaxees: nbFamillesAvecPagesLiees(famillesRelaxees),
|
|
||||||
nbFamillesAppelDuJugement: nbFamillesAvecPagesLiees(
|
|
||||||
famillesAppelDuJugement
|
|
||||||
),
|
|
||||||
nbFamillesAdministrateurAdhoc: nbFamillesAvecPagesLiees(
|
|
||||||
famillesAdministrateurAdhoc
|
|
||||||
),
|
|
||||||
nbFamillesViceDeProcedure: nbFamillesAvecPagesLiees(
|
|
||||||
famillesViceDeProcedure
|
|
||||||
),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function computeIntervalGendarmerieProcureur(familles: Famille[]): number {
|
function computeIntervalGendarmerieProcureur(familles: Famille[]): number {
|
||||||
const intervals = familles.flatMap((f) => {
|
const intervals = familles.flatMap((f) => {
|
||||||
const evtGendarmerie = f.EvenementsEL.find((e) => isGendarmerie(e));
|
const evtGendarmerie = f.EvenementsEL.find((e) => isGendarmerie(e));
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,8 @@
|
||||||
import { EvenementFamille } from "../../../data/EvenementFamille";
|
import { EvenementFamille } from "../../../../data/EvenementFamille";
|
||||||
|
|
||||||
|
|
||||||
export type InfoTribunalCorrectionnel = {
|
export type InfoTribunalCorrectionnel = {
|
||||||
evtTribunal: EvenementFamille;
|
evtTribunal: EvenementFamille;
|
||||||
evtRelaxe?: EvenementFamille;
|
evtRelaxe?: EvenementFamille;
|
||||||
evtAdminAdhoc?: EvenementFamille;
|
|
||||||
evtViceDeProcedure?: EvenementFamille;
|
evtViceDeProcedure?: EvenementFamille;
|
||||||
evtAppel?: EvenementFamille;
|
evtAppel?: EvenementFamille;
|
||||||
};
|
};
|
||||||
|
|
@ -0,0 +1,37 @@
|
||||||
|
import { Famille } from "../../../../data/Famille";
|
||||||
|
import { isTribunalCorrectionnel } from "../computeStatsPenales";
|
||||||
|
import { InfoTribunalCorrectionnel } from "./InfoTribunalCorrectionnel";
|
||||||
|
|
||||||
|
export function buildInfoTribunauxCorrectionnel(
|
||||||
|
f: Famille
|
||||||
|
): InfoTribunalCorrectionnel[] {
|
||||||
|
const evtTribunaux = f.EvenementsEL.filter(isTribunalCorrectionnel);
|
||||||
|
|
||||||
|
return evtTribunaux.map((evtTribunal, index) => {
|
||||||
|
const nextEvtTrib =
|
||||||
|
index + 1 < evtTribunaux.length ? evtTribunaux[index + 1] : null;
|
||||||
|
|
||||||
|
const eventsBetweenCurrentTribAndNextTrib = f.EvenementsEL.filter(
|
||||||
|
(e) =>
|
||||||
|
evtTribunal.Date != null &&
|
||||||
|
e.Date != null &&
|
||||||
|
e.Date >= evtTribunal.Date &&
|
||||||
|
(nextEvtTrib?.Date == null || e.Date < nextEvtTrib.Date)
|
||||||
|
);
|
||||||
|
|
||||||
|
return {
|
||||||
|
evtTribunal: evtTribunal,
|
||||||
|
evtAppel: eventsBetweenCurrentTribAndNextTrib.find(
|
||||||
|
(e) =>
|
||||||
|
(index === 0 && e.Type === "Appel jugement Tribunal Correctionnel") ||
|
||||||
|
(index === 1 && e.Type == "Appel du 2ème jugement TC")
|
||||||
|
),
|
||||||
|
evtViceDeProcedure: eventsBetweenCurrentTribAndNextTrib.find(
|
||||||
|
(e) => e.Type === "Vice de procédure tribunal correctionnel"
|
||||||
|
),
|
||||||
|
evtRelaxe: eventsBetweenCurrentTribAndNextTrib.find(
|
||||||
|
(e) => e.Type === "Relaxe Tribunal correctionnel"
|
||||||
|
),
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,52 @@
|
||||||
|
import { isEvenementBefore } from "../../../../data/EvenementFamille";
|
||||||
|
import { FamilleAvecInfoTribunaux } from "../computeStatsPenales";
|
||||||
|
import { nbFamillesAvecPagesLiees } from "../../nbFamillesAvecPagesLiees";
|
||||||
|
import { StatsPenales } from "../StatsPenales";
|
||||||
|
|
||||||
|
export function computeTribunalCorrectionnel(
|
||||||
|
famillesResistantesOuEx: FamilleAvecInfoTribunaux[],
|
||||||
|
indexTribunal: number
|
||||||
|
): StatsPenales["tribunalCorrectionnel1"] {
|
||||||
|
const now = new Date();
|
||||||
|
const famillesPassees = famillesResistantesOuEx.filter(
|
||||||
|
(f) =>
|
||||||
|
f.infoTribunaux.length > indexTribunal &&
|
||||||
|
isEvenementBefore(f.infoTribunaux[indexTribunal].evtTribunal, now)
|
||||||
|
);
|
||||||
|
|
||||||
|
const famillesConvoquees = famillesResistantesOuEx.filter(
|
||||||
|
(f) =>
|
||||||
|
f.infoTribunaux.length > indexTribunal &&
|
||||||
|
!isEvenementBefore(f.infoTribunaux[indexTribunal].evtTribunal, now)
|
||||||
|
);
|
||||||
|
|
||||||
|
const famillesRelaxees = famillesPassees.filter(
|
||||||
|
(f) =>
|
||||||
|
f.infoTribunaux.length > indexTribunal &&
|
||||||
|
f.infoTribunaux[indexTribunal].evtRelaxe
|
||||||
|
);
|
||||||
|
|
||||||
|
const famillesAppelDuJugement = famillesPassees.filter(
|
||||||
|
(f) =>
|
||||||
|
f.infoTribunaux.length > indexTribunal &&
|
||||||
|
f.infoTribunaux[indexTribunal].evtAppel
|
||||||
|
);
|
||||||
|
|
||||||
|
const famillesViceDeProcedure = famillesPassees.filter(
|
||||||
|
(f) =>
|
||||||
|
f.infoTribunaux.length > indexTribunal &&
|
||||||
|
f.infoTribunaux[indexTribunal].evtViceDeProcedure
|
||||||
|
);
|
||||||
|
|
||||||
|
return {
|
||||||
|
nbFamillesPassees: nbFamillesAvecPagesLiees(famillesPassees),
|
||||||
|
nbFamillesConvoquees: nbFamillesAvecPagesLiees(famillesConvoquees),
|
||||||
|
nbFamillesRelaxees: nbFamillesAvecPagesLiees(famillesRelaxees),
|
||||||
|
nbFamillesAppelDuJugement: nbFamillesAvecPagesLiees(
|
||||||
|
famillesAppelDuJugement
|
||||||
|
),
|
||||||
|
nbFamillesViceDeProcedure: nbFamillesAvecPagesLiees(
|
||||||
|
famillesViceDeProcedure
|
||||||
|
),
|
||||||
|
};
|
||||||
|
}
|
||||||
29
src/statistiques/v2/penales/tp/computeTribunalPolice.ts
Normal file
29
src/statistiques/v2/penales/tp/computeTribunalPolice.ts
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
import { Famille } from "../../../../data/Famille";
|
||||||
|
import { filterFamillesWithOneOfEvenementsOfType } from "../../filterFamillesWithOneOfEvenementsOfType";
|
||||||
|
import { nbFamillesAvecPagesLiees } from "../../nbFamillesAvecPagesLiees";
|
||||||
|
import { StatsPenales } from "../StatsPenales";
|
||||||
|
|
||||||
|
export function computeTribunalPolice(
|
||||||
|
famillesResistantesOuEx: Famille[]
|
||||||
|
): StatsPenales["tribunalDePolice"] {
|
||||||
|
return {
|
||||||
|
nbFamilles: nbFamillesAvecPagesLiees(
|
||||||
|
filterFamillesWithOneOfEvenementsOfType(
|
||||||
|
famillesResistantesOuEx,
|
||||||
|
"Tribunal de police judiciaire"
|
||||||
|
)
|
||||||
|
),
|
||||||
|
nbFamillesAppel: nbFamillesAvecPagesLiees(
|
||||||
|
filterFamillesWithOneOfEvenementsOfType(
|
||||||
|
famillesResistantesOuEx,
|
||||||
|
"Appel Tribunal Police opposition ordonnance pénale"
|
||||||
|
)
|
||||||
|
),
|
||||||
|
nbFamillesRelaxee: nbFamillesAvecPagesLiees(
|
||||||
|
filterFamillesWithOneOfEvenementsOfType(
|
||||||
|
famillesResistantesOuEx,
|
||||||
|
"Relaxe Tribunal de police"
|
||||||
|
)
|
||||||
|
),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -6,7 +6,7 @@ import {
|
||||||
import { Famille, isExResistant, isResistant } from "../../../data/Famille";
|
import { Famille, isExResistant, isResistant } from "../../../data/Famille";
|
||||||
import { filterFamillesWithOneOfEvenements } from "../filterFamillesWithOneOfEvenements";
|
import { filterFamillesWithOneOfEvenements } from "../filterFamillesWithOneOfEvenements";
|
||||||
import { filterFamillesWithOneOfEvenementsOfType } from "../filterFamillesWithOneOfEvenementsOfType";
|
import { filterFamillesWithOneOfEvenementsOfType } from "../filterFamillesWithOneOfEvenementsOfType";
|
||||||
import { nbFamillesAvecPagesLiees } from "../penales/nbFamillesAvecPagesLiees";
|
import { nbFamillesAvecPagesLiees } from "../nbFamillesAvecPagesLiees";
|
||||||
import { StatsSociales } from "./StatsSociales";
|
import { StatsSociales } from "./StatsSociales";
|
||||||
|
|
||||||
export function computeStatsSociales(familles: Famille[]): StatsSociales {
|
export function computeStatsSociales(familles: Famille[]): StatsSociales {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue