From fb1fec70015c6e4bb6aaf476c26cf8335cce2575 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Arod?= Date: Wed, 18 Dec 2024 09:41:51 +0100 Subject: [PATCH] feat: utilise les liens de pages partout --- .../v2/createSingleValueStatListItemBlock.ts | 32 +++-- .../v2/autres/computeStatsAutres.ts | 31 +++-- .../v2/generales/computeStatsGenerales.ts | 12 +- .../v2/sociales/computeStatsSociales.ts | 130 +++++++++++------- 4 files changed, 126 insertions(+), 79 deletions(-) diff --git a/src/notion/publish/v2/createSingleValueStatListItemBlock.ts b/src/notion/publish/v2/createSingleValueStatListItemBlock.ts index 2d3dba6..f5e0340 100644 --- a/src/notion/publish/v2/createSingleValueStatListItemBlock.ts +++ b/src/notion/publish/v2/createSingleValueStatListItemBlock.ts @@ -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 } }; } { diff --git a/src/statistiques/v2/autres/computeStatsAutres.ts b/src/statistiques/v2/autres/computeStatsAutres.ts index dc81f2f..bf16c0e 100644 --- a/src/statistiques/v2/autres/computeStatsAutres.ts +++ b/src/statistiques/v2/autres/computeStatsAutres.ts @@ -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; } diff --git a/src/statistiques/v2/generales/computeStatsGenerales.ts b/src/statistiques/v2/generales/computeStatsGenerales.ts index 989cb13..cc850cd 100644 --- a/src/statistiques/v2/generales/computeStatsGenerales.ts +++ b/src/statistiques/v2/generales/computeStatsGenerales.ts @@ -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) ), diff --git a/src/statistiques/v2/sociales/computeStatsSociales.ts b/src/statistiques/v2/sociales/computeStatsSociales.ts index 4233ee0..2f50a8c 100644 --- a/src/statistiques/v2/sociales/computeStatsSociales.ts +++ b/src/statistiques/v2/sociales/computeStatsSociales.ts @@ -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 d’enquê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 d’enquête sociale" + ) + ), }, }; return statsCiviles;