From 5f31abab8eab73364b42c343d899da3fb25fdcbf Mon Sep 17 00:00:00 2001 From: Samir BENFARES Date: Tue, 10 Oct 2023 17:20:13 +0200 Subject: [PATCH 1/4] feat(ui): ajout du filtre UAI (connu ou inconnu) --- .../organismes/OrganismesFilterPanel.tsx | 17 ++++++++ .../organismes/filters/FiltreOrganismeUai.tsx | 41 +++++++++++++++++++ .../organismes/models/organismes-filters.ts | 11 +++++ .../tabs/OrganismesACompleterPanelContent.tsx | 1 + .../tabs/OrganismesFiablesPanelContent.tsx | 1 + 5 files changed, 71 insertions(+) create mode 100644 ui/modules/organismes/filters/FiltreOrganismeUai.tsx diff --git a/ui/modules/organismes/OrganismesFilterPanel.tsx b/ui/modules/organismes/OrganismesFilterPanel.tsx index 4132ed5b0..7bc044721 100644 --- a/ui/modules/organismes/OrganismesFilterPanel.tsx +++ b/ui/modules/organismes/OrganismesFilterPanel.tsx @@ -16,6 +16,7 @@ import FiltreOrganismesEtat from "./filters/FiltreOrganismeEtat"; import FiltreOrganismesNature from "./filters/FiltreOrganismeNature"; import FiltreOrganismeRegions from "./filters/FiltreOrganismeRegions"; import FiltreOrganismeTransmission from "./filters/FiltreOrganismeTransmission"; +import FiltreOrganismeUai from "./filters/FiltreOrganismeUai"; import FiltreYesNo from "./filters/FiltreYesNo"; import { OrganismesFilters, @@ -25,6 +26,7 @@ import { } from "./models/organismes-filters"; export interface OrganismeFiltersListVisibilityProps { + showFilterUai?: boolean; showFilterNature?: boolean; showFilterTransmission?: boolean; showFilterQualiopi?: boolean; @@ -103,12 +105,27 @@ const OrganismesFilterPanel = (props: OrganismeFiltersListVisibilityProps) => { } }; + const isAllowedToShowFilterUAI = (type: OrganisationType) => { + switch (type) { + case "ADMINISTRATEUR": + return true; + + default: + return false; + } + }; + return ( FILTRER PAR + {/* FILTRE UAI */} + {props?.showFilterUai && isAllowedToShowFilterUAI(auth?.organisation?.type) && ( + updateState({ etatUAI })} /> + )} + {/* FILTRE DEPARTEMENT */} {props?.showFilterLocalisation && isAllowedToShowFilterDepartement(auth?.organisation?.type) && ( void; +} + +function FiltreOrganismeUai(props: FiltreOrganismeUaiProps) { + const [isOpen, setIsOpen] = useState(false); + const etatUAI = props.value; + + return ( +
+ + {isOpen && ( + setIsOpen(false)} width="auto" p="3w"> + item.toString())} + onChange={(value) => props.onChange(value.map((v: string) => (v === "true" ? true : false)))} + > + + + Connu + + + Inconnu + + + + + )} +
+ ); +} + +export default FiltreOrganismeUai; diff --git a/ui/modules/organismes/models/organismes-filters.ts b/ui/modules/organismes/models/organismes-filters.ts index 000bf1a9c..65506038d 100644 --- a/ui/modules/organismes/models/organismes-filters.ts +++ b/ui/modules/organismes/models/organismes-filters.ts @@ -10,6 +10,7 @@ export interface OrganismesFiltersQuery { ferme: string; regions?: string; departements?: string; + etatUAI: string; } export interface OrganismesFilters { @@ -20,6 +21,7 @@ export interface OrganismesFilters { ferme: boolean[]; regions: string[]; departements: string[]; + etatUAI: boolean[]; } export function parseOrganismesFiltersFromQuery(query: OrganismesFiltersQuery): OrganismesFilters { @@ -31,6 +33,7 @@ export function parseOrganismesFiltersFromQuery(query: OrganismesFiltersQuery): ferme: query.ferme?.split(",").map((item) => (item === "true" ? true : false)) ?? [], regions: query.regions?.split(",") ?? [], departements: query.departements?.split(",") ?? [], + etatUAI: query.etatUAI?.split(",").map((item) => (item === "true" ? true : false)) ?? [], }; } @@ -45,6 +48,7 @@ export function convertOrganismesFiltersToQuery( ferme: organismesFilters.ferme?.join(","), regions: organismesFilters.regions?.join(","), departements: organismesFilters.departements?.join(","), + etatUAI: organismesFilters.etatUAI?.join(","), }); } @@ -92,5 +96,12 @@ export function filterOrganismesArrayFromOrganismesFilters( if (organismesFilters.transmission?.[0] === false) return !item.last_transmission_date; }); + if (organismesFilters.etatUAI?.length && organismesFilters.etatUAI?.length > 0) { + filteredOrganismes = filteredOrganismes?.filter((item) => { + if (organismesFilters.etatUAI?.[0] === true) return item.uai; + if (organismesFilters.etatUAI?.[0] === false) return !item.uai; + }); + } + return filteredOrganismes; } diff --git a/ui/modules/organismes/tabs/OrganismesACompleterPanelContent.tsx b/ui/modules/organismes/tabs/OrganismesACompleterPanelContent.tsx index 02cd381c7..3ef2ef38c 100644 --- a/ui/modules/organismes/tabs/OrganismesACompleterPanelContent.tsx +++ b/ui/modules/organismes/tabs/OrganismesACompleterPanelContent.tsx @@ -66,6 +66,7 @@ function OrganismesACompleterPanelContent({ organismes }: { organismes: Organism showFilterTransmission showFilterLocalisation showFilterEtat + showFilterUai />
); diff --git a/ui/modules/organismes/tabs/OrganismesFiablesPanelContent.tsx b/ui/modules/organismes/tabs/OrganismesFiablesPanelContent.tsx index 830693018..86c897ab3 100644 --- a/ui/modules/organismes/tabs/OrganismesFiablesPanelContent.tsx +++ b/ui/modules/organismes/tabs/OrganismesFiablesPanelContent.tsx @@ -43,6 +43,7 @@ function OrganismesFiablesPanelContent({ organismes }: { organismes: OrganismeNo showFilterQualiopi showFilterPrepaApprentissage showFilterLocalisation + showFilterUai /> ); From 627f69f9a6ed28f9ff1b9708b2dd5ad7e8f752f8 Mon Sep 17 00:00:00 2001 From: Samir BENFARES Date: Tue, 10 Oct 2023 19:43:02 +0200 Subject: [PATCH 2/4] feat(ui): move uai filtre --- ui/modules/organismes/OrganismesFilterPanel.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ui/modules/organismes/OrganismesFilterPanel.tsx b/ui/modules/organismes/OrganismesFilterPanel.tsx index 7bc044721..275f7896c 100644 --- a/ui/modules/organismes/OrganismesFilterPanel.tsx +++ b/ui/modules/organismes/OrganismesFilterPanel.tsx @@ -121,11 +121,6 @@ const OrganismesFilterPanel = (props: OrganismeFiltersListVisibilityProps) => { FILTRER PAR - {/* FILTRE UAI */} - {props?.showFilterUai && isAllowedToShowFilterUAI(auth?.organisation?.type) && ( - updateState({ etatUAI })} /> - )} - {/* FILTRE DEPARTEMENT */} {props?.showFilterLocalisation && isAllowedToShowFilterDepartement(auth?.organisation?.type) && ( { updateState({ nature })} /> )} + {/* FILTRE UAI */} + {props?.showFilterUai && isAllowedToShowFilterUAI(auth?.organisation?.type) && ( + updateState({ etatUAI })} /> + )} + {/* FILTRE TRANSMISSION */} {props?.showFilterTransmission && ( Date: Tue, 10 Oct 2023 20:35:58 +0200 Subject: [PATCH 3/4] fix(ui): filter double check --- .../organismes/models/organismes-filters.ts | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/ui/modules/organismes/models/organismes-filters.ts b/ui/modules/organismes/models/organismes-filters.ts index 65506038d..c65c13337 100644 --- a/ui/modules/organismes/models/organismes-filters.ts +++ b/ui/modules/organismes/models/organismes-filters.ts @@ -90,18 +90,18 @@ export function filterOrganismesArrayFromOrganismesFilters( return organismesFilters.departements?.includes(item.adresse.departement); }); - if (organismesFilters.transmission?.length && organismesFilters.transmission?.length === 1) - filteredOrganismes = filteredOrganismes?.filter((item) => { - if (organismesFilters.transmission?.[0] === true) return item.last_transmission_date; - if (organismesFilters.transmission?.[0] === false) return !item.last_transmission_date; - }); + if (organismesFilters.transmission?.length && organismesFilters.transmission?.length > 0) + filteredOrganismes = filteredOrganismes?.filter( + (item) => + organismesFilters.transmission?.some( + (filter) => (!!filter && !!item.last_transmission_date) || (!filter && !item.last_transmission_date) + ) + ); - if (organismesFilters.etatUAI?.length && organismesFilters.etatUAI?.length > 0) { - filteredOrganismes = filteredOrganismes?.filter((item) => { - if (organismesFilters.etatUAI?.[0] === true) return item.uai; - if (organismesFilters.etatUAI?.[0] === false) return !item.uai; - }); - } + if (organismesFilters.etatUAI?.length && organismesFilters.etatUAI?.length > 0) + filteredOrganismes = filteredOrganismes?.filter( + (item) => organismesFilters.etatUAI?.some((filter) => (!!filter && !!item.uai) || (!filter && !item.uai)) + ); return filteredOrganismes; } From f27fe100ba19ab27602c0bcf9e11628b47dac5e9 Mon Sep 17 00:00:00 2001 From: Samir BENFARES Date: Tue, 10 Oct 2023 20:37:52 +0200 Subject: [PATCH 4/4] feat(ui): hide filter uai on organismes fiables --- ui/modules/organismes/tabs/OrganismesFiablesPanelContent.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/ui/modules/organismes/tabs/OrganismesFiablesPanelContent.tsx b/ui/modules/organismes/tabs/OrganismesFiablesPanelContent.tsx index 86c897ab3..830693018 100644 --- a/ui/modules/organismes/tabs/OrganismesFiablesPanelContent.tsx +++ b/ui/modules/organismes/tabs/OrganismesFiablesPanelContent.tsx @@ -43,7 +43,6 @@ function OrganismesFiablesPanelContent({ organismes }: { organismes: OrganismeNo showFilterQualiopi showFilterPrepaApprentissage showFilterLocalisation - showFilterUai /> );