From 252545da1a26715ff5444b011c12015fee9f2d7e Mon Sep 17 00:00:00 2001 From: Marc Rutkowski Date: Tue, 3 Dec 2024 15:25:47 +0100 Subject: [PATCH] Remplace la fonction de tracking de l'export xslx des indicateurs --- .../Indicateur/IndicateurPersonnalise.tsx | 28 +++++++-------- .../Indicateur/IndicateurPredefini.tsx | 36 +++++++++---------- .../Indicateur/useExportIndicateurs.ts | 26 +++++++++----- .../IndicateursCollectivite.tsx | 5 +-- .../TousLesIndicateurs/TousLesIndicateurs.tsx | 3 +- .../Indicateurs/lists/IndicateursListe.tsx | 12 +++++-- .../ModuleIndicateursPage.tsx | 12 +++---- .../src/components/tracking/trackingPlan.ts | 5 +++ 8 files changed, 74 insertions(+), 53 deletions(-) diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/IndicateurPersonnalise.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/IndicateurPersonnalise.tsx index af14a2b95c..a44a2960eb 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/IndicateurPersonnalise.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/IndicateurPersonnalise.tsx @@ -1,22 +1,21 @@ +import { Indicateurs } from '@tet/api'; +import { Field, Input, Modal, ModalFooterOKCancel } from '@tet/ui'; +import BadgeIndicateurPerso from 'app/pages/collectivite/Indicateurs/components/BadgeIndicateurPerso'; +import IndicateurDetailChart from 'app/pages/collectivite/Indicateurs/Indicateur/detail/IndicateurDetailChart'; +import { useCurrentCollectivite } from 'core-logic/hooks/useCurrentCollectivite'; import { useState } from 'react'; -import { Field, Modal, ModalFooterOKCancel } from '@tet/ui'; -import { BadgeACompleter } from 'ui/shared/Badge/BadgeACompleter'; -import TextareaControlled from 'ui/shared/form/TextareaControlled'; import ScrollTopButton from 'ui/buttons/ScrollTopButton'; import { ToolbarIconButton } from 'ui/buttons/ToolbarIconButton'; -import { useUpdateIndicateurDefinition } from './useUpdateIndicateurDefinition'; +import { BadgeACompleter } from 'ui/shared/Badge/BadgeACompleter'; +import TextareaControlled from 'ui/shared/form/TextareaControlled'; import { HeaderIndicateur } from './detail/HeaderIndicateur'; +import { IndicateurInfoLiees } from './detail/IndicateurInfoLiees'; import { IndicateurValuesTabs } from './detail/IndicateurValuesTabs'; import { FichesActionLiees } from './FichesActionLiees'; -import { useCurrentCollectivite } from 'core-logic/hooks/useCurrentCollectivite'; -import { IndicateurInfoLiees } from './detail/IndicateurInfoLiees'; +import { useExportIndicateurs } from './useExportIndicateurs'; import { useIndicateurDefinition } from './useIndicateurDefinition'; -import IndicateurDetailChart from 'app/pages/collectivite/Indicateurs/Indicateur/detail/IndicateurDetailChart'; import { useDeleteIndicateurPerso } from './useRemoveIndicateurPerso'; -import { useExportIndicateurs } from './useExportIndicateurs'; -import { Indicateurs } from '@tet/api'; -import { Input } from '@tet/ui'; -import BadgeIndicateurPerso from 'app/pages/collectivite/Indicateurs/components/BadgeIndicateurPerso'; +import { useUpdateIndicateurDefinition } from './useUpdateIndicateurDefinition'; /** Affiche le détail d'un indicateur personnalisé */ const IndicateurPersonnaliseBase = ({ @@ -28,9 +27,10 @@ const IndicateurPersonnaliseBase = ({ const { mutate: updateDefinition } = useUpdateIndicateurDefinition(); const collectivite = useCurrentCollectivite(); const isReadonly = !collectivite || collectivite?.readonly; - const { mutate: exportIndicateurs, isLoading } = useExportIndicateurs([ - definition, - ]); + const { mutate: exportIndicateurs, isLoading } = useExportIndicateurs( + 'app/indicateurs/perso', + [definition] + ); // génère les fonctions d'enregistrement des modifications const handleUpdate = ( diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/IndicateurPredefini.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/IndicateurPredefini.tsx index 3584618032..0bcd8c4aa9 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/IndicateurPredefini.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/IndicateurPredefini.tsx @@ -1,26 +1,25 @@ -import ScrollTopButton from 'ui/buttons/ScrollTopButton'; -import { HeaderIndicateur } from './detail/HeaderIndicateur'; -import { IndicateurCompose } from './detail/IndicateurCompose'; -import { IndicateurSidePanelToolbar } from './IndicateurSidePanelToolbar'; -import { TIndicateurDefinition } from '../types'; -import { useIndicateurDefinition } from './useIndicateurDefinition'; +import BadgeOpenData from '@tet/app/pages/collectivite/Indicateurs/components/BadgeOpenData'; import { Badge, Field, TrackPageView } from '@tet/ui'; -import { useCollectiviteId } from 'core-logic/hooks/params'; -import { useIndicateurImportSources } from 'app/pages/collectivite/Indicateurs/Indicateur/detail/useImportSources'; +import { referentielToName } from 'app/labels'; import { ImportSourcesSelector } from 'app/pages/collectivite/Indicateurs/Indicateur/detail/ImportSourcesSelector'; import IndicateurDetailChart from 'app/pages/collectivite/Indicateurs/Indicateur/detail/IndicateurDetailChart'; -import { BadgeACompleter } from 'ui/shared/Badge/BadgeACompleter'; -import TextareaControlled from 'ui/shared/form/TextareaControlled'; -import { referentielToName } from 'app/labels'; -import { IndicateurValuesTabs } from 'app/pages/collectivite/Indicateurs/Indicateur/detail/IndicateurValuesTabs'; import { IndicateurInfoLiees } from 'app/pages/collectivite/Indicateurs/Indicateur/detail/IndicateurInfoLiees'; +import { IndicateurValuesTabs } from 'app/pages/collectivite/Indicateurs/Indicateur/detail/IndicateurValuesTabs'; +import { useIndicateurImportSources } from 'app/pages/collectivite/Indicateurs/Indicateur/detail/useImportSources'; import { FichesActionLiees } from 'app/pages/collectivite/Indicateurs/Indicateur/FichesActionLiees'; import ActionsLieesListe from 'app/pages/collectivite/PlansActions/FicheAction/ActionsLiees/ActionsLieesListe'; +import { useCollectiviteId } from 'core-logic/hooks/params'; import { useCurrentCollectivite } from 'core-logic/hooks/useCurrentCollectivite'; -import { useUpdateIndicateurDefinition } from './useUpdateIndicateurDefinition'; -import BadgeOpenData from '@tet/app/pages/collectivite/Indicateurs/components/BadgeOpenData'; -import { useExportIndicateurs } from './useExportIndicateurs'; +import ScrollTopButton from 'ui/buttons/ScrollTopButton'; import { ToolbarIconButton } from 'ui/buttons/ToolbarIconButton'; +import { BadgeACompleter } from 'ui/shared/Badge/BadgeACompleter'; +import TextareaControlled from 'ui/shared/form/TextareaControlled'; +import { TIndicateurDefinition } from '../types'; +import { IndicateurCompose } from './detail/IndicateurCompose'; +import { IndicateurSidePanelToolbar } from './IndicateurSidePanelToolbar'; +import { useExportIndicateurs } from './useExportIndicateurs'; +import { useIndicateurDefinition } from './useIndicateurDefinition'; +import { useUpdateIndicateurDefinition } from './useUpdateIndicateurDefinition'; /** Charge et affiche le détail d'un indicateur prédéfini et de ses éventuels "enfants" */ export const IndicateurPredefiniBase = ({ @@ -32,9 +31,10 @@ export const IndicateurPredefiniBase = ({ const { mutate: updateDefinition } = useUpdateIndicateurDefinition(); const collectivite = useCurrentCollectivite(); const isReadonly = !collectivite || collectivite?.readonly; - const { mutate: exportIndicateurs, isLoading } = useExportIndicateurs([ - definition, - ]); + const { mutate: exportIndicateurs, isLoading } = useExportIndicateurs( + 'app/indicateurs/predefini', + [definition] + ); const collectivite_id = useCollectiviteId()!; diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/useExportIndicateurs.ts b/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/useExportIndicateurs.ts index 3e3fc93fd5..27cc4d8cd3 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/useExportIndicateurs.ts +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/useExportIndicateurs.ts @@ -1,12 +1,22 @@ -import { useMutation } from 'react-query'; -import { useFonctionTracker } from 'core-logic/hooks/useFonctionTracker'; -import { useCollectiviteId } from 'core-logic/hooks/params'; +import { useEventTracker } from '@tet/ui'; import { useApiClient } from 'core-logic/api/useApiClient'; +import { useCollectiviteId } from 'core-logic/hooks/params'; +import { useMutation } from 'react-query'; import { saveBlob } from 'ui/shared/preuves/Bibliotheque/saveBlob'; import { TIndicateurListItem } from '../types'; -export const useExportIndicateurs = (definitions?: TIndicateurListItem[]) => { - const tracker = useFonctionTracker(); +type PageName = + | 'app/indicateurs/tous' + | 'app/indicateurs/collectivite' + | 'app/indicateurs/perso' + | 'app/indicateurs/predefini' + | 'app/tdb/personnel/indicateurs-de-suivi-de-mes-plans'; + +export const useExportIndicateurs = ( + pageName: PageName, + definitions?: TIndicateurListItem[] +) => { + const trackEvent = useEventTracker(pageName); const collectiviteId = useCollectiviteId(); const apiClient = useApiClient(); @@ -26,10 +36,8 @@ export const useExportIndicateurs = (definitions?: TIndicateurListItem[]) => { if (filename && blob) { saveBlob(blob, filename); - tracker({ - page: 'indicateur', - action: 'telechargement', - fonction: 'export_xlsx', + trackEvent('export_xlsx_telechargement', { + collectivite_id: collectiviteId, }); } }, diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/IndicateursCollectivite/IndicateursCollectivite.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/IndicateursCollectivite/IndicateursCollectivite.tsx index c2318be20e..0a84cdce27 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/IndicateursCollectivite/IndicateursCollectivite.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/IndicateursCollectivite/IndicateursCollectivite.tsx @@ -1,4 +1,3 @@ -import { useState } from 'react'; import { FetchFiltre } from '@tet/api/indicateurs'; import { Button, ButtonMenu, TrackPageView, useEventTracker } from '@tet/ui'; import EmptyIndicateurFavori from 'app/pages/collectivite/Indicateurs/IndicateursCollectivite/EmptyIndicateurFavori'; @@ -6,10 +5,11 @@ import { useIndicateursFavorisCollectiviteIds } from 'app/pages/collectivite/Ind import IndicateursListe from 'app/pages/collectivite/Indicateurs/lists/IndicateursListe'; import { indicateursNameToParams } from 'app/pages/collectivite/Indicateurs/lists/utils'; import MenuFiltresTousLesIndicateurs from 'app/pages/collectivite/Indicateurs/TousLesIndicateurs/MenuFiltresTousLesIndicateurs'; +import ModaleCreerIndicateur from 'app/pages/collectivite/PlansActions/FicheAction/Indicateurs/ModaleCreerIndicateur'; import { makeCollectiviteIndicateursCollectiviteUrl } from 'app/paths'; import { useSearchParams } from 'core-logic/hooks/query'; import { useCurrentCollectivite } from 'core-logic/hooks/useCurrentCollectivite'; -import ModaleCreerIndicateur from 'app/pages/collectivite/PlansActions/FicheAction/Indicateurs/ModaleCreerIndicateur'; +import { useState } from 'react'; /** Page de listing de tous les indicateurs de la collectivité */ const IndicateursCollectivite = () => { @@ -63,6 +63,7 @@ const IndicateursCollectivite = () => { /> ) : ( setFilters({})} diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/TousLesIndicateurs/TousLesIndicateurs.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/TousLesIndicateurs/TousLesIndicateurs.tsx index ada5e2f42d..7c4654bb49 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/TousLesIndicateurs/TousLesIndicateurs.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/TousLesIndicateurs/TousLesIndicateurs.tsx @@ -1,4 +1,3 @@ -import { useState } from 'react'; import { FetchFiltre } from '@tet/api/indicateurs'; import { Button, ButtonMenu, TrackPageView, useEventTracker } from '@tet/ui'; import IndicateursListe from 'app/pages/collectivite/Indicateurs/lists/IndicateursListe'; @@ -8,6 +7,7 @@ import ModaleCreerIndicateur from 'app/pages/collectivite/PlansActions/FicheActi import { makeCollectiviteTousLesIndicateursUrl } from 'app/paths'; import { useSearchParams } from 'core-logic/hooks/query'; import { useCurrentCollectivite } from 'core-logic/hooks/useCurrentCollectivite'; +import { useState } from 'react'; /** Page de listing de toutes les fiches actions de la collectivité */ const TousLesIndicateurs = () => { @@ -66,6 +66,7 @@ const TousLesIndicateurs = () => { )} setFilters({})} diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/lists/IndicateursListe.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/lists/IndicateursListe.tsx index 80daf31246..c3f6ac9976 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/lists/IndicateursListe.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/lists/IndicateursListe.tsx @@ -1,5 +1,5 @@ -import { useEffect, useState } from 'react'; import classNames from 'classnames'; +import { useEffect, useState } from 'react'; import { Badge, @@ -16,6 +16,7 @@ import PictoExpert from 'ui/pictogrammes/PictoExpert'; import SpinnerLoader from 'ui/shared/SpinnerLoader'; import { Indicateurs } from '@tet/api'; +import { OpenState } from '@tet/ui/utils/types'; import { getIndicateurGroup } from 'app/pages/collectivite/Indicateurs/lists/IndicateurCard/utils'; import { useFilteredIndicateurDefinitions } from 'app/pages/collectivite/Indicateurs/lists/useFilteredIndicateurDefinitions'; import { @@ -23,7 +24,6 @@ import { useSelectedFilters, } from 'app/pages/collectivite/TableauDeBord/components/ModuleFiltreBadges'; import { makeCollectiviteIndicateursUrl } from 'app/paths'; -import { OpenState } from '@tet/ui/utils/types'; import { useCurrentCollectivite } from 'core-logic/hooks/useCurrentCollectivite'; import { useExportIndicateurs } from '../Indicateur/useExportIndicateurs'; @@ -61,10 +61,16 @@ type Props = { sortSettings?: SortIndicateurSettings; /** Rend les cartes indicateurs éditables */ isEditable?: boolean; + // pour le tracking + pageName: + | 'app/indicateurs/tous' + | 'app/indicateurs/collectivite' + | 'app/tdb/personnel/indicateurs-de-suivi-de-mes-plans'; }; /** Liste de fiches action avec tri et options de fitlre */ const IndicateursListe = ({ + pageName, sortSettings = { defaultSort: 'text', }, @@ -150,7 +156,7 @@ const IndicateursListe = ({ // fonction d'export const { mutate: exportIndicateurs, isLoading: isDownloadingExport } = - useExportIndicateurs(data); + useExportIndicateurs(pageName, data); /** Affiche ou cache les graphiques des cartes */ const [displayGraphs, setDisplayGraphs] = useState(true); diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/TableauDeBord/Personnel/ModuleIndicateurs/ModuleIndicateursPage.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/TableauDeBord/Personnel/ModuleIndicateurs/ModuleIndicateursPage.tsx index e4e42cdd52..23678b9713 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/TableauDeBord/Personnel/ModuleIndicateurs/ModuleIndicateursPage.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/TableauDeBord/Personnel/ModuleIndicateurs/ModuleIndicateursPage.tsx @@ -4,15 +4,15 @@ import { ModuleIndicateursSelect, Slug, } from '@tet/api/plan-actions/dashboards/personal-dashboard/domain/module.schema'; -import IndicateursListe from 'app/pages/collectivite/Indicateurs/lists/IndicateursListe'; +import ModulePage from '@tet/app/pages/collectivite/TableauDeBord/components/ModulePage'; +import ModalIndicateursSuiviPlan from '@tet/app/pages/collectivite/TableauDeBord/Personnel/ModuleIndicateurs/ModalIndicateursSuiviPlan'; import { getQueryKey, usePersonalModuleFetch, } from '@tet/app/pages/collectivite/TableauDeBord/Personnel/usePersonalModuleFetch'; +import IndicateursListe from 'app/pages/collectivite/Indicateurs/lists/IndicateursListe'; import { TDBViewParam } from 'app/paths'; import { useCollectiviteId } from 'core-logic/hooks/params'; -import ModulePage from '@tet/app/pages/collectivite/TableauDeBord/components/ModulePage'; -import ModalIndicateursSuiviPlan from '@tet/app/pages/collectivite/TableauDeBord/Personnel/ModuleIndicateurs/ModalIndicateursSuiviPlan'; type Props = { view: TDBViewParam; @@ -27,9 +27,8 @@ const ModuleIndicateursPage = ({ view, slug }: Props) => { const filtre = module?.options.filtre; - const trackEvent = useEventTracker( - `app/tdb/personnel/indicateurs-de-suivi-de-mes-plans` - ); + const pageName = 'app/tdb/personnel/indicateurs-de-suivi-de-mes-plans'; + const trackEvent = useEventTracker(pageName); if (isModuleLoading || !module) { return null; @@ -42,6 +41,7 @@ const ModuleIndicateursPage = ({ view, slug }: Props) => { properties={{ collectivite_id: collectiviteId! }} /> ( <> diff --git a/packages/ui/src/components/tracking/trackingPlan.ts b/packages/ui/src/components/tracking/trackingPlan.ts index 8726bae95d..fdea84a407 100644 --- a/packages/ui/src/components/tracking/trackingPlan.ts +++ b/packages/ui/src/components/tracking/trackingPlan.ts @@ -86,6 +86,7 @@ export interface TrackingPlan extends Record { onglets: never; events: { toggle_graphique: { actif: boolean }; + export_xlsx_telechargement: {}; filtres: { filtreValues: IndicateursFiltres; }; @@ -98,6 +99,7 @@ export interface TrackingPlan extends Record { onglets: never; events: { explorerIndicateursClick: {}; + export_xlsx_telechargement: {}; filtres: { filtreValues: IndicateursFiltres; }; @@ -110,6 +112,7 @@ export interface TrackingPlan extends Record { onglets: never; events: { indicateur_suppression: { indicateur_id: number }; + export_xlsx_telechargement: {}; }; }; @@ -122,6 +125,7 @@ export interface TrackingPlan extends Record { view_open_data: OpenDataSource; /** Applique une source open data aux résultats ou objectifs */ apply_open_data: OpenDataSource & { overwrite: boolean }; + export_xlsx_telechargement: {}; }; }; @@ -162,6 +166,7 @@ export interface TrackingPlan extends Record { events: { tdb_modifier_filtres_indicateurs: {}; tdb_valider_filtres_indicateurs: {}; + export_xlsx_telechargement: {}; }; };