diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ToutesLesFichesAction/MenuFiltresToutesLesFichesAction.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ToutesLesFichesAction/MenuFiltresToutesLesFichesAction.tsx index 01a69cbc95..8c3f516553 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ToutesLesFichesAction/MenuFiltresToutesLesFichesAction.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ToutesLesFichesAction/MenuFiltresToutesLesFichesAction.tsx @@ -171,34 +171,34 @@ const MenuFiltresToutesLesFichesAction = ({ filters, setFilters }: Props) => { /> { - const { sansPilote, ...rest } = filters; + const { noPilote, ...rest } = filters; setFilters({ ...rest, - ...(!sansPilote ? { sansPilote: true } : {}), + ...(!noPilote ? { noPilote: true } : {}), }); }} /> { - const { sansServicePilote, ...rest } = filters; + const { noServicePilote, ...rest } = filters; setFilters({ ...rest, - ...(!sansServicePilote ? { sansServicePilote: true } : {}), + ...(!noServicePilote ? { noServicePilote: true } : {}), }); }} /> { - const { sansStatut, ...rest } = filters; + const { noStatut, ...rest } = filters; setFilters({ ...rest, - ...(!sansStatut ? { sansStatut: true } : {}), + ...(!noStatut ? { noStatut: true } : {}), }); }} /> diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ToutesLesFichesAction/ToutesLesFichesAction.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ToutesLesFichesAction/ToutesLesFichesAction.tsx index dd0c438404..b782b37a71 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ToutesLesFichesAction/ToutesLesFichesAction.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ToutesLesFichesAction/ToutesLesFichesAction.tsx @@ -5,7 +5,7 @@ import MenuFiltresToutesLesFichesAction from '@/app/app/pages/collectivite/Plans import { makeCollectiviteToutesLesFichesUrl } from '@/app/app/paths'; import { useSearchParams } from '@/app/core-logic/hooks/query'; import { useCurrentCollectivite } from '@/app/core-logic/hooks/useCurrentCollectivite'; -import { Button, ButtonMenu } from '@/ui'; +import { Button, ButtonMenu, useEventTracker } from '@/ui'; import { OpenState } from '@/ui/utils/types'; import { useFicheResumesFetch } from '../FicheAction/data/useFicheResumesFetch'; @@ -72,9 +72,9 @@ export const nameToparams: Record< ameliorationContinue: 'ac', page: 'p', sort: 'sort', - sansPilote: 'ssp', - sansServicePilote: 'sssp', - sansStatut: 'sss', + noPilote: 'ssp', + noServicePilote: 'sssp', + noStatut: 'sss', }; /** Page de listing de toutes les fiches actions de la collectivité */ @@ -98,6 +98,7 @@ const ToutesLesFichesAction = () => { const filters = convertParamsToFilters(filterParams); const { mutate: createFicheAction } = useCreateFicheAction(); + const tracker = useEventTracker('app/toutes-les-fiches-action'); return (
@@ -125,7 +126,13 @@ const ToutesLesFichesAction = () => { > setFilterParams(filters)} + setFilters={(filters) => { + setFilterParams(filters); + tracker('filtres', { + collectivite_id: collectivite?.collectivite_id!, + filtreValues: filters, + }); + }} /> )} diff --git a/app.territoiresentransitions.react/src/ui/shared/filters/filter-badges/use-filters-to-badges.ts b/app.territoiresentransitions.react/src/ui/shared/filters/filter-badges/use-filters-to-badges.ts index 767a2b851d..eac8ab763c 100644 --- a/app.territoiresentransitions.react/src/ui/shared/filters/filter-badges/use-filters-to-badges.ts +++ b/app.territoiresentransitions.react/src/ui/shared/filters/filter-badges/use-filters-to-badges.ts @@ -173,11 +173,11 @@ export const useFiltersToBadges = ({ filters, customValues }: Args) => { badgeValues.push(`Date de début : ${mergedFilters[key]}`); } else if (key === 'dateFin') { badgeValues.push(`Date de fin prévisionnelle : ${mergedFilters[key]}`); - } else if (key === 'sansStatut') { + } else if (key === 'noStatut') { mergedFilters[key] && badgeValues.push('Sans statut'); - } else if (key === 'sansPilote') { + } else if (key === 'noPilote') { mergedFilters[key] && badgeValues.push('Sans pilote'); - } else if (key === 'sansServicePilote') { + } else if (key === 'noServicePilote') { mergedFilters[key] && badgeValues.push('Sans direction ou service pilote'); } diff --git a/packages/api/src/plan-actions/fiche-resumes.list/data-access/fiche-resumes.fetch.ts b/packages/api/src/plan-actions/fiche-resumes.list/data-access/fiche-resumes.fetch.ts index ff7b4eefaa..87b9773891 100644 --- a/packages/api/src/plan-actions/fiche-resumes.list/data-access/fiche-resumes.fetch.ts +++ b/packages/api/src/plan-actions/fiche-resumes.list/data-access/fiche-resumes.fetch.ts @@ -235,15 +235,15 @@ export async function ficheResumesFetch({ query.is('restreint', true); } - if (filtre.sansPilote) { + if (filtre.noPilote) { query.is('pilotes', null); } - if (filtre.sansServicePilote) { + if (filtre.noServicePilote) { query.is('services', null); } - if (filtre.sansStatut) { + if (filtre.noStatut) { query.is('statut', null); } diff --git a/packages/api/src/plan-actions/fiche-resumes.list/domain/fetch-options.schema.ts b/packages/api/src/plan-actions/fiche-resumes.list/domain/fetch-options.schema.ts index 6943da1acf..057c84e57d 100644 --- a/packages/api/src/plan-actions/fiche-resumes.list/domain/fetch-options.schema.ts +++ b/packages/api/src/plan-actions/fiche-resumes.list/domain/fetch-options.schema.ts @@ -21,9 +21,9 @@ export const filtreSpecifiqueSchema = z.object({ budgetPrevisionnel: z.coerce.boolean().default(false).optional(), restreint: z.coerce.boolean().default(false).optional(), hasIndicateurLies: z.coerce.boolean().default(false).optional(), - sansPilote: z.coerce.boolean().default(false).optional(), - sansServicePilote: z.coerce.boolean().default(false).optional(), - sansStatut: z.coerce.boolean().default(false).optional(), + noPilote: z.coerce.boolean().default(false).optional(), + noServicePilote: z.coerce.boolean().default(false).optional(), + noStatut: z.coerce.boolean().default(false).optional(), dateDebut: z.string().optional(), dateFin: z.string().optional(), ameliorationContinue: z.coerce.boolean().default(false).optional(), diff --git a/packages/ui/src/components/tracking/trackingPlan.ts b/packages/ui/src/components/tracking/trackingPlan.ts index 1801eac41f..8d5eb3787a 100644 --- a/packages/ui/src/components/tracking/trackingPlan.ts +++ b/packages/ui/src/components/tracking/trackingPlan.ts @@ -76,6 +76,15 @@ type IndicateursFiltres = { hasOpenData?: boolean; }; +type FichesActionFiltres = { + budgetPrevisionnel?: boolean; + restreint?: boolean; + hasIndicateurLies?: boolean; + noPilote?: boolean; + noServicePilote?: boolean; + noStatut?: boolean; +}; + type EventsGraphReferentiel = { zoom_graph: { referentiel: string; @@ -244,6 +253,17 @@ export interface TrackingPlan extends Record { }; }; + /** Page toutes les fiches action */ + 'app/toutes-les-fiches-action': { + properties: { collectivite_id: number }; + onglets: never; + events: { + filtres: { + filtreValues: FichesActionFiltres; + }; + }; + }; + /** Actions groupées sur les fiches actions */ 'app/actions-groupees-fiches-action': { properties: { collectivite_id: number };