feat: utilise les liens de pages partout

main
Sébastien Arod 2024-12-18 09:41:51 +01:00
parent 6cb2b75c71
commit fb1fec7001
4 changed files with 126 additions and 79 deletions

View File

@ -9,18 +9,10 @@ export function createSingleValueStatListItemBlock(
formatOptions: ValueFormatOptions,
data: StatsData
): BlockObjectRequest {
if (isNumber(data)) {
return {
bulleted_list_item: {
rich_text: [
{
text: {
content: label + ": " + formatValue(data, formatOptions),
},
},
],
},
};
if (isNumber(data) ) {
return bulletedListNumberData(label, data, formatOptions);
} else if (data.relatedPageIds.length === 0 ) {
return bulletedListNumberData(label, data.value, formatOptions);
} else {
return {
toggle: {
@ -37,7 +29,7 @@ export function createSingleValueStatListItemBlock(
rich_text: [
{
text: {
content: "Page concernées:",
content: "Liens: ",
},
},
...data.relatedPageIds.map((pageId) =>
@ -52,6 +44,20 @@ export function createSingleValueStatListItemBlock(
}
}
function bulletedListNumberData(label: string, data: number, formatOptions: ValueFormatOptions): BlockObjectRequest {
return {
bulleted_list_item: {
rich_text: [
{
text: {
content: label + ": " + formatValue(data, formatOptions),
},
},
],
},
};
}
function createPageMentionRichTextElement(pageId: string): {
mention: { page: { id: string } };
} {

View File

@ -1,5 +1,6 @@
import { Famille, isExResistant, isResistant } from "../../../data/Famille";
import { filterFamillesWithOneOfEvenementsOfType } from "../filterFamillesWithOneOfEvenementsOfType";
import { nbFamillesAvecPagesLiees } from "../penales/nbFamillesAvecPagesLiees";
import { StatsAutres } from "./StatsAutres";
export function computeStatsAutres(familles: Famille[]): StatsAutres {
@ -7,20 +8,26 @@ export function computeStatsAutres(familles: Famille[]): StatsAutres {
(f) => isResistant(f) || isExResistant(f)
);
const statsAutres: StatsAutres = {
nbFamillesControleFiscal: filterFamillesWithOneOfEvenementsOfType(
famillesResistantesOuEx,
"Contrôle fiscal"
).length,
nbFamillesControleFiscal: nbFamillesAvecPagesLiees(
filterFamillesWithOneOfEvenementsOfType(
famillesResistantesOuEx,
"Contrôle fiscal"
)
),
nbFamillesControleURSAFF: filterFamillesWithOneOfEvenementsOfType(
famillesResistantesOuEx,
"Contrôle URSSAF"
).length,
nbFamillesControleURSAFF: nbFamillesAvecPagesLiees(
filterFamillesWithOneOfEvenementsOfType(
famillesResistantesOuEx,
"Contrôle URSSAF"
)
),
nbFamillesSuppressionCAF: filterFamillesWithOneOfEvenementsOfType(
famillesResistantesOuEx,
"CAF suppression"
).length,
nbFamillesSuppressionCAF: nbFamillesAvecPagesLiees(
filterFamillesWithOneOfEvenementsOfType(
famillesResistantesOuEx,
"CAF suppression"
)
),
};
return statsAutres;
}

View File

@ -9,6 +9,7 @@ import { median } from "../../../utils/math/median";
import { StatsGenerales } from "./StatsGenerales";
import _, { countBy, uniq } from "lodash";
import { isIntegrationEnCours } from "../../../data/StatutFamille";
import { nbFamillesAvecPagesLiees } from "../penales/nbFamillesAvecPagesLiees";
export function computeStatsGenerales(familles: Famille[]): StatsGenerales {
const famillesResistantesOrEx = familles.filter(
@ -24,8 +25,11 @@ export function computeStatsGenerales(familles: Famille[]): StatsGenerales {
(f) => dureeResistanceInDays(f)!
);
const statsGenerales: StatsGenerales = {
nbFamillesResistantesActuelles: famillesResistantes.length,
nbFamillesResistantesActuellesOuPassees: famillesResistantesOrEx.length,
nbFamillesResistantesActuelles:
nbFamillesAvecPagesLiees(famillesResistantes),
nbFamillesResistantesActuellesOuPassees: nbFamillesAvecPagesLiees(
famillesResistantesOrEx
),
nbFamillesResistantesActuellesParDepartement: sortByKey(
countBy(famillesResistantes, (f) => f.Departement)
@ -35,7 +39,9 @@ export function computeStatsGenerales(familles: Famille[]): StatsGenerales {
).length,
dureeResistanceMedianne: median(dureesResistances),
dureeResistanceMoyenne: average(dureesResistances),
nbFamillesResistantesActuellesSansEvenements: famillesSansEvenements.length,
nbFamillesResistantesActuellesSansEvenements: nbFamillesAvecPagesLiees(
famillesSansEvenements
),
nbFamillesParContexteDEntree: sortByKey(
countBy(famillesResistantesOrEx, (f) => f.ContexteEntree)
),

View File

@ -6,6 +6,7 @@ import {
import { Famille, isExResistant, isResistant } from "../../../data/Famille";
import { filterFamillesWithOneOfEvenements } from "../filterFamillesWithOneOfEvenements";
import { filterFamillesWithOneOfEvenementsOfType } from "../filterFamillesWithOneOfEvenementsOfType";
import { nbFamillesAvecPagesLiees } from "../penales/nbFamillesAvecPagesLiees";
import { StatsSociales } from "./StatsSociales";
export function computeStatsSociales(familles: Famille[]): StatsSociales {
@ -14,64 +15,91 @@ export function computeStatsSociales(familles: Famille[]): StatsSociales {
);
const now = new Date();
const statsCiviles: StatsSociales = {
nbFamillesProcedureCivile: filterFamillesWithOneOfEvenements(
famillesResistantesOuEx,
(e) => isProcedureCivile(e)
).length,
nbFamillesProcedureCivile: nbFamillesAvecPagesLiees(
filterFamillesWithOneOfEvenements(famillesResistantesOuEx, (e) =>
isProcedureCivile(e)
)
),
nbFamilleAvecIP: filterFamillesWithOneOfEvenements(
famillesResistantesOuEx,
isInformationPreoccupante
).length,
nbFamilleAvecIP: nbFamillesAvecPagesLiees(
filterFamillesWithOneOfEvenements(
famillesResistantesOuEx,
isInformationPreoccupante
)
),
nbFamilleAvecClassementSuiteIP: filterFamillesWithOneOfEvenementsOfType(
famillesResistantesOuEx,
"Classement suite IP"
).length,
nbFamilleAvecAssistanceEducative: filterFamillesWithOneOfEvenementsOfType(
famillesResistantesOuEx,
"Assistance éducative"
).length,
nbFamilleAvecClassementSuiteIP: nbFamillesAvecPagesLiees(
filterFamillesWithOneOfEvenementsOfType(
famillesResistantesOuEx,
"Classement suite IP"
)
),
nbFamilleAvecAssistanceEducative: nbFamillesAvecPagesLiees(
filterFamillesWithOneOfEvenementsOfType(
famillesResistantesOuEx,
"Assistance éducative"
)
),
nbFamilleAvecAuditionDesEnfants: filterFamillesWithOneOfEvenementsOfType(
famillesResistantesOuEx,
"Audition des enfants"
).length,
nbFamilleAvecAuditionDesEnfants: nbFamillesAvecPagesLiees(
filterFamillesWithOneOfEvenementsOfType(
famillesResistantesOuEx,
"Audition des enfants"
)
),
nbFamilleAvecSignalement: filterFamillesWithOneOfEvenementsOfType(
famillesResistantesOuEx,
"Signalement"
).length,
nbFamilleAvecSignalement: nbFamillesAvecPagesLiees(
filterFamillesWithOneOfEvenementsOfType(
famillesResistantesOuEx,
"Signalement"
)
),
jugePourEnfant: {
nbFamillesPassees: filterFamillesWithOneOfEvenements(
famillesResistantesOuEx,
(e) => e.Type === "Juge pour enfants" && isEvenementBefore(e, now)
).length,
nbFamillesConvoquées: filterFamillesWithOneOfEvenements(
famillesResistantesOuEx,
(e) => e.Type === "Juge pour enfants" && !isEvenementBefore(e, now)
).length,
nbFamillesPassees: nbFamillesAvecPagesLiees(
filterFamillesWithOneOfEvenements(
famillesResistantesOuEx,
(e) => e.Type === "Juge pour enfants" && isEvenementBefore(e, now)
)
),
nbFamillesConvoquées: nbFamillesAvecPagesLiees(
filterFamillesWithOneOfEvenements(
famillesResistantesOuEx,
(e) => e.Type === "Juge pour enfants" && !isEvenementBefore(e, now)
)
),
},
propFamilleSocial: {
classementApresIP: famillesResistantesOuEx.filter(
(f) => f.Social === "Classement après IP"
).length,
classementApresMijeOuAemo: famillesResistantesOuEx.filter(
(f) => f.Social === "Classement après MIJE ou AEMO ou"
).length,
convocationJugePourEnfants: famillesResistantesOuEx.filter(
(f) => f.Social === "Convocation Juge pour Enfants"
).length,
convoqueeServiceSociaux: famillesResistantesOuEx.filter(
(f) => f.Social === "Convoquée par les services sociaux"
).length,
enqueteEnCours: famillesResistantesOuEx.filter(
(f) => f.Social === "Enquête en cours"
).length,
mije: famillesResistantesOuEx.filter((f) => f.Social === "MJIE").length,
pasDenquete: famillesResistantesOuEx.filter(
(f) => f.Social === "Pas denquête sociale"
).length,
classementApresIP: nbFamillesAvecPagesLiees(
famillesResistantesOuEx.filter(
(f) => f.Social === "Classement après IP"
)
),
classementApresMijeOuAemo: nbFamillesAvecPagesLiees(
famillesResistantesOuEx.filter(
(f) => f.Social === "Classement après MIJE ou AEMO ou"
)
),
convocationJugePourEnfants: nbFamillesAvecPagesLiees(
famillesResistantesOuEx.filter(
(f) => f.Social === "Convocation Juge pour Enfants"
)
),
convoqueeServiceSociaux: nbFamillesAvecPagesLiees(
famillesResistantesOuEx.filter(
(f) => f.Social === "Convoquée par les services sociaux"
)
),
enqueteEnCours: nbFamillesAvecPagesLiees(
famillesResistantesOuEx.filter((f) => f.Social === "Enquête en cours")
),
mije: nbFamillesAvecPagesLiees(
famillesResistantesOuEx.filter((f) => f.Social === "MJIE")
),
pasDenquete: nbFamillesAvecPagesLiees(
famillesResistantesOuEx.filter(
(f) => f.Social === "Pas denquête sociale"
)
),
},
};
return statsCiviles;