Skip to content

Commit

Permalink
Remplace la fonction de tracking de l'export xslx des indicateurs
Browse files Browse the repository at this point in the history
  • Loading branch information
marc-rutkowski committed Dec 9, 2024
1 parent c9ca187 commit 252545d
Show file tree
Hide file tree
Showing 8 changed files with 74 additions and 53 deletions.
Original file line number Diff line number Diff line change
@@ -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 = ({
Expand All @@ -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 = (
Expand Down
Original file line number Diff line number Diff line change
@@ -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 = ({
Expand All @@ -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()!;

Expand Down
Original file line number Diff line number Diff line change
@@ -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();

Expand All @@ -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,
});
}
},
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
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';
import { useIndicateursFavorisCollectiviteIds } from 'app/pages/collectivite/Indicateurs/IndicateursCollectivite/useIndicateursFavorisCollectiviteIds';
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 = () => {
Expand Down Expand Up @@ -63,6 +63,7 @@ const IndicateursCollectivite = () => {
/>
) : (
<IndicateursListe
pageName="app/indicateurs/collectivite"
isEditable
filtres={{ ...filters, estFavorisCollectivite: true }}
resetFilters={() => setFilters({})}
Expand Down
Original file line number Diff line number Diff line change
@@ -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';
Expand All @@ -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 = () => {
Expand Down Expand Up @@ -66,6 +66,7 @@ const TousLesIndicateurs = () => {
)}
</div>
<IndicateursListe
pageName="app/indicateurs/tous"
isEditable
filtres={filters}
resetFilters={() => setFilters({})}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { useEffect, useState } from 'react';
import classNames from 'classnames';
import { useEffect, useState } from 'react';

import {
Badge,
Expand All @@ -16,14 +16,14 @@ 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 {
ModuleFiltreBadgesBase,
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';

Expand Down Expand Up @@ -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',
},
Expand Down Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand All @@ -42,6 +41,7 @@ const ModuleIndicateursPage = ({ view, slug }: Props) => {
properties={{ collectivite_id: collectiviteId! }}
/>
<IndicateursListe
pageName={pageName}
filtres={filtre}
settings={(openState) => (
<>
Expand Down
5 changes: 5 additions & 0 deletions packages/ui/src/components/tracking/trackingPlan.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ export interface TrackingPlan extends Record<never, Page> {
onglets: never;
events: {
toggle_graphique: { actif: boolean };
export_xlsx_telechargement: {};
filtres: {
filtreValues: IndicateursFiltres;
};
Expand All @@ -98,6 +99,7 @@ export interface TrackingPlan extends Record<never, Page> {
onglets: never;
events: {
explorerIndicateursClick: {};
export_xlsx_telechargement: {};
filtres: {
filtreValues: IndicateursFiltres;
};
Expand All @@ -110,6 +112,7 @@ export interface TrackingPlan extends Record<never, Page> {
onglets: never;
events: {
indicateur_suppression: { indicateur_id: number };
export_xlsx_telechargement: {};
};
};

Expand All @@ -122,6 +125,7 @@ export interface TrackingPlan extends Record<never, Page> {
view_open_data: OpenDataSource;
/** Applique une source open data aux résultats ou objectifs */
apply_open_data: OpenDataSource & { overwrite: boolean };
export_xlsx_telechargement: {};
};
};

Expand Down Expand Up @@ -162,6 +166,7 @@ export interface TrackingPlan extends Record<never, Page> {
events: {
tdb_modifier_filtres_indicateurs: {};
tdb_valider_filtres_indicateurs: {};
export_xlsx_telechargement: {};
};
};

Expand Down

0 comments on commit 252545d

Please sign in to comment.