feat: supprime stats v1
parent
7890af10d8
commit
d82268779b
|
@ -6,7 +6,7 @@ import { publishPeriodStats } from "./publishPeriodStats";
|
||||||
import { publishStatsActuelles } from "./publishStatsActuelles";
|
import { publishStatsActuelles } from "./publishStatsActuelles";
|
||||||
|
|
||||||
export const statsPageId = "2b91cd90e3694e96bb196d69aeca59b1";
|
export const statsPageId = "2b91cd90e3694e96bb196d69aeca59b1";
|
||||||
export const currentStatsHeading = "Statistiques actuelles";
|
export const currentStatsHeading = "Statistiques v1";
|
||||||
|
|
||||||
const yearStatsDb = "4b19a72aa07840eab948525ea41878ee";
|
const yearStatsDb = "4b19a72aa07840eab948525ea41878ee";
|
||||||
const monthStatsDb = "8418a8a4a7544f6a8c54e6003be7efe5";
|
const monthStatsDb = "8418a8a4a7544f6a8c54e6003be7efe5";
|
||||||
|
|
|
@ -10,112 +10,6 @@ export function statPublishOptions(
|
||||||
const statPropsPublishOptions: {
|
const statPropsPublishOptions: {
|
||||||
[jsPropName in AllStatsPropNames]: StatPublishOptions;
|
[jsPropName in AllStatsPropNames]: StatPublishOptions;
|
||||||
} = {
|
} = {
|
||||||
nbFamilleResistantes: {
|
|
||||||
notionPropName: "Nb familles résistantes",
|
|
||||||
},
|
|
||||||
|
|
||||||
nbFamilleResistantesSurPeriode: {
|
|
||||||
notionPropName: "Nb familles résistantes sur période",
|
|
||||||
},
|
|
||||||
nbFamilleResistantesOrEx: {
|
|
||||||
notionPropName: "Nb familles résistantes ou ex-résistantes",
|
|
||||||
},
|
|
||||||
dureeResistanceMoyenne: {
|
|
||||||
notionPropName: "Durée résistance moyenne",
|
|
||||||
unit: "j",
|
|
||||||
},
|
|
||||||
dureeResistanceMediane: {
|
|
||||||
notionPropName: "Durée résistance médiane",
|
|
||||||
unit: "j",
|
|
||||||
},
|
|
||||||
pourcentageEntreeApresMiseEnDemeure: {
|
|
||||||
notionPropName: "% d'entrées après mises en demeure",
|
|
||||||
unit: "%",
|
|
||||||
},
|
|
||||||
|
|
||||||
nbFamillesMisesEnDemeure: {
|
|
||||||
notionPropName: "Nb familles mises en demeure",
|
|
||||||
},
|
|
||||||
pourcentageFamillesMisesEnDemeure: {
|
|
||||||
notionPropName: "% de familles mises en demeure",
|
|
||||||
unit: "%",
|
|
||||||
},
|
|
||||||
|
|
||||||
pourcentageEntreeApresMiseEnDemeureSurPeriode: {
|
|
||||||
notionPropName: "% d'entrées après mises en demeure sur période",
|
|
||||||
},
|
|
||||||
nbFamillesCompositionPenale: {
|
|
||||||
notionPropName: "Nb familles avec composition pénale",
|
|
||||||
},
|
|
||||||
pourcentageFamillesCompositionPenale: {
|
|
||||||
notionPropName: "% familles avec composition pénale",
|
|
||||||
unit: "%",
|
|
||||||
},
|
|
||||||
nbFamillesCompositionPenaleAcceptee: {
|
|
||||||
notionPropName: "Nb familles avec composition pénale acceptée",
|
|
||||||
},
|
|
||||||
pourcentageCompositionPenaleAcceptee: {
|
|
||||||
notionPropName: "% des composition pénale qui sont acceptée",
|
|
||||||
unit: "%",
|
|
||||||
},
|
|
||||||
pourcentageFamillesCompositionPenaleAcceptee: {
|
|
||||||
notionPropName: "% familles avec composition pénale acceptée",
|
|
||||||
unit: "%",
|
|
||||||
},
|
|
||||||
nbFamillesCompositionPenaleRefusee: {
|
|
||||||
notionPropName: "Nb familles avec composition pénale refusée",
|
|
||||||
},
|
|
||||||
pourcentageCompositionPenaleRefusee: {
|
|
||||||
notionPropName: "% des composition pénale qui sont refusée",
|
|
||||||
unit: "%",
|
|
||||||
},
|
|
||||||
pourcentageFamillesCompositionPenaleRefusee: {
|
|
||||||
notionPropName: "% familles avec composition pénale refusée",
|
|
||||||
unit: "%",
|
|
||||||
},
|
|
||||||
|
|
||||||
nbFamillesCRPC: {
|
|
||||||
notionPropName: "Nb familles avec CRPC",
|
|
||||||
},
|
|
||||||
pourcentageFamillesCRPC: {
|
|
||||||
notionPropName: "% familles avec CRPC",
|
|
||||||
unit: "%",
|
|
||||||
},
|
|
||||||
nbFamillesCRPCAcceptee: {
|
|
||||||
notionPropName: "Nb familles avec CRPC acceptée",
|
|
||||||
},
|
|
||||||
pourcentageCRPCAcceptee: {
|
|
||||||
notionPropName: "% des CRPC qui sont acceptée",
|
|
||||||
unit: "%",
|
|
||||||
},
|
|
||||||
pourcentageFamillesCRPCAcceptee: {
|
|
||||||
notionPropName: "% familles avec CRPC acceptée",
|
|
||||||
unit: "%",
|
|
||||||
},
|
|
||||||
nbFamillesCRPCRefusee: {
|
|
||||||
notionPropName: "Nb familles avec CRPC refusée",
|
|
||||||
},
|
|
||||||
pourcentageCRPCRefusee: {
|
|
||||||
notionPropName: "% des CRPC qui sont refusée",
|
|
||||||
unit: "%",
|
|
||||||
},
|
|
||||||
pourcentageFamillesCRPCRefusee: {
|
|
||||||
notionPropName: "% familles avec CRPC refusée",
|
|
||||||
unit: "%",
|
|
||||||
},
|
|
||||||
|
|
||||||
nbFamillesTribunalCorrectionnel: {
|
|
||||||
notionPropName: "Nb familles passées au tribunal correctionnel",
|
|
||||||
},
|
|
||||||
nbFamillesTribunalCorrectionnelProgramme: {
|
|
||||||
notionPropName: "Nb familles tribunal correctionnel programmé",
|
|
||||||
unit: "%",
|
|
||||||
},
|
|
||||||
pourcentageFamillesTribunalCorrectionnel: {
|
|
||||||
notionPropName: "% familles passées au tribunal correctionnel",
|
|
||||||
unit: "%",
|
|
||||||
},
|
|
||||||
|
|
||||||
nbFamillesProcedureCivile: {
|
nbFamillesProcedureCivile: {
|
||||||
notionPropName: "Nb familles avec procédure civile",
|
notionPropName: "Nb familles avec procédure civile",
|
||||||
},
|
},
|
||||||
|
|
|
@ -6,42 +6,6 @@ export type ELStats = {
|
||||||
};
|
};
|
||||||
|
|
||||||
export type ELStatsAtDate<V> = {
|
export type ELStatsAtDate<V> = {
|
||||||
// Résistance
|
|
||||||
nbFamilleResistantes: V;
|
|
||||||
nbFamilleResistantesOrEx: V;
|
|
||||||
dureeResistanceMoyenne: V;
|
|
||||||
dureeResistanceMediane: V;
|
|
||||||
pourcentageEntreeApresMiseEnDemeure: V;
|
|
||||||
|
|
||||||
// Pénale
|
|
||||||
nbFamillesMisesEnDemeure: V;
|
|
||||||
pourcentageFamillesMisesEnDemeure: V;
|
|
||||||
|
|
||||||
// Pénale > Composition Pénale
|
|
||||||
nbFamillesCompositionPenale: V;
|
|
||||||
pourcentageFamillesCompositionPenale: V;
|
|
||||||
nbFamillesCompositionPenaleAcceptee: V;
|
|
||||||
pourcentageCompositionPenaleAcceptee: V;
|
|
||||||
pourcentageFamillesCompositionPenaleAcceptee: V;
|
|
||||||
nbFamillesCompositionPenaleRefusee: V;
|
|
||||||
pourcentageCompositionPenaleRefusee: V;
|
|
||||||
pourcentageFamillesCompositionPenaleRefusee: V;
|
|
||||||
|
|
||||||
// Pénale > CRPC
|
|
||||||
nbFamillesCRPC: V;
|
|
||||||
pourcentageFamillesCRPC: V;
|
|
||||||
nbFamillesCRPCAcceptee: V;
|
|
||||||
pourcentageCRPCAcceptee: V;
|
|
||||||
pourcentageFamillesCRPCAcceptee: V;
|
|
||||||
nbFamillesCRPCRefusee: V;
|
|
||||||
pourcentageCRPCRefusee: V;
|
|
||||||
pourcentageFamillesCRPCRefusee: V;
|
|
||||||
|
|
||||||
// Pénale > Tribunal Correctionnel
|
|
||||||
nbFamillesTribunalCorrectionnel: V;
|
|
||||||
pourcentageFamillesTribunalCorrectionnel: V;
|
|
||||||
nbFamillesTribunalCorrectionnelProgramme: V;
|
|
||||||
|
|
||||||
// Civile
|
// Civile
|
||||||
nbFamillesProcedureCivile: V;
|
nbFamillesProcedureCivile: V;
|
||||||
pourcentageFamillesProcedureCivile: V;
|
pourcentageFamillesProcedureCivile: V;
|
||||||
|
@ -65,12 +29,7 @@ export type ELStatsPeriod = {
|
||||||
stats: PeriodStatsValues<ValueWithEvol>;
|
stats: PeriodStatsValues<ValueWithEvol>;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type PeriodStatsValues<V> = ELStatsAtDate<V> | ELStatsOverPeriod<V>;
|
export type PeriodStatsValues<V> = ELStatsAtDate<V>;
|
||||||
|
|
||||||
export type ELStatsOverPeriod<V> = {
|
|
||||||
pourcentageEntreeApresMiseEnDemeureSurPeriode: V;
|
|
||||||
nbFamilleResistantesSurPeriode: V;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type ValueWithEvol = {
|
export type ValueWithEvol = {
|
||||||
value: number;
|
value: number;
|
||||||
|
@ -78,6 +37,4 @@ export type ValueWithEvol = {
|
||||||
evolPercent: number;
|
evolPercent: number;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type AllStatsPropNames =
|
export type AllStatsPropNames = keyof ELStatsAtDate<number>;
|
||||||
| keyof ELStatsOverPeriod<number>
|
|
||||||
| keyof ELStatsAtDate<number>;
|
|
||||||
|
|
|
@ -1,14 +1,8 @@
|
||||||
import { Famille } from "../../data/Famille";
|
import { Famille } from "../../data/Famille";
|
||||||
import { IdentifiedPeriod } from "../../period/IdentifiedPeriod";
|
import { IdentifiedPeriod } from "../../period/IdentifiedPeriod";
|
||||||
import { Period } from "../../period/Period";
|
import { Period } from "../../period/Period";
|
||||||
import {
|
import { ELStatsPeriod, PeriodStatsValues, ValueWithEvol } from "./ELStats";
|
||||||
ELStatsOverPeriod,
|
|
||||||
ELStatsPeriod,
|
|
||||||
PeriodStatsValues,
|
|
||||||
ValueWithEvol,
|
|
||||||
} from "./ELStats";
|
|
||||||
import { computeELStatsAtDate } from "./computeELStatsAtDate";
|
import { computeELStatsAtDate } from "./computeELStatsAtDate";
|
||||||
import { computeELStatsOverPeriod } from "./computeELStatsOverPeriod";
|
|
||||||
|
|
||||||
export function computeELPeriodStats(
|
export function computeELPeriodStats(
|
||||||
familles: Famille[],
|
familles: Famille[],
|
||||||
|
@ -37,16 +31,7 @@ function computePeriodStatsNumberValues(
|
||||||
familles: Famille[],
|
familles: Famille[],
|
||||||
period: Period
|
period: Period
|
||||||
): PeriodStatsValues<number> {
|
): PeriodStatsValues<number> {
|
||||||
const statsAtPeriodEnd = computeELStatsAtDate(familles, period.end);
|
return computeELStatsAtDate(familles, period.end);
|
||||||
|
|
||||||
const statsOverPeriod: ELStatsOverPeriod<number> = computeELStatsOverPeriod(
|
|
||||||
familles,
|
|
||||||
period
|
|
||||||
);
|
|
||||||
return {
|
|
||||||
...statsAtPeriodEnd,
|
|
||||||
...statsOverPeriod,
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function computeStatsEvol(
|
function computeStatsEvol(
|
||||||
|
|
|
@ -1,104 +1,19 @@
|
||||||
import {
|
import {
|
||||||
isCRPC,
|
|
||||||
isCompositionPenale,
|
|
||||||
isEvenementBefore,
|
isEvenementBefore,
|
||||||
isProcedureCivile,
|
isProcedureCivile,
|
||||||
} from "../../data/EvenementFamille";
|
} from "../../data/EvenementFamille";
|
||||||
import {
|
import { Famille, isExResistant, isResistant } from "../../data/Famille";
|
||||||
Famille,
|
|
||||||
dureeResistanceInDays,
|
|
||||||
isExResistant,
|
|
||||||
isResistant,
|
|
||||||
} from "../../data/Famille";
|
|
||||||
import { average } from "../../utils/math/average";
|
|
||||||
import { median } from "../../utils/math/median";
|
|
||||||
import { percent } from "../../utils/math/percent";
|
import { percent } from "../../utils/math/percent";
|
||||||
import { notNull } from "../../utils/notNull";
|
|
||||||
import { ELStatsAtDate } from "./ELStats";
|
import { ELStatsAtDate } from "./ELStats";
|
||||||
import { computePourcentageEntreeApresMiseEnDemeure } from "./computePourcentageEntreeApresMiseEnDemeure";
|
|
||||||
|
|
||||||
export function computeELStatsAtDate(
|
export function computeELStatsAtDate(
|
||||||
familles: Famille[],
|
familles: Famille[],
|
||||||
asOfDate: Date
|
asOfDate: Date
|
||||||
): ELStatsAtDate<number> {
|
): ELStatsAtDate<number> {
|
||||||
const familleResistantes = familles.filter((f) => isResistant(f, asOfDate));
|
|
||||||
const familleResistantesOrEx = familles.filter(
|
const familleResistantesOrEx = familles.filter(
|
||||||
(famille) =>
|
(famille) =>
|
||||||
isResistant(famille, asOfDate) || isExResistant(famille, asOfDate)
|
isResistant(famille, asOfDate) || isExResistant(famille, asOfDate)
|
||||||
);
|
);
|
||||||
const dureesResistances = familles
|
|
||||||
.map((famille) => dureeResistanceInDays(famille, asOfDate))
|
|
||||||
.filter(notNull);
|
|
||||||
|
|
||||||
const nbFamillesMiseEnDemeure = familleResistantesOrEx.filter((f) =>
|
|
||||||
f.Evenements.find((e) => e.Type === "Mise en demeure de scolarisation")
|
|
||||||
).length;
|
|
||||||
|
|
||||||
const famillesAvecCompositionPenale = familleResistantesOrEx.filter(
|
|
||||||
(famille) =>
|
|
||||||
famille.Evenements.find(
|
|
||||||
(evt) => isCompositionPenale(evt) && isEvenementBefore(evt, asOfDate)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
const famillesAvecCompositionPenaleAcceptee = familleResistantesOrEx.filter(
|
|
||||||
(famille) =>
|
|
||||||
famille.Evenements.find(
|
|
||||||
(evt) =>
|
|
||||||
isCompositionPenale(evt) &&
|
|
||||||
evt.Type === "Composition pénale acceptée" &&
|
|
||||||
isEvenementBefore(evt, asOfDate)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
const famillesAvecCompositionPenaleRefusee = familleResistantesOrEx.filter(
|
|
||||||
(famille) =>
|
|
||||||
famille.Evenements.find(
|
|
||||||
(evt) =>
|
|
||||||
isCompositionPenale(evt) &&
|
|
||||||
evt.Type === "Composition pénale refusée" &&
|
|
||||||
isEvenementBefore(evt, asOfDate)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
const famillesAvecCRPC = familleResistantesOrEx.filter((famille) =>
|
|
||||||
famille.Evenements.find(
|
|
||||||
(evt) => isCRPC(evt) && isEvenementBefore(evt, asOfDate)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
const famillesAvecCRPCAcceptee = familleResistantesOrEx.filter((famille) =>
|
|
||||||
famille.Evenements.find(
|
|
||||||
(evt) =>
|
|
||||||
isCRPC(evt) &&
|
|
||||||
evt.Type === "Acceptation CRPC" &&
|
|
||||||
isEvenementBefore(evt, asOfDate)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
const famillesAvecCRPCRefusee = familleResistantesOrEx.filter((famille) =>
|
|
||||||
famille.Evenements.find(
|
|
||||||
(evt) =>
|
|
||||||
isCRPC(evt) &&
|
|
||||||
evt.Type === "Refus CRPC" &&
|
|
||||||
isEvenementBefore(evt, asOfDate)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
const famillesPasseesTribunalCorrectionnel = familleResistantesOrEx.filter(
|
|
||||||
(famille) =>
|
|
||||||
famille.Evenements.find(
|
|
||||||
(evt) =>
|
|
||||||
evt.Type === "Tribunal correctionnel" &&
|
|
||||||
isEvenementBefore(evt, asOfDate)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
const famillesTribunalCorrectionnelProgramme = familleResistantesOrEx.filter(
|
|
||||||
(famille) =>
|
|
||||||
famille.Evenements.find(
|
|
||||||
(evt) =>
|
|
||||||
evt.Type === "Tribunal correctionnel" &&
|
|
||||||
!isEvenementBefore(evt, asOfDate)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
const famillesAvecProcedureCivile = familleResistantesOrEx.filter((famille) =>
|
const famillesAvecProcedureCivile = familleResistantesOrEx.filter((famille) =>
|
||||||
famille.Evenements.find(
|
famille.Evenements.find(
|
||||||
|
@ -133,79 +48,6 @@ export function computeELStatsAtDate(
|
||||||
f.Evenements.find((e) => e.Type === "Contrôle URSSAF")
|
f.Evenements.find((e) => e.Type === "Contrôle URSSAF")
|
||||||
);
|
);
|
||||||
const elStats: ELStatsAtDate<number> = {
|
const elStats: ELStatsAtDate<number> = {
|
||||||
nbFamilleResistantes: familleResistantes.length,
|
|
||||||
nbFamilleResistantesOrEx: familleResistantesOrEx.length,
|
|
||||||
|
|
||||||
dureeResistanceMoyenne: average(dureesResistances),
|
|
||||||
dureeResistanceMediane: median(dureesResistances),
|
|
||||||
pourcentageEntreeApresMiseEnDemeure:
|
|
||||||
computePourcentageEntreeApresMiseEnDemeure(familleResistantesOrEx),
|
|
||||||
|
|
||||||
nbFamillesMisesEnDemeure: nbFamillesMiseEnDemeure,
|
|
||||||
pourcentageFamillesMisesEnDemeure: percent(
|
|
||||||
nbFamillesMiseEnDemeure,
|
|
||||||
familleResistantesOrEx.length
|
|
||||||
),
|
|
||||||
|
|
||||||
nbFamillesCompositionPenale: famillesAvecCompositionPenale.length,
|
|
||||||
pourcentageFamillesCompositionPenale: percent(
|
|
||||||
famillesAvecCompositionPenale.length,
|
|
||||||
familleResistantesOrEx.length
|
|
||||||
),
|
|
||||||
nbFamillesCompositionPenaleAcceptee:
|
|
||||||
famillesAvecCompositionPenaleAcceptee.length,
|
|
||||||
pourcentageCompositionPenaleAcceptee: percent(
|
|
||||||
famillesAvecCompositionPenaleAcceptee.length,
|
|
||||||
famillesAvecCompositionPenale.length
|
|
||||||
),
|
|
||||||
pourcentageFamillesCompositionPenaleAcceptee: percent(
|
|
||||||
famillesAvecCompositionPenaleAcceptee.length,
|
|
||||||
familleResistantesOrEx.length
|
|
||||||
),
|
|
||||||
nbFamillesCompositionPenaleRefusee:
|
|
||||||
famillesAvecCompositionPenaleRefusee.length,
|
|
||||||
pourcentageCompositionPenaleRefusee: percent(
|
|
||||||
famillesAvecCompositionPenaleRefusee.length,
|
|
||||||
famillesAvecCompositionPenale.length
|
|
||||||
),
|
|
||||||
pourcentageFamillesCompositionPenaleRefusee: percent(
|
|
||||||
famillesAvecCompositionPenaleRefusee.length,
|
|
||||||
familleResistantesOrEx.length
|
|
||||||
),
|
|
||||||
|
|
||||||
nbFamillesCRPC: famillesAvecCRPC.length,
|
|
||||||
pourcentageFamillesCRPC: percent(
|
|
||||||
famillesAvecCRPC.length,
|
|
||||||
familleResistantesOrEx.length
|
|
||||||
),
|
|
||||||
nbFamillesCRPCAcceptee: famillesAvecCRPCAcceptee.length,
|
|
||||||
pourcentageCRPCAcceptee: percent(
|
|
||||||
famillesAvecCRPCAcceptee.length,
|
|
||||||
famillesAvecCRPC.length
|
|
||||||
),
|
|
||||||
pourcentageFamillesCRPCAcceptee: percent(
|
|
||||||
famillesAvecCRPCAcceptee.length,
|
|
||||||
familleResistantesOrEx.length
|
|
||||||
),
|
|
||||||
nbFamillesCRPCRefusee: famillesAvecCRPCRefusee.length,
|
|
||||||
pourcentageCRPCRefusee: percent(
|
|
||||||
famillesAvecCRPCRefusee.length,
|
|
||||||
famillesAvecCRPC.length
|
|
||||||
),
|
|
||||||
pourcentageFamillesCRPCRefusee: percent(
|
|
||||||
famillesAvecCRPCRefusee.length,
|
|
||||||
familleResistantesOrEx.length
|
|
||||||
),
|
|
||||||
|
|
||||||
nbFamillesTribunalCorrectionnel:
|
|
||||||
famillesPasseesTribunalCorrectionnel.length,
|
|
||||||
pourcentageFamillesTribunalCorrectionnel: percent(
|
|
||||||
famillesPasseesTribunalCorrectionnel.length,
|
|
||||||
familleResistantesOrEx.length
|
|
||||||
),
|
|
||||||
nbFamillesTribunalCorrectionnelProgramme:
|
|
||||||
famillesTribunalCorrectionnelProgramme.length,
|
|
||||||
|
|
||||||
nbFamillesProcedureCivile: famillesAvecProcedureCivile.length,
|
nbFamillesProcedureCivile: famillesAvecProcedureCivile.length,
|
||||||
pourcentageFamillesProcedureCivile: percent(
|
pourcentageFamillesProcedureCivile: percent(
|
||||||
famillesAvecProcedureCivile.length,
|
famillesAvecProcedureCivile.length,
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
import {
|
|
||||||
Famille,
|
|
||||||
isResistantOverPeriod,
|
|
||||||
periodOfResistance,
|
|
||||||
} from "../../data/Famille";
|
|
||||||
import { Period } from "../../period/Period";
|
|
||||||
import { isPeriodContaining } from "../../period/isPeriodContaining";
|
|
||||||
import { ELStatsOverPeriod } from "./ELStats";
|
|
||||||
import { computePourcentageEntreeApresMiseEnDemeure } from "./computePourcentageEntreeApresMiseEnDemeure";
|
|
||||||
|
|
||||||
export function computeELStatsOverPeriod(
|
|
||||||
familles: Famille[],
|
|
||||||
period: Period
|
|
||||||
): ELStatsOverPeriod<number> {
|
|
||||||
const famillesEntreesSurPeriode = familles.filter((f) => {
|
|
||||||
const por = periodOfResistance(f);
|
|
||||||
return por != null && isPeriodContaining(period, por.start);
|
|
||||||
});
|
|
||||||
|
|
||||||
const nbFamilleResistantesSurPeriode = familles.filter((famille) =>
|
|
||||||
isResistantOverPeriod(famille, period)
|
|
||||||
).length;
|
|
||||||
const pourcentageEntreeApresMiseEnDemeureSurPeriode =
|
|
||||||
computePourcentageEntreeApresMiseEnDemeure(famillesEntreesSurPeriode);
|
|
||||||
return {
|
|
||||||
nbFamilleResistantesSurPeriode,
|
|
||||||
pourcentageEntreeApresMiseEnDemeureSurPeriode,
|
|
||||||
};
|
|
||||||
}
|
|
Loading…
Reference in New Issue