Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/recherche avancee #632

Merged
merged 44 commits into from
Jan 8, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
c325a70
Hel 702/tableau comparaison (#599)
maeturki Nov 19, 2024
83e2834
Hel 719/retours recherche avancée (#600)
nbenyahiadev Nov 27, 2024
661cac1
hel-678 add link to new tab in table and fix controlled component
nbenyahiadev Nov 27, 2024
5c57050
Hel 663/affichage criteres filtres (#601)
maeturki Nov 28, 2024
94b9768
hel-663 fix space between buttons
nbenyahiadev Nov 28, 2024
6cb838a
Merge branch 'develop' into feat/recherche-avancee
maeturki Nov 28, 2024
d5bcb5a
Hel 663/affichage criteres filtres (#603)
maeturki Dec 5, 2024
bafc5d4
Hel 657/fix retours (#604)
schlaifa Dec 5, 2024
af9577d
Hel 657/fix retours (#605)
schlaifa Dec 5, 2024
570e704
(hel-657) correction tri zone geographique (#606)
maeturki Dec 6, 2024
81fd1d3
fix query recherche avancee (#607)
schlaifa Dec 6, 2024
05a601b
fix merge conflict
schlaifa Dec 6, 2024
9bb76c6
fix faute orthographe
schlaifa Dec 6, 2024
e1e209d
add enter event on terme recherche avancee
schlaifa Dec 6, 2024
caa0f75
Hel 702/tableau comparaison (#609)
maeturki Dec 12, 2024
8cc4c05
fix merge conflicts
schlaifa Dec 12, 2024
f66c51f
Hel 729/nom commune identique (#611)
schlaifa Dec 13, 2024
6972fdf
Merge branch 'develop' into feat/recherche-avancee
schlaifa Dec 13, 2024
1eaa58e
Hel 703/fix logique comparaison (#613)
schlaifa Dec 16, 2024
c206cfa
HEL-678 add favoris fields commune and department (#614)
schlaifa Dec 16, 2024
342beb6
add commune et departement au resultat comparaison
schlaifa Dec 17, 2024
e4ac23f
Hel 681/ajout etablissement (#615)
maeturki Dec 24, 2024
d23ac13
(hel-681) fix wording
schlaifa Dec 24, 2024
70ea36a
fix design bug
schlaifa Dec 24, 2024
39d5539
Hel 678/fix suppresion et pagination trie (#616)
schlaifa Dec 24, 2024
85b98c0
Hel 678/fix suppresion et pagination trie (#617)
schlaifa Dec 24, 2024
3f7b1cc
Hel 681/ajout etablissement (#618)
maeturki Dec 27, 2024
72f4b9c
Hel 681/ajout etablissement (#620)
maeturki Dec 27, 2024
8df542e
Hel 678/fix suppresion et pagination trie (#621)
schlaifa Dec 27, 2024
5c08355
Hel 681/ajout etablissement (#622)
maeturki Dec 30, 2024
a2d9bce
Hel 681/ajout etablissement (#623)
maeturki Dec 30, 2024
6e65af0
HEL-679 add export excel comparaison (#624)
nbenyahiadev Dec 30, 2024
e54ecbd
HEL-679 correct typo in column excel
nbenyahiadev Dec 30, 2024
496deb9
Hel 681/ajout etablissement (#625)
maeturki Dec 30, 2024
d358b3b
Hel 678/fix suppresion et pagination trie (#626)
schlaifa Dec 30, 2024
aa42838
Merge branch 'develop' into feat/recherche-avancee
schlaifa Dec 30, 2024
fc1c329
Hel 681/ajout etablissement (#628)
maeturki Dec 31, 2024
4d8d3ea
HEL-679 fix 0% in excel numbers
nbenyahiadev Jan 2, 2025
8678207
Merge branch 'feat/recherche-avancee' of https://github.com/DNUM-Soci…
nbenyahiadev Jan 2, 2025
b75a0aa
Fix average bug (#629)
schlaifa Jan 2, 2025
df2cf2d
Hel 729/fix filtre zg (#630)
schlaifa Jan 2, 2025
2c94f2d
Hel 681/ajout etablissement (#631)
maeturki Jan 3, 2025
2894ec3
reinitialiser le terme apres comparaison
schlaifa Jan 8, 2025
b26ac08
fix merge conflicts
schlaifa Jan 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -189,4 +189,4 @@
"node": "16.16"
},
"packageManager": "yarn@3.2.4"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ export class TypeOrmComparaisonLoader implements ComparaisonLoader {
acceuilDeJourMoyenne: moyenne.acceuildejourmoyenne !== null ? this.transformInRate(moyenne.acceuildejourmoyenne, 1) : null,
hebergementPermanentMoyenne: moyenne.hebergementpermanentmoyenne !== null ? this.transformInRate(moyenne.hebergementpermanentmoyenne, 1) : null,
hebergementTemporaireMoyenne: moyenne.hebergementtemporairemoyenne !== null ? this.transformInRate(moyenne.hebergementtemporairemoyenne, 1) : null,
fileActivePersonnesAccompagnesMoyenne: moyenne.fileactivepersonnesaccompagnesmoyenne,
fileActivePersonnesAccompagnesMoyenne: moyenne.fileactivepersonnesaccompagnesmoyenne ? this.makeNumberArrondi(Number(moyenne.fileactivepersonnesaccompagnesmoyenne), 2) : null,
rotationPersonnelMoyenne: moyenne.rotationpersonnelmoyenne !== null ? this.transformInRate(moyenne.rotationpersonnelmoyenne, 1) : null,
absenteismeMoyenne: moyenne.absenteismemoyenne !== null ? this.transformInRate(moyenne.absenteismemoyenne, 1) : null,
prestationExterneMoyenne: moyenne.prestationexternemoyenne !== null ? this.transformInRate(moyenne.prestationexternemoyenne, 1) : null,
Expand All @@ -204,9 +204,10 @@ export class TypeOrmComparaisonLoader implements ComparaisonLoader {

if (numericValue !== null && !isNaN(numericValue)) {
// If numericValue is a valid number, return the rounded number
return Number(numericValue.toFixed(num));
if (num === 0) return Math.round(numericValue)
return Math.round(numericValue * (10 * num)) / (10 * num)
} else {
// If it's not a valid number, return null or handle as needed
// If it's not a valid number, return null
return null;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import { UtilisateurLoader } from "../../../métier/gateways/UtilisateurLoader";
import { sendEmail } from "../../../sendEmail";

export class TypeOrmUtilisateurLoader implements UtilisateurLoader {
constructor(private readonly orm: Promise<DataSource>) {}
constructor(private readonly orm: Promise<DataSource>) { }
async getUserByCode(code: string): Promise<UtilisateurModel | null> {
return await (await this.orm).getRepository(UtilisateurModel).findOne({ where: { code: code } });
}
Expand Down Expand Up @@ -259,6 +259,9 @@ export class TypeOrmUtilisateurLoader implements UtilisateurLoader {
orders = { nom: "ASC" };
}

// eslint-disable-next-line no-console
console.log('conditions', conditions);

const data = await utilisateurRepo.find({
// @ts-ignore
where: conditions,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ export class ÉtablissementTerritorialMédicoSocialViewModelTestBuilder {

public static activités: ÉtablissementTerritorialMédicoSocial["activités"] = [
{
année: 2019,
année: 2020,
duréeMoyenneSéjourAccompagnementPersonnesSorties: {
dateMiseÀJourSource: "2021-07-07",
value: 1013,
Expand Down Expand Up @@ -153,7 +153,7 @@ export class ÉtablissementTerritorialMédicoSocialViewModelTestBuilder {
},
},
{
année: 2020,
année: 2021,
duréeMoyenneSéjourAccompagnementPersonnesSorties: {
dateMiseÀJourSource: "2021-07-07",
value: 994,
Expand Down Expand Up @@ -185,7 +185,7 @@ export class ÉtablissementTerritorialMédicoSocialViewModelTestBuilder {
},
},
{
année: 2021,
année: 2022,
duréeMoyenneSéjourAccompagnementPersonnesSorties: {
dateMiseÀJourSource: "2021-07-07",
value: 990,
Expand Down Expand Up @@ -324,7 +324,7 @@ export class ÉtablissementTerritorialMédicoSocialViewModelTestBuilder {

public static budgetEtFinances: ÉtablissementTerritorialMédicoSocial["budgetEtFinances"] = [
{
année: 2019,
année: 2020,
cadreBudgétaire: CadreBudgétaire.ERRD,
chargesEtProduits: {
charges: null,
Expand Down Expand Up @@ -362,7 +362,7 @@ export class ÉtablissementTerritorialMédicoSocialViewModelTestBuilder {
},
},
{
année: 2020,
année: 2021,
cadreBudgétaire: CadreBudgétaire.ERRD,
chargesEtProduits: {
charges: null,
Expand Down Expand Up @@ -400,7 +400,7 @@ export class ÉtablissementTerritorialMédicoSocialViewModelTestBuilder {
},
},
{
année: 2021,
année: 2022,
cadreBudgétaire: CadreBudgétaire.ERRD,
chargesEtProduits: {
charges: null,
Expand Down
2 changes: 1 addition & 1 deletion src/frontend/ui/commun/StringFormater.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,6 @@ export namespace StringFormater {
}

export function transformInRate(number: number): number {
return Number((number * 100).toFixed(1));
return Math.round((number * 100) * 10) / 10;
}
}
18 changes: 13 additions & 5 deletions src/frontend/ui/comparaison/ComparaisonPage.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import Head from "next/head";
import { ReactChild, useEffect, useState } from "react";
import { ReactChild, useContext, useEffect, useState } from "react";

import { DatesMisAjourSources } from "../../../backend/métier/entities/ResultatDeComparaison";
import { ComparaisonContext } from "../commun/contexts/ComparaisonContext";
import { useDependencies } from "../commun/contexts/useDependencies";
import { InfoBulle } from "../commun/InfoBulle/InfoBulle";
import { StringFormater } from "../commun/StringFormater";
Expand All @@ -20,6 +21,8 @@ interface ComparaisonPageProps {
}

export const ComparaisonPage = ({ listeAnnees, datesMisAjour }: ComparaisonPageProps) => {
const comparaisonContext = useContext(ComparaisonContext);

const [selectedRows, setSelectedRows] = useState<SelectedRows>([]);
const { wording } = useDependencies();
const [annéeEnCours, setAnnéeEnCours] = useState(listeAnnees[listeAnnees.length - 1]);
Expand Down Expand Up @@ -71,9 +74,9 @@ export const ComparaisonPage = ({ listeAnnees, datesMisAjour }: ComparaisonPageP
},
{ label: "Réalisation de l'activité", key: "realisationActivite", info: true, sort: true, orderBy: "taux_realisation_activite" },
{ label: "Activité personnes accompagnées", key: "fileActivePersonnesAccompagnes", info: true, sort: true, orderBy: "file_active_personnes_accompagnees" },
{ label: "HP", key: "hebergementPermanent", info: true, sort: true, orderBy: "taux_occupation_en_hebergement_permanent" },
{ label: "HT", key: "hebergementTemporaire", info: true, sort: true, orderBy: "taux_occupation_en_hebergement_temporaire" },
{ label: "AJ", key: "acceuilDeJour", info: true, sort: true, orderBy: "taux_occupation_accueil_de_jour" },
{ label: "TO HP", key: "hebergementPermanent", info: true, sort: true, orderBy: "taux_occupation_en_hebergement_permanent" },
{ label: "TO HT", key: "hebergementTemporaire", info: true, sort: true, orderBy: "taux_occupation_en_hebergement_temporaire" },
{ label: "TO AJ", key: "acceuilDeJour", info: true, sort: true, orderBy: "taux_occupation_accueil_de_jour" },
{ label: "Prestations externes vs directes", key: "prestationExterne", info: true, sort: true, orderBy: "taux_prestation_externes" },
{ label: "Rotation du personnel", key: "rotationPersonnel", info: true, sort: true, orderBy: "taux_rotation_personnel" },
{ label: "ETP vacants", key: "etpVacant", info: true, sort: true, orderBy: "taux_etp_vacants" },
Expand Down Expand Up @@ -116,6 +119,11 @@ export const ComparaisonPage = ({ listeAnnees, datesMisAjour }: ComparaisonPageP
setDeleteET(!deleteEt);
};

const onClickAjoutEtablissement = () => {
comparaisonContext?.setTerme("");
setIsShowAjoutEtab(true);
};

return (
<>
<main className="fr-container">
Expand All @@ -135,7 +143,7 @@ export const ComparaisonPage = ({ listeAnnees, datesMisAjour }: ComparaisonPageP
</div>
<div className={styles["ajout-etab-div"]}>
{!isShowAjoutEtab && (
<button className={`${styles["button-add-etab"]} fr-btn fr-btn--secondary`} onClick={() => setIsShowAjoutEtab(true)}>
<button className={`${styles["button-add-etab"]} fr-btn fr-btn--secondary`} onClick={onClickAjoutEtablissement}>
{wording.AJOUTER_DES_ETABLISSEMENTS}
</button>
)}
Expand Down
70 changes: 35 additions & 35 deletions src/frontend/ui/comparaison/ExportExcel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export function getCurrentDate() {
}

function getType(type: string | undefined) {
if(type === "Médico-social") return "Social et Médico-Social"
if (type === "Médico-social") return "Social et Médico-Social"
else return type;
}

Expand Down Expand Up @@ -53,51 +53,51 @@ function getFavoris(favoris: RechercheViewModel[] | undefined, numeroFiness: str

function transformData(data: any, favoris: RechercheViewModel[] | undefined) {
return data.resultat.map((etab: ResultatSMS) => [
etab.type || "-",
etab.type ?? "-",
getFavoris(favoris, etab.numéroFiness),
etab.socialReason || "-",
etab.numéroFiness || "-",
etab.capacite || "-",
etab.realisationActivite || "-",
etab.fileActivePersonnesAccompagnes || "-",
etab.hebergementPermanent || "-",
etab.hebergementTemporaire || "-",
etab.acceuilDeJour || "-",
etab.prestationExterne || "-",
etab.rotationPersonnel || "-",
etab.etpVacant || "-",
etab.absenteisme || "-",
etab.tauxCaf || "-",
etab.vetusteConstruction || "-",
etab.roulementNetGlobal || "-",
etab.resultatNetComptable || "-"
etab.socialReason ?? "-",
etab.numéroFiness ?? "-",
etab.capacite ?? "-",
etab.realisationActivite ?? "-",
etab.fileActivePersonnesAccompagnes ?? "-",
etab.hebergementPermanent ?? "-",
etab.hebergementTemporaire ?? "-",
etab.acceuilDeJour ?? "-",
etab.prestationExterne ?? "-",
etab.rotationPersonnel ?? "-",
etab.etpVacant ?? "-",
etab.absenteisme ?? "-",
etab.tauxCaf ?? "-",
etab.vetusteConstruction ?? "-",
etab.roulementNetGlobal ?? "-",
etab.resultatNetComptable ?? "-"
]);
}

function transformMoyenne(moyenne: MoyenneSMS ): (string | number)[] {
function transformMoyenne(moyenne: MoyenneSMS): (string | number)[] {
return [
"Moyenne",
"-",
"-",
"-",
moyenne.capaciteMoyenne || "-",
moyenne.realisationAcitiviteMoyenne || "-",
moyenne.fileActivePersonnesAccompagnesMoyenne || "-",
moyenne.hebergementPermanentMoyenne || "-",
moyenne.hebergementTemporaireMoyenne || "-",
moyenne.acceuilDeJourMoyenne || "-",
moyenne.prestationExterneMoyenne || "-",
moyenne.rotationPersonnelMoyenne || "-",
moyenne.etpVacantMoyenne || "-",
moyenne.absenteismeMoyenne || "-",
moyenne.tauxCafMoyenne || "-",
moyenne.vetusteConstructionMoyenne || "-",
moyenne.roulementNetGlobalMoyenne || "-",
moyenne.resultatNetComptableMoyenne || "-"
moyenne.capaciteMoyenne ?? "-",
moyenne.realisationAcitiviteMoyenne ?? "-",
moyenne.fileActivePersonnesAccompagnesMoyenne ?? "-",
moyenne.hebergementPermanentMoyenne ?? "-",
moyenne.hebergementTemporaireMoyenne ?? "-",
moyenne.acceuilDeJourMoyenne ?? "-",
moyenne.prestationExterneMoyenne ?? "-",
moyenne.rotationPersonnelMoyenne ?? "-",
moyenne.etpVacantMoyenne ?? "-",
moyenne.absenteismeMoyenne ?? "-",
moyenne.tauxCafMoyenne ?? "-",
moyenne.vetusteConstructionMoyenne ?? "-",
moyenne.roulementNetGlobalMoyenne ?? "-",
moyenne.resultatNetComptableMoyenne ?? "-"
]
}

function ExportToExcel(header: string[], headerType: (string|undefined)[], headers: string[], data: (string | Number)[][], fileName: string, moyenneResultat: (string | Number)[]) {
function ExportToExcel(header: string[], headerType: (string | undefined)[], headers: string[], data: (string | Number)[][], fileName: string, moyenneResultat: (string | Number)[]) {
const ws = XLSX.utils.aoa_to_sheet([header, headerType, [""], headers, moyenneResultat, ...data]);
const wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, "Comparaison");
Expand Down Expand Up @@ -138,7 +138,7 @@ async function generateAndExportExcel(
"Fond de roulement net global (en €)",
"Résultat net comptable (en €)"
];
ExportToExcel(headerYear, headerType, headers, dataTransormed, fileName, moyenneTransformed);
ExportToExcel(headerYear, headerType, headers, dataTransormed, fileName, moyenneTransformed);
}

const ExportExcel = ({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,8 +137,7 @@ export const AjoutEtablissements = ({ setIsShowAjoutEtab, setReloadTable }: Ajou
<button
aria-controls="fr-modal-Capacite-Filtre"
className="fr-btn fr-btn--primary"
//disabled={newEtablissements.length < 1}
disabled={true}
disabled={newEtablissements.length < 1}
id="ajouter-etablissement-botton"
onClick={onClickAjouter}
>
Expand Down
70 changes: 1 addition & 69 deletions src/frontend/ui/home/ComparaisonViewModel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ export class ComparaisonViewModel {

public get commune(): string {
return this.comparaison.commune;

}

public get departement(): string {
Expand All @@ -136,72 +137,3 @@ export class ComparaisonViewModel {
}
}

export class ComparaisonMoyenneViewModel {
constructor(private moyenne: MoyenneResultatComparaison) { }

// Accesseurs pour les autres propriétés
public get capaciteMoyenne(): number {
return this.moyenne.capaciteMoyenne;
}

public get realisationAcitiviteMoyenne(): number {
return transformInRate(this.moyenne.realisationAcitiviteMoyenne, 1);
}

public get acceuilDeJourMoyenne(): number {
return transformInRate(this.moyenne.acceuilDeJourMoyenne, 1);
}

public get hebergementPermanentMoyenne(): number {
return transformInRate(this.moyenne.hebergementPermanentMoyenne, 1);
}

public get hebergementTemporaireMoyenne(): number {
return transformInRate(this.moyenne.hebergementTemporaireMoyenne, 1);
}

public get fileActivePersonnesAccompagnesMoyenne(): number {
return transformInRate(this.moyenne.fileActivePersonnesAccompagnesMoyenne, 1);
}

public get rotationPersonnelMoyenne(): number {
return transformInRate(this.moyenne.rotationPersonnelMoyenne, 1);
}

public get absenteismeMoyenne(): number {
return transformInRate(this.moyenne.absenteismeMoyenne, 1);
}

public get prestationExterneMoyenne(): number {
return transformInRate(this.moyenne.prestationExterneMoyenne, 1);
}

public get etpVacantMoyenne(): number {
return transformInRate(this.moyenne.etpVacantMoyenne, 1);
}

public get tauxCafMoyenne(): number {
return transformInRate(this.moyenne.tauxCafMoyenne, 1);
}

public get vetusteConstructionMoyenne(): number {
return transformInRate(this.moyenne.vetusteConstructionMoyenne, 1);
}

public get roulementNetGlobalMoyenne(): number {
return makeNumberArrondi(this.moyenne.roulementNetGlobalMoyenne, 0);
}

public get resultatNetComptableMoyenne(): number {
return makeNumberArrondi(this.moyenne.resultatNetComptableMoyenne, 0);
}
}

const makeNumberArrondi = (value: number, num: number): number => {
return value ? Number(value.toFixed(num)) : 0;
};

const transformInRate = (number: number, chiffre: number): number => {
return makeNumberArrondi(number * 100, chiffre);
};

Loading
Loading