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

View File

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

View File

@ -9,6 +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";
export function computeStatsGenerales(familles: Famille[]): StatsGenerales { export function computeStatsGenerales(familles: Famille[]): StatsGenerales {
const famillesResistantesOrEx = familles.filter( const famillesResistantesOrEx = familles.filter(
@ -24,8 +25,11 @@ export function computeStatsGenerales(familles: Famille[]): StatsGenerales {
(f) => dureeResistanceInDays(f)! (f) => dureeResistanceInDays(f)!
); );
const statsGenerales: StatsGenerales = { const statsGenerales: StatsGenerales = {
nbFamillesResistantesActuelles: famillesResistantes.length, nbFamillesResistantesActuelles:
nbFamillesResistantesActuellesOuPassees: famillesResistantesOrEx.length, nbFamillesAvecPagesLiees(famillesResistantes),
nbFamillesResistantesActuellesOuPassees: nbFamillesAvecPagesLiees(
famillesResistantesOrEx
),
nbFamillesResistantesActuellesParDepartement: sortByKey( nbFamillesResistantesActuellesParDepartement: sortByKey(
countBy(famillesResistantes, (f) => f.Departement) countBy(famillesResistantes, (f) => f.Departement)
@ -35,7 +39,9 @@ export function computeStatsGenerales(familles: Famille[]): StatsGenerales {
).length, ).length,
dureeResistanceMedianne: median(dureesResistances), dureeResistanceMedianne: median(dureesResistances),
dureeResistanceMoyenne: average(dureesResistances), dureeResistanceMoyenne: average(dureesResistances),
nbFamillesResistantesActuellesSansEvenements: famillesSansEvenements.length, nbFamillesResistantesActuellesSansEvenements: nbFamillesAvecPagesLiees(
famillesSansEvenements
),
nbFamillesParContexteDEntree: sortByKey( nbFamillesParContexteDEntree: sortByKey(
countBy(famillesResistantesOrEx, (f) => f.ContexteEntree) countBy(famillesResistantesOrEx, (f) => f.ContexteEntree)
), ),

View File

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