mirror of
https://framagit.org/enfance-libre/statistiques
synced 2025-12-07 04:03:44 +00:00
feat: adapte au statut Allié
This commit is contained in:
parent
f979398936
commit
a0f0841e99
10 changed files with 58 additions and 22 deletions
|
|
@ -5,6 +5,7 @@ import { isPeriodContaining } from "../period/isPeriodContaining";
|
|||
import { ContexteEntreeDC } from "./ContexteEntreeDC";
|
||||
import { EvenementFamille } from "./EvenementFamille";
|
||||
import {
|
||||
statutAllie,
|
||||
statutExResistant,
|
||||
StatutFamille,
|
||||
statutResistant,
|
||||
|
|
@ -50,6 +51,7 @@ export function periodOfResistance(
|
|||
): Period | null {
|
||||
if (
|
||||
family.Statut !== statutResistant &&
|
||||
family.Statut !== statutAllie &&
|
||||
family.Statut !== statutExResistant
|
||||
) {
|
||||
return null;
|
||||
|
|
@ -72,7 +74,7 @@ export function isResistant(
|
|||
return por !== null && isPeriodContaining(por, date);
|
||||
}
|
||||
|
||||
export function isExResistant(
|
||||
export function isExResistantOrAllie(
|
||||
family: Famille,
|
||||
date: Date = new Date(Date.now())
|
||||
): boolean {
|
||||
|
|
|
|||
|
|
@ -11,10 +11,12 @@ export const statutsPreIntegration = ["en réflexion"] as const;
|
|||
export const statutsIntegrationEnEchec = ["Abandon", "Incompatible"] as const;
|
||||
export const statutResistant = "Résistant·e";
|
||||
export const statutExResistant = "Ex résistant·e";
|
||||
export const statutAllie = "Allié·e";
|
||||
export const statutsFamille = [
|
||||
...statutsPreIntegration,
|
||||
statutResistant,
|
||||
statutExResistant,
|
||||
statutAllie,
|
||||
...statutsIntegrationEnCours,
|
||||
...statutsIntegrationEnEchec,
|
||||
] as const;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,9 @@
|
|||
import { Famille } from "../../Famille";
|
||||
import { integrationAFinaliser, statutExResistant } from "../../StatutFamille";
|
||||
import {
|
||||
integrationAFinaliser,
|
||||
statutAllie,
|
||||
statutExResistant,
|
||||
} from "../../StatutFamille";
|
||||
import { DonneesNettoyees } from "../fwk/DonneesNettoyees";
|
||||
import { nettoyerFamilles } from "./nettoyerFamilles";
|
||||
import { msgDonneeCorrigee } from "../fwk/MessageDeNettoyage";
|
||||
|
|
@ -9,11 +13,13 @@ export function corrigerFamilleExResistanteSansDateIntegration(
|
|||
): DonneesNettoyees {
|
||||
return nettoyerFamilles(
|
||||
familles,
|
||||
(f) => f.Statut === statutExResistant && f.Integration === null,
|
||||
(f) =>
|
||||
(f.Statut === statutExResistant || f.Statut === statutAllie) &&
|
||||
f.Integration === null,
|
||||
(f) => ({ ...f, Statut: integrationAFinaliser }),
|
||||
(f) =>
|
||||
msgDonneeCorrigee(
|
||||
`Famille ${f.Titre} - avec un statut Ex Résistant maos sans date d'intégration => Le statut est remplacé par "${integrationAFinaliser}" pour le calcul des statistics`
|
||||
`Famille ${f.Titre} - avec un statut "${f.Statut}" mais sans date d'intégration => Le statut est remplacé par "${integrationAFinaliser}" pour le calcul des statistics`
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,9 @@
|
|||
import { Famille } from "../../Famille";
|
||||
import { statutExResistant, statutResistant } from "../../StatutFamille";
|
||||
import {
|
||||
statutAllie,
|
||||
statutExResistant,
|
||||
statutResistant,
|
||||
} from "../../StatutFamille";
|
||||
import { DonneesNettoyees } from "../fwk/DonneesNettoyees";
|
||||
import { msgDonneeCorrigee } from "../fwk/MessageDeNettoyage";
|
||||
import { nettoyerFamilles } from "./nettoyerFamilles";
|
||||
|
|
@ -9,11 +13,13 @@ export function corrigerFamilleExResistanteSansDateSortie(
|
|||
): DonneesNettoyees {
|
||||
return nettoyerFamilles(
|
||||
familles,
|
||||
(f) => f.Statut === statutExResistant && f.Sortie === null,
|
||||
(f) =>
|
||||
(f.Statut === statutExResistant || f.Statut === statutAllie) &&
|
||||
f.Sortie === null,
|
||||
(f) => ({ ...f, Statut: statutResistant }),
|
||||
(f) =>
|
||||
msgDonneeCorrigee(
|
||||
`Famille ${f.Titre} - avec un statut Ex Résistant maos sans date de Sortie => Le statut est remplacé par "${statutResistant}" pour le calcul des statistics`
|
||||
`Famille ${f.Titre} - avec un statut "${f.Statut}" mais sans date de Sortie => Le statut est remplacé par "${statutResistant}" pour le calcul des statistics`
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +1,15 @@
|
|||
import { Famille, isExResistant, isResistant } from "../../../data/Famille";
|
||||
import {
|
||||
Famille,
|
||||
isExResistantOrAllie,
|
||||
isResistant,
|
||||
} from "../../../data/Famille";
|
||||
import { filterFamillesWithOneOfEvenementsOfType } from "../filterFamillesWithOneOfEvenementsOfType";
|
||||
import { nbFamillesAvecPagesLiees } from "../nbFamillesAvecPagesLiees";
|
||||
import { StatsAutres } from "./StatsAutres";
|
||||
|
||||
export function computeStatsAutres(familles: Famille[]): StatsAutres {
|
||||
const famillesResistantesOuEx = familles.filter(
|
||||
(f) => isResistant(f) || isExResistant(f)
|
||||
(f) => isResistant(f) || isExResistantOrAllie(f)
|
||||
);
|
||||
const statsAutres: StatsAutres = {
|
||||
nbFamillesControleFiscal: nbFamillesAvecPagesLiees(
|
||||
|
|
|
|||
|
|
@ -4,7 +4,11 @@ import {
|
|||
isInformationPreoccupante,
|
||||
isProcedureCivile,
|
||||
} from "../../../data/EvenementFamille";
|
||||
import { Famille, isExResistant, isResistant } from "../../../data/Famille";
|
||||
import {
|
||||
Famille,
|
||||
isExResistantOrAllie,
|
||||
isResistant,
|
||||
} from "../../../data/Famille";
|
||||
import {
|
||||
isEvtTypeProcedurePenale,
|
||||
isEvtTypeProcedurePenaleHorsGendarmerie,
|
||||
|
|
@ -22,7 +26,7 @@ export function computeStatsDepartementales(
|
|||
departements: Departement[]
|
||||
): StatDepartementales {
|
||||
const famillesResistantesOuEx = familles.filter(
|
||||
(f) => isResistant(f) || isExResistant(f)
|
||||
(f) => isResistant(f) || isExResistantOrAllie(f)
|
||||
);
|
||||
const famillesByDepartement: Record<string, Famille[]> = groupBy(
|
||||
famillesResistantesOuEx,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import {
|
||||
dureeResistanceInDays,
|
||||
Famille,
|
||||
isExResistant,
|
||||
isExResistantOrAllie,
|
||||
isResistant,
|
||||
} from "../../../data/Famille";
|
||||
import { average } from "../math/average";
|
||||
|
|
@ -13,7 +13,7 @@ import { nbFamillesAvecPagesLiees } from "../nbFamillesAvecPagesLiees";
|
|||
|
||||
export function computeStatsGenerales(familles: Famille[]): StatsGenerales {
|
||||
const famillesResistantesOrEx = familles.filter(
|
||||
(f) => isResistant(f) || isExResistant(f)
|
||||
(f) => isResistant(f) || isExResistantOrAllie(f)
|
||||
);
|
||||
|
||||
const famillesResistantes = familles.filter((f) => isResistant(f));
|
||||
|
|
|
|||
|
|
@ -1,4 +1,8 @@
|
|||
import { Famille, isExResistant, isResistant } from "../../../data/Famille";
|
||||
import {
|
||||
Famille,
|
||||
isExResistantOrAllie,
|
||||
isResistant,
|
||||
} from "../../../data/Famille";
|
||||
import { generateELMonths } from "../../../period/generateELMonths";
|
||||
import { isPeriodContaining } from "../../../period/isPeriodContaining";
|
||||
import { Period } from "../../../period/Period";
|
||||
|
|
@ -45,7 +49,7 @@ export function computeStatsGeneralesMensuelles(
|
|||
function nbEntreeSurPeriode(familles: Famille[], period: Period): number {
|
||||
return familles.filter(
|
||||
(f) =>
|
||||
(isResistant(f) || isExResistant(f)) &&
|
||||
(isResistant(f) || isExResistantOrAllie(f)) &&
|
||||
f.Integration &&
|
||||
isPeriodContaining(period, f.Integration)
|
||||
).length;
|
||||
|
|
@ -54,7 +58,7 @@ function nbEntreeSurPeriode(familles: Famille[], period: Period): number {
|
|||
function nbSortieSurPeriode(familles: Famille[], period: Period): number {
|
||||
return familles.filter(
|
||||
(f) =>
|
||||
(isResistant(f) || isExResistant(f)) &&
|
||||
(isResistant(f) || isExResistantOrAllie(f)) &&
|
||||
f.Sortie &&
|
||||
isPeriodContaining(period, f.Sortie)
|
||||
).length;
|
||||
|
|
@ -66,7 +70,7 @@ function nbFamillesResistanteAFinPeriode(
|
|||
): number {
|
||||
return familles.filter(
|
||||
(f) =>
|
||||
(isResistant(f) || isExResistant(f)) &&
|
||||
(isResistant(f) || isExResistantOrAllie(f)) &&
|
||||
f.Integration &&
|
||||
f.Integration < period.end &&
|
||||
(!f.Sortie || f.Sortie > period.end)
|
||||
|
|
@ -79,7 +83,7 @@ function nbFamillesExResistanteAFinPeriode(
|
|||
): number {
|
||||
return familles.filter(
|
||||
(f) =>
|
||||
(isResistant(f) || isExResistant(f)) &&
|
||||
(isResistant(f) || isExResistantOrAllie(f)) &&
|
||||
f.Integration &&
|
||||
f.Integration < period.end &&
|
||||
f.Sortie &&
|
||||
|
|
|
|||
|
|
@ -6,7 +6,11 @@ import {
|
|||
EvenementFamille,
|
||||
isProcedurePenaleHorsGendarmerie,
|
||||
} from "../../../data/EvenementFamille";
|
||||
import { Famille, isExResistant, isResistant } from "../../../data/Famille";
|
||||
import {
|
||||
Famille,
|
||||
isExResistantOrAllie,
|
||||
isResistant,
|
||||
} from "../../../data/Famille";
|
||||
import { filterFamillesWithOneOfEvenements } from "../filterFamillesWithOneOfEvenements";
|
||||
import { filterFamillesWithOneOfEvenementsOfType } from "../filterFamillesWithOneOfEvenementsOfType";
|
||||
import { StatsPenales } from "./StatsPenales";
|
||||
|
|
@ -30,7 +34,7 @@ export type FamilleAvecInfoTribunaux = Famille & {
|
|||
|
||||
export function computeStatsPenales(familles: Famille[]): StatsPenales {
|
||||
const famillesResistantesOuEx = familles.filter(
|
||||
(f) => isResistant(f) || isExResistant(f)
|
||||
(f) => isResistant(f) || isExResistantOrAllie(f)
|
||||
);
|
||||
const famillesMisesEnDemeure = filterFamillesWithOneOfEvenementsOfType(
|
||||
famillesResistantesOuEx,
|
||||
|
|
|
|||
|
|
@ -3,7 +3,11 @@ import {
|
|||
isInformationPreoccupante,
|
||||
isProcedureCivile,
|
||||
} from "../../../data/EvenementFamille";
|
||||
import { Famille, isExResistant, isResistant } from "../../../data/Famille";
|
||||
import {
|
||||
Famille,
|
||||
isExResistantOrAllie,
|
||||
isResistant,
|
||||
} from "../../../data/Famille";
|
||||
import { filterFamillesWithOneOfEvenements } from "../filterFamillesWithOneOfEvenements";
|
||||
import { filterFamillesWithOneOfEvenementsOfType } from "../filterFamillesWithOneOfEvenementsOfType";
|
||||
import { nbFamillesAvecPagesLiees } from "../nbFamillesAvecPagesLiees";
|
||||
|
|
@ -11,7 +15,7 @@ import { StatsSociales } from "./StatsSociales";
|
|||
|
||||
export function computeStatsSociales(familles: Famille[]): StatsSociales {
|
||||
const famillesResistantesOuEx = familles.filter(
|
||||
(f) => isResistant(f) || isExResistant(f)
|
||||
(f) => isResistant(f) || isExResistantOrAllie(f)
|
||||
);
|
||||
const now = new Date();
|
||||
const statsCiviles: StatsSociales = {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue