From 2bffc3036b60b9ef7903b5d809fbc8e4e20b8834 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucas=20D=C3=A9tr=C3=A9?= Date: Wed, 18 Dec 2024 14:03:19 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20probl=C3=A8me=20sur=20le=20compteur=20d'?= =?UTF-8?q?=C3=A9tablissements=20dans=20les=20panoramas=20(#505)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: problème sur le compteur d'établissements dans les panoramas * fix: undefined values line chart taux de pression/demande * fix: sortie des fonctions hors du render --- .../getFormationsDepartementBase.dep.ts | 8 +- .../getFormationsRegionBase.dep.ts | 7 +- .../getDomaineDeFormationIndicateurs.test.ts | 2 - .../dashboard/attractivite/Capacite.tsx | 73 ++++++----- .../dashboard/attractivite/Effectifs.tsx | 44 ++++--- .../dashboard/attractivite/PremiersVoeux.tsx | 64 ++++++---- .../dashboard/attractivite/TauxPression.tsx | 120 ++++++++++-------- .../attractivite/TauxRemplissage.tsx | 70 +++++----- .../devenir/TauxDevenirFavorable.tsx | 45 ++++--- .../dashboard/devenir/TauxEmploi.tsx | 45 ++++--- .../dashboard/devenir/TauxPoursuiteEtudes.tsx | 45 ++++--- 11 files changed, 285 insertions(+), 238 deletions(-) diff --git a/server/src/modules/data/usecases/getDataForPanoramaDepartement/dependencies/getFormationsDepartementBase.dep.ts b/server/src/modules/data/usecases/getDataForPanoramaDepartement/dependencies/getFormationsDepartementBase.dep.ts index acc2a4dda..3cf4cbce1 100644 --- a/server/src/modules/data/usecases/getDataForPanoramaDepartement/dependencies/getFormationsDepartementBase.dep.ts +++ b/server/src/modules/data/usecases/getDataForPanoramaDepartement/dependencies/getFormationsDepartementBase.dep.ts @@ -35,13 +35,9 @@ export const getFormationsDepartementBase = ({ .on("indicateurEntree.rentreeScolaire", "=", rentreeScolaire) ) .leftJoin("etablissement", "etablissement.uai", "formationEtablissement.uai") - .leftJoin("indicateurEntree as iep", (join) => - join - .onRef("formationEtablissement.id", "=", "iep.formationEtablissementId") - .on("iep.rentreeScolaire", "=", getRentreeScolairePrecedente(rentreeScolaire)) - ) + .leftJoin("indicateurEntree as iep", "formationEtablissement.id", "iep.formationEtablissementId") + .where("iep.rentreeScolaire", "=", getRentreeScolairePrecedente(rentreeScolaire)) .where((eb) => notHistoriqueUnlessCoExistant(eb, rentreeScolaire)) - .where(notAnneeCommune) .where("etablissement.codeDepartement", "=", codeDepartement) .$call((q) => { diff --git a/server/src/modules/data/usecases/getDataForPanoramaRegion/dependencies/getFormationsRegionBase.dep.ts b/server/src/modules/data/usecases/getDataForPanoramaRegion/dependencies/getFormationsRegionBase.dep.ts index 6bc321dde..e9ea41fac 100644 --- a/server/src/modules/data/usecases/getDataForPanoramaRegion/dependencies/getFormationsRegionBase.dep.ts +++ b/server/src/modules/data/usecases/getDataForPanoramaRegion/dependencies/getFormationsRegionBase.dep.ts @@ -35,11 +35,8 @@ export const getFormationsRegionBase = ({ .on("indicateurEntree.rentreeScolaire", "=", rentreeScolaire) ) .leftJoin("etablissement", "etablissement.uai", "formationEtablissement.uai") - .leftJoin("indicateurEntree as iep", (join) => - join - .onRef("formationEtablissement.id", "=", "iep.formationEtablissementId") - .on("iep.rentreeScolaire", "=", getRentreeScolairePrecedente(rentreeScolaire)) - ) + .leftJoin("indicateurEntree as iep", "formationEtablissement.id", "iep.formationEtablissementId") + .where("iep.rentreeScolaire", "=", getRentreeScolairePrecedente(rentreeScolaire)) .where((eb) => notHistoriqueUnlessCoExistant(eb, rentreeScolaire)) .where(notAnneeCommune) .where("etablissement.codeRegion", "=", codeRegion) diff --git a/server/src/modules/data/usecases/getFormationIndicateurs/__tests__/getDomaineDeFormationIndicateurs.test.ts b/server/src/modules/data/usecases/getFormationIndicateurs/__tests__/getDomaineDeFormationIndicateurs.test.ts index 199d65bf0..c70cf09cd 100644 --- a/server/src/modules/data/usecases/getFormationIndicateurs/__tests__/getDomaineDeFormationIndicateurs.test.ts +++ b/server/src/modules/data/usecases/getFormationIndicateurs/__tests__/getDomaineDeFormationIndicateurs.test.ts @@ -364,8 +364,6 @@ describe("GET /api/formation/:cfd/indicators", () => { const result = await response.json(); - console.log(result.tauxPressions); - const tauxPressionFound = result.tauxPressions.find( (tp) => tp.rentreeScolaire === rs && tp.scope === scope && tp.value === tauxPression ); diff --git a/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/attractivite/Capacite.tsx b/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/attractivite/Capacite.tsx index 3bcc7ded6..06de833b7 100644 --- a/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/attractivite/Capacite.tsx +++ b/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/attractivite/Capacite.tsx @@ -7,45 +7,52 @@ import { CounterChart } from "@/app/(wrapped)/panorama/etablissement/components/ import { DashboardCard } from "@/app/(wrapped)/panorama/etablissement/components/DashboardCard"; import { TooltipIcon } from "@/components/TooltipIcon"; -export const Capacite = ({ +const getCompareData = ({ capacite, capaciteAnneePrecedente, }: { capacite?: number; capaciteAnneePrecedente?: number; }) => { - const { openGlossaire } = useGlossaireContext(); - const getCompareData = () => { - if (!capacite || !capaciteAnneePrecedente) return ""; - if (capacite > capaciteAnneePrecedente) { - return ( - - - up - - {`+${capacite - capaciteAnneePrecedente}`} - - - - ); - } else if (capacite < capaciteAnneePrecedente) { - return ( - - - down - - {`${capacite - capaciteAnneePrecedente}`} - - - - ); - } + if (!capacite || !capaciteAnneePrecedente) return ""; + if (capacite > capaciteAnneePrecedente) { return ( - {`+0`} + + up + + {`+${capacite - capaciteAnneePrecedente}`} + + ); - }; + } else if (capacite < capaciteAnneePrecedente) { + return ( + + + down + + {`${capacite - capaciteAnneePrecedente}`} + + + + ); + } + return ( + + {`+0`} + + ); +}; + +export const Capacite = ({ + capacite, + capaciteAnneePrecedente, +}: { + capacite?: number; + capaciteAnneePrecedente?: number; +}) => { + const { openGlossaire } = useGlossaireContext(); return ( } > - + ); }; diff --git a/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/attractivite/Effectifs.tsx b/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/attractivite/Effectifs.tsx index 414b06d2f..12276ad45 100644 --- a/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/attractivite/Effectifs.tsx +++ b/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/attractivite/Effectifs.tsx @@ -5,29 +5,31 @@ import { CounterChart } from "@/app/(wrapped)/panorama/etablissement/components/ import { DashboardCard } from "@/app/(wrapped)/panorama/etablissement/components/DashboardCard"; import { TooltipIcon } from "@/components/TooltipIcon"; -export const Effectifs = ({ effectifEntree, capacite }: { effectifEntree?: number; capacite?: number }) => { - const { openGlossaire } = useGlossaireContext(); - const getCompareData = () => { - if (!effectifEntree || !capacite) return ""; - if (capacite > effectifEntree) { - return ( - - {`${capacite - effectifEntree} pl. vacante(s)`} - - ); - } else if (capacite < effectifEntree) { - return ( - - {`${effectifEntree - capacite} pl. en surnombre`} - - ); - } +const getCompareData = ({ effectifEntree, capacite }: { effectifEntree?: number; capacite?: number }) => { + if (!effectifEntree || !capacite) return ""; + if (capacite > effectifEntree) { + return ( + + {`${capacite - effectifEntree} pl. vacante(s)`} + + ); + } else if (capacite < effectifEntree) { return ( - - 0 pl. vacante + + {`${effectifEntree - capacite} pl. en surnombre`} ); - }; + } + return ( + + 0 pl. vacante + + ); +}; + +export const Effectifs = ({ effectifEntree, capacite }: { effectifEntree?: number; capacite?: number }) => { + const { openGlossaire } = useGlossaireContext(); + return ( } > - + ); }; diff --git a/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/attractivite/PremiersVoeux.tsx b/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/attractivite/PremiersVoeux.tsx index 8bde4e6b5..9457b2702 100644 --- a/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/attractivite/PremiersVoeux.tsx +++ b/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/attractivite/PremiersVoeux.tsx @@ -7,44 +7,49 @@ import { DashboardCard } from "@/app/(wrapped)/panorama/etablissement/components import { GlossaireShortcut } from "@/components/GlossaireShortcut"; const CODE_NIVEAU_DIPLOME_BTS = "320"; - -export const PremiersVoeux = ({ - codeNiveauDiplome, +const getCompareData = ({ premiersVoeux, premiersVoeuxAnneePrecedente, }: { - codeNiveauDiplome?: string; premiersVoeux?: number; premiersVoeuxAnneePrecedente?: number; }) => { - const getCompareData = () => { - if (!premiersVoeux || !premiersVoeuxAnneePrecedente) return ""; - if (premiersVoeux > premiersVoeuxAnneePrecedente) { - return ( - - - up - {`+${premiersVoeux - premiersVoeuxAnneePrecedente}`} - - - ); - } else if (premiersVoeux < premiersVoeuxAnneePrecedente) { - return ( - - - down - {`${premiersVoeux - premiersVoeuxAnneePrecedente}`} - - - ); - } + if (!premiersVoeux || !premiersVoeuxAnneePrecedente) return ""; + if (premiersVoeux > premiersVoeuxAnneePrecedente) { + return ( + + + up + {`+${premiersVoeux - premiersVoeuxAnneePrecedente}`} + + + ); + } else if (premiersVoeux < premiersVoeuxAnneePrecedente) { return ( - +0pts + + down + {`${premiersVoeux - premiersVoeuxAnneePrecedente}`} + ); - }; + } + return ( + + +0pts + + ); +}; +export const PremiersVoeux = ({ + codeNiveauDiplome, + premiersVoeux, + premiersVoeuxAnneePrecedente, +}: { + codeNiveauDiplome?: string; + premiersVoeux?: number; + premiersVoeuxAnneePrecedente?: number; +}) => { return ( } > - + ); }; diff --git a/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/attractivite/TauxPression.tsx b/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/attractivite/TauxPression.tsx index c404485c8..1bcb8ee1e 100644 --- a/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/attractivite/TauxPression.tsx +++ b/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/attractivite/TauxPression.tsx @@ -9,69 +9,77 @@ import { GlossaireShortcut } from "@/components/GlossaireShortcut"; const CODE_NIVEAU_DIPLOME_BTS = "320"; -export const TauxPression = ({ - codeNiveauDiplome, +const checkDataAvailability = ({ chiffresEntreeOffre }: { chiffresEntreeOffre?: ChiffresEntreeOffre }): boolean => { + if (chiffresEntreeOffre) { + return ( + Object.values(chiffresEntreeOffre).findIndex( + (value) => + value.tauxPression && + value.tauxPressionNational && + value.tauxPressionRegional && + value.tauxPressionDepartemental + ) !== -1 + ); + } + return false; +}; + +const getData = ({ chiffresEntreeOffre, }: { - codeNiveauDiplome?: string; chiffresEntreeOffre?: ChiffresEntreeOffre; -}) => { - const checkDataAvailability = (): boolean => { - if (chiffresEntreeOffre) { - return ( - Object.values(chiffresEntreeOffre).findIndex( - (value) => - value.tauxPression && - value.tauxPressionNational && - value.tauxPressionRegional && - value.tauxPressionDepartemental - ) !== -1 +}): { + établissement: Array; + départemental: Array; + régional: Array; + national: Array; +} => { + if (chiffresEntreeOffre) { + // Conserve uniquement les entrées où au moins une valeur est définie + const filteredData = Object.values(chiffresEntreeOffre).filter((value) => { + return !( + value.tauxPression === undefined && + value.tauxPressionDepartemental === undefined && + value.tauxPressionRegional === undefined && + value.tauxPressionNational === undefined ); - } - return false; - }; + }); - const getData = (): { - établissement: Array; - départemental: Array; - régional: Array; - national: Array; - } => { - if (chiffresEntreeOffre) { - return { - établissement: Object.values(chiffresEntreeOffre).map((value) => formatAbsoluteOrUndefined(value.tauxPression)), - départemental: Object.values(chiffresEntreeOffre).map((value) => - formatAbsoluteOrUndefined(value.tauxPressionDepartemental) - ), - régional: Object.values(chiffresEntreeOffre).map((value) => - formatAbsoluteOrUndefined(value.tauxPressionRegional) - ), - national: Object.values(chiffresEntreeOffre).map((value) => - formatAbsoluteOrUndefined(value.tauxPressionNational) - ), - }; - } return { - établissement: [], - départemental: [], - régional: [], - national: [], + établissement: filteredData.map((value) => formatAbsoluteOrUndefined(value.tauxPression)), + départemental: filteredData.map((value) => formatAbsoluteOrUndefined(value.tauxPressionDepartemental)), + régional: filteredData.map((value) => formatAbsoluteOrUndefined(value.tauxPressionRegional)), + national: filteredData.map((value) => formatAbsoluteOrUndefined(value.tauxPressionNational)), }; + } + return { + établissement: [], + départemental: [], + régional: [], + national: [], }; +}; - const getCategories = (): string[] => { - if (chiffresEntreeOffre) { - return Object.keys(chiffresEntreeOffre).filter( - (key) => - chiffresEntreeOffre[key].tauxPression || - chiffresEntreeOffre[key].tauxPressionNational || - chiffresEntreeOffre[key].tauxPressionRegional || - chiffresEntreeOffre[key].tauxPressionDepartemental - ); - } - return []; - }; +const getCategories = ({ chiffresEntreeOffre }: { chiffresEntreeOffre?: ChiffresEntreeOffre }): string[] => { + if (chiffresEntreeOffre) { + return Object.keys(chiffresEntreeOffre).filter( + (key) => + chiffresEntreeOffre[key].tauxPression || + chiffresEntreeOffre[key].tauxPressionNational || + chiffresEntreeOffre[key].tauxPressionRegional || + chiffresEntreeOffre[key].tauxPressionDepartemental + ); + } + return []; +}; +export const TauxPression = ({ + codeNiveauDiplome, + chiffresEntreeOffre, +}: { + codeNiveauDiplome?: string; + chiffresEntreeOffre?: ChiffresEntreeOffre; +}) => { const blue = useToken("colors", "bluefrance.113"); const green = useToken("colors", "greenArchipel.557"); const orange = useToken("colors", "orangeTerreBattue.645"); @@ -112,11 +120,11 @@ export const TauxPression = ({ ) } > - {chiffresEntreeOffre && checkDataAvailability() ? ( + {chiffresEntreeOffre && checkDataAvailability({ chiffresEntreeOffre }) ? ( diff --git a/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/attractivite/TauxRemplissage.tsx b/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/attractivite/TauxRemplissage.tsx index e63708a94..23c0d329d 100644 --- a/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/attractivite/TauxRemplissage.tsx +++ b/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/attractivite/TauxRemplissage.tsx @@ -8,45 +8,52 @@ import { formatTaux } from "@/app/(wrapped)/panorama/etablissement/components/an import { DashboardCard } from "@/app/(wrapped)/panorama/etablissement/components/DashboardCard"; import { TooltipIcon } from "@/components/TooltipIcon"; -export const TauxRemplissage = ({ +const getCompareData = ({ tauxRemplissage, tauxRemplissageAnneePrecedente, }: { tauxRemplissage?: number; tauxRemplissageAnneePrecedente?: number; }) => { - const { openGlossaire } = useGlossaireContext(); - const getCompareData = () => { - if (!tauxRemplissage || !tauxRemplissageAnneePrecedente) return ""; - if (tauxRemplissage > tauxRemplissageAnneePrecedente) { - return ( - - - up - - {`+${formatTaux(tauxRemplissage - tauxRemplissageAnneePrecedente)}`} - - - - ); - } else if (tauxRemplissage < tauxRemplissageAnneePrecedente) { - return ( - - - down - - {`${formatTaux(tauxRemplissage - tauxRemplissageAnneePrecedente)}`} - - - - ); - } + if (!tauxRemplissage || !tauxRemplissageAnneePrecedente) return ""; + if (tauxRemplissage > tauxRemplissageAnneePrecedente) { return ( - +0 + + up + + {`+${formatTaux(tauxRemplissage - tauxRemplissageAnneePrecedente)}`} + + ); - }; + } else if (tauxRemplissage < tauxRemplissageAnneePrecedente) { + return ( + + + down + + {`${formatTaux(tauxRemplissage - tauxRemplissageAnneePrecedente)}`} + + + + ); + } + return ( + + +0 + + ); +}; + +export const TauxRemplissage = ({ + tauxRemplissage, + tauxRemplissageAnneePrecedente, +}: { + tauxRemplissage?: number; + tauxRemplissageAnneePrecedente?: number; +}) => { + const { openGlossaire } = useGlossaireContext(); return ( diff --git a/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/devenir/TauxDevenirFavorable.tsx b/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/devenir/TauxDevenirFavorable.tsx index 19896f183..9c56c6813 100644 --- a/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/devenir/TauxDevenirFavorable.tsx +++ b/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/devenir/TauxDevenirFavorable.tsx @@ -11,26 +11,31 @@ import type { ChiffresIJOffre } from "@/app/(wrapped)/panorama/etablissement/com import { DashboardCard } from "@/app/(wrapped)/panorama/etablissement/components/DashboardCard"; import { TooltipIcon } from "@/components/TooltipIcon"; +const checkDataAvailability = ({ chiffresIJOffre }: { chiffresIJOffre?: ChiffresIJOffre }): boolean => { + if (chiffresIJOffre) { + return Object.values(chiffresIJOffre).findIndex((value) => value.tauxDevenirFavorable) !== -1; + } + return false; +}; + +const getVerticalBarChartData = ({ + chiffresIJOffre, +}: { + chiffresIJOffre?: ChiffresIJOffre; +}): { label: string; value: number }[] => { + if (chiffresIJOffre) { + return Object.keys(chiffresIJOffre) + .filter((millesime) => chiffresIJOffre[millesime].tauxDevenirFavorable) + .map((millesime) => ({ + label: formatMillesime(millesime), + value: formatTaux(chiffresIJOffre[millesime].tauxDevenirFavorable), + })); + } + return []; +}; + export const TauxDevenirFavorable = ({ chiffresIJOffre }: { chiffresIJOffre?: ChiffresIJOffre }) => { const { openGlossaire } = useGlossaireContext(); - const checkDataAvailability = (): boolean => { - if (chiffresIJOffre) { - return Object.values(chiffresIJOffre).findIndex((value) => value.tauxDevenirFavorable) !== -1; - } - return false; - }; - - const getVerticalBarChartData = (): { label: string; value: number }[] => { - if (chiffresIJOffre) { - return Object.keys(chiffresIJOffre) - .filter((millesime) => chiffresIJOffre[millesime].tauxDevenirFavorable) - .map((millesime) => ({ - label: formatMillesime(millesime), - value: formatTaux(chiffresIJOffre[millesime].tauxDevenirFavorable), - })); - } - return []; - }; return ( } > - {checkDataAvailability() ? ( - + {checkDataAvailability({ chiffresIJOffre }) ? ( + ) : ( )} diff --git a/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/devenir/TauxEmploi.tsx b/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/devenir/TauxEmploi.tsx index 50b328b09..1c81e4e92 100644 --- a/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/devenir/TauxEmploi.tsx +++ b/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/devenir/TauxEmploi.tsx @@ -11,26 +11,31 @@ import type { ChiffresIJOffre } from "@/app/(wrapped)/panorama/etablissement/com import { DashboardCard } from "@/app/(wrapped)/panorama/etablissement/components/DashboardCard"; import { TooltipIcon } from "@/components/TooltipIcon"; +const checkDataAvailability = ({ chiffresIJOffre }: { chiffresIJOffre?: ChiffresIJOffre }): boolean => { + if (chiffresIJOffre) { + return Object.values(chiffresIJOffre).findIndex((value) => value.tauxInsertion) !== -1; + } + return false; +}; + +const getVerticalBarChartData = ({ + chiffresIJOffre, +}: { + chiffresIJOffre?: ChiffresIJOffre; +}): { label: string; value: number }[] => { + if (chiffresIJOffre) { + return Object.keys(chiffresIJOffre) + .filter((millesime) => chiffresIJOffre[millesime].tauxInsertion) + .map((millesime) => ({ + label: formatMillesime(millesime), + value: formatTaux(chiffresIJOffre[millesime].tauxInsertion), + })); + } + return []; +}; + export const TauxEmploi = ({ chiffresIJOffre }: { chiffresIJOffre?: ChiffresIJOffre }) => { const { openGlossaire } = useGlossaireContext(); - const checkDataAvailability = (): boolean => { - if (chiffresIJOffre) { - return Object.values(chiffresIJOffre).findIndex((value) => value.tauxInsertion) !== -1; - } - return false; - }; - - const getVerticalBarChartData = (): { label: string; value: number }[] => { - if (chiffresIJOffre) { - return Object.keys(chiffresIJOffre) - .filter((millesime) => chiffresIJOffre[millesime].tauxInsertion) - .map((millesime) => ({ - label: formatMillesime(millesime), - value: formatTaux(chiffresIJOffre[millesime].tauxInsertion), - })); - } - return []; - }; return ( } > - {checkDataAvailability() ? ( - + {checkDataAvailability({ chiffresIJOffre }) ? ( + ) : ( )} diff --git a/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/devenir/TauxPoursuiteEtudes.tsx b/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/devenir/TauxPoursuiteEtudes.tsx index 3efb06547..a6c3196dc 100644 --- a/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/devenir/TauxPoursuiteEtudes.tsx +++ b/ui/app/(wrapped)/panorama/etablissement/components/analyse-detaillee/dashboard/devenir/TauxPoursuiteEtudes.tsx @@ -11,26 +11,31 @@ import type { ChiffresIJOffre } from "@/app/(wrapped)/panorama/etablissement/com import { DashboardCard } from "@/app/(wrapped)/panorama/etablissement/components/DashboardCard"; import { TooltipIcon } from "@/components/TooltipIcon"; +const checkDataAvailability = ({ chiffresIJOffre }: { chiffresIJOffre?: ChiffresIJOffre }): boolean => { + if (chiffresIJOffre) { + return Object.values(chiffresIJOffre).findIndex((value) => value.tauxPoursuite) !== -1; + } + return false; +}; + +const getVerticalBarChartData = ({ + chiffresIJOffre, +}: { + chiffresIJOffre?: ChiffresIJOffre; +}): { label: string; value: number }[] => { + if (chiffresIJOffre) { + return Object.keys(chiffresIJOffre) + .filter((millesime) => chiffresIJOffre[millesime].tauxPoursuite) + .map((millesime) => ({ + label: formatMillesime(millesime), + value: formatTaux(chiffresIJOffre[millesime].tauxPoursuite), + })); + } + return []; +}; + export const TauxPoursuiteEtudes = ({ chiffresIJOffre }: { chiffresIJOffre?: ChiffresIJOffre }) => { const { openGlossaire } = useGlossaireContext(); - const checkDataAvailability = (): boolean => { - if (chiffresIJOffre) { - return Object.values(chiffresIJOffre).findIndex((value) => value.tauxPoursuite) !== -1; - } - return false; - }; - - const getVerticalBarChartData = (): { label: string; value: number }[] => { - if (chiffresIJOffre) { - return Object.keys(chiffresIJOffre) - .filter((millesime) => chiffresIJOffre[millesime].tauxPoursuite) - .map((millesime) => ({ - label: formatMillesime(millesime), - value: formatTaux(chiffresIJOffre[millesime].tauxPoursuite), - })); - } - return []; - }; return ( } > - {checkDataAvailability() ? ( - + {checkDataAvailability({ chiffresIJOffre }) ? ( + ) : ( )}