mirror of
https://framagit.org/enfance-libre/statistiques
synced 2025-12-07 13:53:45 +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 { ContexteEntreeDC } from "./ContexteEntreeDC";
|
||||||
import { EvenementFamille } from "./EvenementFamille";
|
import { EvenementFamille } from "./EvenementFamille";
|
||||||
import {
|
import {
|
||||||
|
statutAllie,
|
||||||
statutExResistant,
|
statutExResistant,
|
||||||
StatutFamille,
|
StatutFamille,
|
||||||
statutResistant,
|
statutResistant,
|
||||||
|
|
@ -50,6 +51,7 @@ export function periodOfResistance(
|
||||||
): Period | null {
|
): Period | null {
|
||||||
if (
|
if (
|
||||||
family.Statut !== statutResistant &&
|
family.Statut !== statutResistant &&
|
||||||
|
family.Statut !== statutAllie &&
|
||||||
family.Statut !== statutExResistant
|
family.Statut !== statutExResistant
|
||||||
) {
|
) {
|
||||||
return null;
|
return null;
|
||||||
|
|
@ -72,7 +74,7 @@ export function isResistant(
|
||||||
return por !== null && isPeriodContaining(por, date);
|
return por !== null && isPeriodContaining(por, date);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function isExResistant(
|
export function isExResistantOrAllie(
|
||||||
family: Famille,
|
family: Famille,
|
||||||
date: Date = new Date(Date.now())
|
date: Date = new Date(Date.now())
|
||||||
): boolean {
|
): boolean {
|
||||||
|
|
|
||||||
|
|
@ -11,10 +11,12 @@ export const statutsPreIntegration = ["en réflexion"] as const;
|
||||||
export const statutsIntegrationEnEchec = ["Abandon", "Incompatible"] as const;
|
export const statutsIntegrationEnEchec = ["Abandon", "Incompatible"] as const;
|
||||||
export const statutResistant = "Résistant·e";
|
export const statutResistant = "Résistant·e";
|
||||||
export const statutExResistant = "Ex résistant·e";
|
export const statutExResistant = "Ex résistant·e";
|
||||||
|
export const statutAllie = "Allié·e";
|
||||||
export const statutsFamille = [
|
export const statutsFamille = [
|
||||||
...statutsPreIntegration,
|
...statutsPreIntegration,
|
||||||
statutResistant,
|
statutResistant,
|
||||||
statutExResistant,
|
statutExResistant,
|
||||||
|
statutAllie,
|
||||||
...statutsIntegrationEnCours,
|
...statutsIntegrationEnCours,
|
||||||
...statutsIntegrationEnEchec,
|
...statutsIntegrationEnEchec,
|
||||||
] as const;
|
] as const;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,9 @@
|
||||||
import { Famille } from "../../Famille";
|
import { Famille } from "../../Famille";
|
||||||
import { integrationAFinaliser, statutExResistant } from "../../StatutFamille";
|
import {
|
||||||
|
integrationAFinaliser,
|
||||||
|
statutAllie,
|
||||||
|
statutExResistant,
|
||||||
|
} from "../../StatutFamille";
|
||||||
import { DonneesNettoyees } from "../fwk/DonneesNettoyees";
|
import { DonneesNettoyees } from "../fwk/DonneesNettoyees";
|
||||||
import { nettoyerFamilles } from "./nettoyerFamilles";
|
import { nettoyerFamilles } from "./nettoyerFamilles";
|
||||||
import { msgDonneeCorrigee } from "../fwk/MessageDeNettoyage";
|
import { msgDonneeCorrigee } from "../fwk/MessageDeNettoyage";
|
||||||
|
|
@ -9,11 +13,13 @@ export function corrigerFamilleExResistanteSansDateIntegration(
|
||||||
): DonneesNettoyees {
|
): DonneesNettoyees {
|
||||||
return nettoyerFamilles(
|
return nettoyerFamilles(
|
||||||
familles,
|
familles,
|
||||||
(f) => f.Statut === statutExResistant && f.Integration === null,
|
(f) =>
|
||||||
|
(f.Statut === statutExResistant || f.Statut === statutAllie) &&
|
||||||
|
f.Integration === null,
|
||||||
(f) => ({ ...f, Statut: integrationAFinaliser }),
|
(f) => ({ ...f, Statut: integrationAFinaliser }),
|
||||||
(f) =>
|
(f) =>
|
||||||
msgDonneeCorrigee(
|
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 { Famille } from "../../Famille";
|
||||||
import { statutExResistant, statutResistant } from "../../StatutFamille";
|
import {
|
||||||
|
statutAllie,
|
||||||
|
statutExResistant,
|
||||||
|
statutResistant,
|
||||||
|
} from "../../StatutFamille";
|
||||||
import { DonneesNettoyees } from "../fwk/DonneesNettoyees";
|
import { DonneesNettoyees } from "../fwk/DonneesNettoyees";
|
||||||
import { msgDonneeCorrigee } from "../fwk/MessageDeNettoyage";
|
import { msgDonneeCorrigee } from "../fwk/MessageDeNettoyage";
|
||||||
import { nettoyerFamilles } from "./nettoyerFamilles";
|
import { nettoyerFamilles } from "./nettoyerFamilles";
|
||||||
|
|
@ -9,11 +13,13 @@ export function corrigerFamilleExResistanteSansDateSortie(
|
||||||
): DonneesNettoyees {
|
): DonneesNettoyees {
|
||||||
return nettoyerFamilles(
|
return nettoyerFamilles(
|
||||||
familles,
|
familles,
|
||||||
(f) => f.Statut === statutExResistant && f.Sortie === null,
|
(f) =>
|
||||||
|
(f.Statut === statutExResistant || f.Statut === statutAllie) &&
|
||||||
|
f.Sortie === null,
|
||||||
(f) => ({ ...f, Statut: statutResistant }),
|
(f) => ({ ...f, Statut: statutResistant }),
|
||||||
(f) =>
|
(f) =>
|
||||||
msgDonneeCorrigee(
|
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 { filterFamillesWithOneOfEvenementsOfType } from "../filterFamillesWithOneOfEvenementsOfType";
|
||||||
import { nbFamillesAvecPagesLiees } from "../nbFamillesAvecPagesLiees";
|
import { nbFamillesAvecPagesLiees } from "../nbFamillesAvecPagesLiees";
|
||||||
import { StatsAutres } from "./StatsAutres";
|
import { StatsAutres } from "./StatsAutres";
|
||||||
|
|
||||||
export function computeStatsAutres(familles: Famille[]): StatsAutres {
|
export function computeStatsAutres(familles: Famille[]): StatsAutres {
|
||||||
const famillesResistantesOuEx = familles.filter(
|
const famillesResistantesOuEx = familles.filter(
|
||||||
(f) => isResistant(f) || isExResistant(f)
|
(f) => isResistant(f) || isExResistantOrAllie(f)
|
||||||
);
|
);
|
||||||
const statsAutres: StatsAutres = {
|
const statsAutres: StatsAutres = {
|
||||||
nbFamillesControleFiscal: nbFamillesAvecPagesLiees(
|
nbFamillesControleFiscal: nbFamillesAvecPagesLiees(
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,11 @@ import {
|
||||||
isInformationPreoccupante,
|
isInformationPreoccupante,
|
||||||
isProcedureCivile,
|
isProcedureCivile,
|
||||||
} from "../../../data/EvenementFamille";
|
} from "../../../data/EvenementFamille";
|
||||||
import { Famille, isExResistant, isResistant } from "../../../data/Famille";
|
import {
|
||||||
|
Famille,
|
||||||
|
isExResistantOrAllie,
|
||||||
|
isResistant,
|
||||||
|
} from "../../../data/Famille";
|
||||||
import {
|
import {
|
||||||
isEvtTypeProcedurePenale,
|
isEvtTypeProcedurePenale,
|
||||||
isEvtTypeProcedurePenaleHorsGendarmerie,
|
isEvtTypeProcedurePenaleHorsGendarmerie,
|
||||||
|
|
@ -22,7 +26,7 @@ export function computeStatsDepartementales(
|
||||||
departements: Departement[]
|
departements: Departement[]
|
||||||
): StatDepartementales {
|
): StatDepartementales {
|
||||||
const famillesResistantesOuEx = familles.filter(
|
const famillesResistantesOuEx = familles.filter(
|
||||||
(f) => isResistant(f) || isExResistant(f)
|
(f) => isResistant(f) || isExResistantOrAllie(f)
|
||||||
);
|
);
|
||||||
const famillesByDepartement: Record<string, Famille[]> = groupBy(
|
const famillesByDepartement: Record<string, Famille[]> = groupBy(
|
||||||
famillesResistantesOuEx,
|
famillesResistantesOuEx,
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import {
|
import {
|
||||||
dureeResistanceInDays,
|
dureeResistanceInDays,
|
||||||
Famille,
|
Famille,
|
||||||
isExResistant,
|
isExResistantOrAllie,
|
||||||
isResistant,
|
isResistant,
|
||||||
} from "../../../data/Famille";
|
} from "../../../data/Famille";
|
||||||
import { average } from "../math/average";
|
import { average } from "../math/average";
|
||||||
|
|
@ -13,7 +13,7 @@ import { nbFamillesAvecPagesLiees } from "../nbFamillesAvecPagesLiees";
|
||||||
|
|
||||||
export function computeStatsGenerales(familles: Famille[]): StatsGenerales {
|
export function computeStatsGenerales(familles: Famille[]): StatsGenerales {
|
||||||
const famillesResistantesOrEx = familles.filter(
|
const famillesResistantesOrEx = familles.filter(
|
||||||
(f) => isResistant(f) || isExResistant(f)
|
(f) => isResistant(f) || isExResistantOrAllie(f)
|
||||||
);
|
);
|
||||||
|
|
||||||
const famillesResistantes = familles.filter((f) => isResistant(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 { generateELMonths } from "../../../period/generateELMonths";
|
||||||
import { isPeriodContaining } from "../../../period/isPeriodContaining";
|
import { isPeriodContaining } from "../../../period/isPeriodContaining";
|
||||||
import { Period } from "../../../period/Period";
|
import { Period } from "../../../period/Period";
|
||||||
|
|
@ -45,7 +49,7 @@ export function computeStatsGeneralesMensuelles(
|
||||||
function nbEntreeSurPeriode(familles: Famille[], period: Period): number {
|
function nbEntreeSurPeriode(familles: Famille[], period: Period): number {
|
||||||
return familles.filter(
|
return familles.filter(
|
||||||
(f) =>
|
(f) =>
|
||||||
(isResistant(f) || isExResistant(f)) &&
|
(isResistant(f) || isExResistantOrAllie(f)) &&
|
||||||
f.Integration &&
|
f.Integration &&
|
||||||
isPeriodContaining(period, f.Integration)
|
isPeriodContaining(period, f.Integration)
|
||||||
).length;
|
).length;
|
||||||
|
|
@ -54,7 +58,7 @@ function nbEntreeSurPeriode(familles: Famille[], period: Period): number {
|
||||||
function nbSortieSurPeriode(familles: Famille[], period: Period): number {
|
function nbSortieSurPeriode(familles: Famille[], period: Period): number {
|
||||||
return familles.filter(
|
return familles.filter(
|
||||||
(f) =>
|
(f) =>
|
||||||
(isResistant(f) || isExResistant(f)) &&
|
(isResistant(f) || isExResistantOrAllie(f)) &&
|
||||||
f.Sortie &&
|
f.Sortie &&
|
||||||
isPeriodContaining(period, f.Sortie)
|
isPeriodContaining(period, f.Sortie)
|
||||||
).length;
|
).length;
|
||||||
|
|
@ -66,7 +70,7 @@ function nbFamillesResistanteAFinPeriode(
|
||||||
): number {
|
): number {
|
||||||
return familles.filter(
|
return familles.filter(
|
||||||
(f) =>
|
(f) =>
|
||||||
(isResistant(f) || isExResistant(f)) &&
|
(isResistant(f) || isExResistantOrAllie(f)) &&
|
||||||
f.Integration &&
|
f.Integration &&
|
||||||
f.Integration < period.end &&
|
f.Integration < period.end &&
|
||||||
(!f.Sortie || f.Sortie > period.end)
|
(!f.Sortie || f.Sortie > period.end)
|
||||||
|
|
@ -79,7 +83,7 @@ function nbFamillesExResistanteAFinPeriode(
|
||||||
): number {
|
): number {
|
||||||
return familles.filter(
|
return familles.filter(
|
||||||
(f) =>
|
(f) =>
|
||||||
(isResistant(f) || isExResistant(f)) &&
|
(isResistant(f) || isExResistantOrAllie(f)) &&
|
||||||
f.Integration &&
|
f.Integration &&
|
||||||
f.Integration < period.end &&
|
f.Integration < period.end &&
|
||||||
f.Sortie &&
|
f.Sortie &&
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,11 @@ import {
|
||||||
EvenementFamille,
|
EvenementFamille,
|
||||||
isProcedurePenaleHorsGendarmerie,
|
isProcedurePenaleHorsGendarmerie,
|
||||||
} from "../../../data/EvenementFamille";
|
} from "../../../data/EvenementFamille";
|
||||||
import { Famille, isExResistant, isResistant } from "../../../data/Famille";
|
import {
|
||||||
|
Famille,
|
||||||
|
isExResistantOrAllie,
|
||||||
|
isResistant,
|
||||||
|
} from "../../../data/Famille";
|
||||||
import { filterFamillesWithOneOfEvenements } from "../filterFamillesWithOneOfEvenements";
|
import { filterFamillesWithOneOfEvenements } from "../filterFamillesWithOneOfEvenements";
|
||||||
import { filterFamillesWithOneOfEvenementsOfType } from "../filterFamillesWithOneOfEvenementsOfType";
|
import { filterFamillesWithOneOfEvenementsOfType } from "../filterFamillesWithOneOfEvenementsOfType";
|
||||||
import { StatsPenales } from "./StatsPenales";
|
import { StatsPenales } from "./StatsPenales";
|
||||||
|
|
@ -30,7 +34,7 @@ export type FamilleAvecInfoTribunaux = Famille & {
|
||||||
|
|
||||||
export function computeStatsPenales(familles: Famille[]): StatsPenales {
|
export function computeStatsPenales(familles: Famille[]): StatsPenales {
|
||||||
const famillesResistantesOuEx = familles.filter(
|
const famillesResistantesOuEx = familles.filter(
|
||||||
(f) => isResistant(f) || isExResistant(f)
|
(f) => isResistant(f) || isExResistantOrAllie(f)
|
||||||
);
|
);
|
||||||
const famillesMisesEnDemeure = filterFamillesWithOneOfEvenementsOfType(
|
const famillesMisesEnDemeure = filterFamillesWithOneOfEvenementsOfType(
|
||||||
famillesResistantesOuEx,
|
famillesResistantesOuEx,
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,11 @@ import {
|
||||||
isInformationPreoccupante,
|
isInformationPreoccupante,
|
||||||
isProcedureCivile,
|
isProcedureCivile,
|
||||||
} from "../../../data/EvenementFamille";
|
} from "../../../data/EvenementFamille";
|
||||||
import { Famille, isExResistant, isResistant } from "../../../data/Famille";
|
import {
|
||||||
|
Famille,
|
||||||
|
isExResistantOrAllie,
|
||||||
|
isResistant,
|
||||||
|
} from "../../../data/Famille";
|
||||||
import { filterFamillesWithOneOfEvenements } from "../filterFamillesWithOneOfEvenements";
|
import { filterFamillesWithOneOfEvenements } from "../filterFamillesWithOneOfEvenements";
|
||||||
import { filterFamillesWithOneOfEvenementsOfType } from "../filterFamillesWithOneOfEvenementsOfType";
|
import { filterFamillesWithOneOfEvenementsOfType } from "../filterFamillesWithOneOfEvenementsOfType";
|
||||||
import { nbFamillesAvecPagesLiees } from "../nbFamillesAvecPagesLiees";
|
import { nbFamillesAvecPagesLiees } from "../nbFamillesAvecPagesLiees";
|
||||||
|
|
@ -11,7 +15,7 @@ import { StatsSociales } from "./StatsSociales";
|
||||||
|
|
||||||
export function computeStatsSociales(familles: Famille[]): StatsSociales {
|
export function computeStatsSociales(familles: Famille[]): StatsSociales {
|
||||||
const famillesResistantesOuEx = familles.filter(
|
const famillesResistantesOuEx = familles.filter(
|
||||||
(f) => isResistant(f) || isExResistant(f)
|
(f) => isResistant(f) || isExResistantOrAllie(f)
|
||||||
);
|
);
|
||||||
const now = new Date();
|
const now = new Date();
|
||||||
const statsCiviles: StatsSociales = {
|
const statsCiviles: StatsSociales = {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue