feat: ajoute des statistiques

wip-related-pages
sebastien.arod@gmail.com 2024-06-11 14:56:12 +02:00
parent 0d8aa0209a
commit 2a26eb9dd2
3 changed files with 69 additions and 0 deletions

View File

@ -130,6 +130,29 @@ const statPropsPublishOptions: {
nbFamilleAvecProcedureCivileSurPeriode: { nbFamilleAvecProcedureCivileSurPeriode: {
notionPropName: "Nb familles avec procédure civile sur période", notionPropName: "Nb familles avec procédure civile sur période",
}, },
nbFamilleProcedureCivileClasseeSansSuite: {
notionPropName: "Nb familles avec procédure civile classée sans suite",
},
pourcentageProcedureCivileClasseeSansSuite: {
notionPropName: "% familles avec procédure civile classée sans suite",
unit: "%",
},
pourcentageFamillesProcedureCivileClasseeSansSuite: {
notionPropName: "% procédure civile classées sans suite",
unit: "%",
},
nbFamilleProcedureCivileJugeEnfant: {
notionPropName: "Nb familles convoquées devant le juge des enfants",
},
pourcentageProcedureCivileJugeEnfant: {
notionPropName: "% procédure civile avec convocation juge des enfants",
unit: "%",
},
pourcentageFamilleJugeEnfant: {
notionPropName: "% familles convoquées devant le juge des enfants",
unit: "%",
},
}; };
export type StatPublishOptions = { export type StatPublishOptions = {
notionPropName: string; notionPropName: string;

View File

@ -44,6 +44,13 @@ export type ELStatsAtDate<V> = {
// Civile // Civile
nbFamillesProcedureCivile: V; nbFamillesProcedureCivile: V;
pourcentageFamillesProcedureCivile: V; pourcentageFamillesProcedureCivile: V;
nbFamilleProcedureCivileClasseeSansSuite: V;
pourcentageProcedureCivileClasseeSansSuite: V;
pourcentageFamillesProcedureCivileClasseeSansSuite: V;
nbFamilleProcedureCivileJugeEnfant: V;
pourcentageProcedureCivileJugeEnfant: V;
pourcentageFamilleJugeEnfant: V;
}; };
export type ELStatsPeriod = { export type ELStatsPeriod = {

View File

@ -94,6 +94,25 @@ export function computeELStatsAtDate(
) )
); );
const famillesAvecClasseesSocialSansSuite = familleResistantesOrEx.filter(
(famille) =>
famille.Evenements.find(
(evt) =>
isProcedureCivile(evt) &&
isEvenementBefore(evt, asOfDate) &&
evt.Type === "Classement social sans suite"
)
);
const famillesAvecJugeDesEnfants = familleResistantesOrEx.filter((famille) =>
famille.Evenements.find(
(evt) =>
isProcedureCivile(evt) &&
isEvenementBefore(evt, asOfDate) &&
evt.Type === "Juge pour enfants"
)
);
const actuelles: ELStatsAtDate<number> = { const actuelles: ELStatsAtDate<number> = {
nbFamilleResistantes: familleResistantes.length, nbFamilleResistantes: familleResistantes.length,
nbFamilleResistantesOrEx: familleResistantesOrEx.length, nbFamilleResistantesOrEx: familleResistantesOrEx.length,
@ -177,6 +196,26 @@ export function computeELStatsAtDate(
famillesAvecProcedureCivile.length, famillesAvecProcedureCivile.length,
familleResistantesOrEx.length familleResistantesOrEx.length
), ),
nbFamilleProcedureCivileClasseeSansSuite:
famillesAvecClasseesSocialSansSuite.length,
pourcentageProcedureCivileClasseeSansSuite: percent(
famillesAvecClasseesSocialSansSuite.length,
famillesAvecProcedureCivile.length
),
pourcentageFamillesProcedureCivileClasseeSansSuite: percent(
famillesAvecClasseesSocialSansSuite.length,
familleResistantesOrEx.length
),
nbFamilleProcedureCivileJugeEnfant: famillesAvecJugeDesEnfants.length,
pourcentageProcedureCivileJugeEnfant: percent(
famillesAvecJugeDesEnfants.length,
famillesAvecProcedureCivile.length
),
pourcentageFamilleJugeEnfant: percent(
famillesAvecJugeDesEnfants.length,
familleResistantesOrEx.length
),
}; };
return actuelles; return actuelles;
} }