diff --git a/app.territoiresentransitions.react/src/app/Layout/Header/SelectCollectivite.tsx b/app.territoiresentransitions.react/src/app/Layout/Header/SelectCollectivite.tsx index 20b1b19739..2409d4db65 100644 --- a/app.territoiresentransitions.react/src/app/Layout/Header/SelectCollectivite.tsx +++ b/app.territoiresentransitions.react/src/app/Layout/Header/SelectCollectivite.tsx @@ -58,8 +58,8 @@ export const SelectCollectivite = (props: HeaderPropsWithModalState) => { {currentCollectivite.nom} diff --git a/app.territoiresentransitions.react/src/app/Layout/Header/index.tsx b/app.territoiresentransitions.react/src/app/Layout/Header/index.tsx index eaec55e185..7969a25e5a 100644 --- a/app.territoiresentransitions.react/src/app/Layout/Header/index.tsx +++ b/app.territoiresentransitions.react/src/app/Layout/Header/index.tsx @@ -13,7 +13,7 @@ const Header = () => { const auth = useAuth(); const currentCollectivite = useCurrentCollectivite(); const { data: panier } = useNbActionsDansPanier( - currentCollectivite?.collectivite_id! + currentCollectivite?.collectiviteId! ); const maintenance = useMaintenance(); diff --git a/app.territoiresentransitions.react/src/app/Layout/Header/makeNavItems.ts b/app.territoiresentransitions.react/src/app/Layout/Header/makeNavItems.ts index 5da8e4048b..a3f6fe66c2 100644 --- a/app.territoiresentransitions.react/src/app/Layout/Header/makeNavItems.ts +++ b/app.territoiresentransitions.react/src/app/Layout/Header/makeNavItems.ts @@ -38,18 +38,18 @@ const isVisiteur = ({ user: UserData | null; collectivite: CurrentCollectivite; }) => - collectivite.niveau_acces === null && + collectivite.niveauAcces === null && !user?.isSupport && - !collectivite.est_auditeur; + !collectivite.isRoleAuditeur; const makeNavItemsBase = ( collectivite: CurrentCollectivite, user: UserData | null, panierId: string | undefined ): TNavItemsList => { - const collectiviteId = collectivite.collectivite_id; + const collectiviteId = collectivite.collectiviteId; const confidentiel = - collectivite.acces_restreint && collectivite.niveau_acces === null; + collectivite.accesRestreint && collectivite.niveauAcces === null; const hideToVisitor = isVisiteur({ user, collectivite }); // items communs qque soient les droits de l'utilisateur courant @@ -178,7 +178,7 @@ const makeNavItemsBase = ( { confidentiel, title: "Plans d'action", - urlPrefix: [`${collectivite.collectivite_id}/plans/`], + urlPrefix: [`${collectivite.collectiviteId}/plans/`], dataTest: 'nav-pa', items: [ { @@ -227,7 +227,7 @@ const makeNavItemsBase = ( confidentiel, title: 'Indicateurs', dataTest: 'nav-ind', - urlPrefix: [`${collectivite.collectivite_id}/indicateurs/`], + urlPrefix: [`${collectivite.collectiviteId}/indicateurs/`], items: [ { label: 'Tous les indicateurs', @@ -273,10 +273,10 @@ const filtreItems = (items: TNavItemsList): TNavItemsList => export const makeSecondaryNavItems = ( collectivite: CurrentCollectivite ): TNavItemsList => { - const collectiviteId = collectivite.collectivite_id; + const collectiviteId = collectivite.collectiviteId; const confidentiel = - collectivite.acces_restreint && collectivite.niveau_acces === null; + collectivite.accesRestreint && collectivite.niveauAcces === null; return filtreItems([ { diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/Accueil/Accueil.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/Accueil/Accueil.tsx index 3d0d1b9bfa..5e35e67251 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/Accueil/Accueil.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/Accueil/Accueil.tsx @@ -39,12 +39,12 @@ const Accueil = (): JSX.Element => { const { count: ficheActionCount } = useFicheActionCount(); const { data: panier } = useNbActionsDansPanier( - collectivite?.collectivite_id! + collectivite?.collectiviteId! ); - if (!collectivite?.collectivite_id) return <>; + if (!collectivite?.collectiviteId) return <>; - const { collectivite_id: collectiviteId } = collectivite; + const { collectiviteId: collectiviteId } = collectivite; return (
{ }`} description="Centralisez et réalisez le suivi des plans d'actions de transition écologique de votre collectivité. Collaborez à plusieurs sur les fiches action pour planifier et piloter leur mise en oeuvre !" buttons={[ - collectivite.readonly + collectivite.readOnly ? { children: 'Aller sur le tableau de bord de la collectivité', href: makeTableauBordUrl({ diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/Audit/AddRapportButton.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/Audit/AddRapportButton.tsx index f9f79a4008..5ec8088059 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/Audit/AddRapportButton.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/Audit/AddRapportButton.tsx @@ -17,7 +17,7 @@ export const AddRapportButton = (props: TAddDocsButtonProps) => { const [opened, setOpened] = useState(false); const handlers = useAddPreuveToAudit(props.audit_id); const currentCollectivite = useCurrentCollectivite(); - if (!currentCollectivite || currentCollectivite.readonly) { + if (!currentCollectivite || currentCollectivite.readOnly) { return null; } diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/Audit/useAudit.ts b/app.territoiresentransitions.react/src/app/pages/collectivite/Audit/useAudit.ts index be8317de39..b46cbe01a6 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/Audit/useAudit.ts +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/Audit/useAudit.ts @@ -44,7 +44,7 @@ export const useAudit = () => { * collectivité courante */ export const useIsAuditeur = () => { const collectivite = useCurrentCollectivite(); - return collectivite?.est_auditeur || false; + return collectivite?.isRoleAuditeur || false; }; /** Liste des auditeurs pour la collectivité et le référentiel courant */ diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/AuditComparaison/useExportAuditScore.ts b/app.territoiresentransitions.react/src/app/pages/collectivite/AuditComparaison/useExportAuditScore.ts index ef60742ef1..4838d44869 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/AuditComparaison/useExportAuditScore.ts +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/AuditComparaison/useExportAuditScore.ts @@ -10,7 +10,7 @@ export const useExportAuditScores = ( collectivite: CurrentCollectivite | null ) => { const tracker = useFonctionTracker(); - const collectivite_id = collectivite?.collectivite_id; + const collectivite_id = collectivite?.collectiviteId; return useMutation( ['export_audit_score', collectivite_id, referentiel], diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/BibliothequeDocs/BibliothequeDocs.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/BibliothequeDocs/BibliothequeDocs.tsx index 845fb5ce91..5114d309e3 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/BibliothequeDocs/BibliothequeDocs.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/BibliothequeDocs/BibliothequeDocs.tsx @@ -1,4 +1,4 @@ -import { useCollectiviteId } from '@/app/core-logic/hooks/params'; +import { useCurrentCollectivite } from '@/app/core-logic/hooks/useCurrentCollectivite'; import PreuveDoc from '@/app/ui/shared/preuves/Bibliotheque/PreuveDoc'; import { TPreuveAuditEtLabellisation, @@ -6,6 +6,7 @@ import { } from '@/app/ui/shared/preuves/Bibliotheque/types'; import { usePreuvesParType } from '@/app/ui/shared/preuves/Bibliotheque/usePreuves'; import { TrackPageView } from '@/ui'; +import { pick } from 'es-toolkit'; import { AddRapportVisite } from './AddRapportVisite'; import { PreuvesLabellisation } from './PreuveLabellisation'; import { PreuvesTabs } from './PreuvesTabs'; @@ -50,7 +51,7 @@ export const BibliothequeDocs = ({ }; const BibliothequeDocsConnected = () => { - const collectivite_id = useCollectiviteId()!; + const collectivite = useCurrentCollectivite()!; const preuves = usePreuvesParType({ preuve_types: ['audit', 'labellisation', 'rapport'], }); @@ -62,7 +63,11 @@ const BibliothequeDocsConnected = () => { <> { - collectivite.acces_restreint && collectivite.niveau_acces === null ? ( + collectivite.accesRestreint && collectivite.niveauAcces === null ? ( ) : ( diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/EtatDesLieux/Accueil/Accueil.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/EtatDesLieux/Accueil/Accueil.tsx index bd7f17f2a7..daa1cd81b3 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/EtatDesLieux/Accueil/Accueil.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/EtatDesLieux/Accueil/Accueil.tsx @@ -23,14 +23,14 @@ const Accueil = (): JSX.Element => { const { user } = useAuth(); - if (!collectivite?.collectivite_id) return <>; + if (!collectivite?.collectiviteId) return <>; /** Vérifie que l'utilisateur peut accéder à la collectivité */ const hasNoAccessToCollectivite = - collectivite.acces_restreint && - collectivite.niveau_acces === null && + collectivite.accesRestreint && + collectivite.niveauAcces === null && !user?.isSupport && - !collectivite.est_auditeur; + !collectivite.isRoleAuditeur; /** S'il ne peut pas, on affiche un message */ if (hasNoAccessToCollectivite) { @@ -64,7 +64,7 @@ const AccueilNonConfidentielle = ({ eciPotentiel, } = useProgressionReferentiel(); - const { collectivite_id: collectiviteId, readonly } = collectivite; + const { collectiviteId: collectiviteId, readOnly: readonly } = collectivite; const { data: referents } = useMembres({ collectiviteId, estReferent: true }); const referentsParFonction = groupeParFonction(referents || []); diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/EtatDesLieux/Accueil/EtatDesLieux/graphs/EtatDesLieuxGraphs.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/EtatDesLieux/Accueil/EtatDesLieux/graphs/EtatDesLieuxGraphs.tsx index 05418a43a4..bb14ae05ae 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/EtatDesLieux/Accueil/EtatDesLieux/graphs/EtatDesLieuxGraphs.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/EtatDesLieux/Accueil/EtatDesLieux/graphs/EtatDesLieuxGraphs.tsx @@ -71,7 +71,7 @@ const EtatDesLieuxGraphs = ({ onOpenModal={() => collectiviteId && trackEvent('zoom_graph', { - collectivite_id: collectiviteId, + collectiviteId: collectiviteId, referentiel, type: 'phase', }) @@ -97,7 +97,7 @@ const EtatDesLieuxGraphs = ({ onDownload={() => collectiviteId && trackEvent('export_graph', { - collectivite_id: collectiviteId, + collectiviteId: collectiviteId, referentiel, type: 'phase', }) diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/Historique/JournalActivite.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/Historique/JournalActivite.tsx index 609b3719ce..5fe30ed241 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/Historique/JournalActivite.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/Historique/JournalActivite.tsx @@ -1,5 +1,6 @@ -import { useCollectiviteId } from '@/app/core-logic/hooks/params'; +import { useCurrentCollectivite } from '@/app/core-logic/hooks/useCurrentCollectivite'; import { TrackPageView } from '@/ui'; +import { pick } from 'es-toolkit'; import { HistoriqueListe } from './HistoriqueListe'; import { THistoriqueProps } from './types'; import { useHistoriqueItemListe } from './useHistoriqueItemListe'; @@ -10,7 +11,7 @@ import { useHistoriqueItemListe } from './useHistoriqueItemListe'; export const JournalActivite = (props: THistoriqueProps) => { return (
-

Journal d'activité

+

{"Journal d'activité"}


@@ -18,13 +19,17 @@ export const JournalActivite = (props: THistoriqueProps) => { }; const JournalActiviteConnected = () => { - const collectivite_id = useCollectiviteId()!; - const historique = useHistoriqueItemListe(collectivite_id); + const collectivite = useCurrentCollectivite()!; + const historique = useHistoriqueItemListe(collectivite.collectiviteId); return ( <> ; diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/FichesActionLiees.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/FichesActionLiees.tsx index afb5db1cad..1761d7c35d 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/FichesActionLiees.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/FichesActionLiees.tsx @@ -23,7 +23,7 @@ export const FichesActionLiees = (props: TFichesActionProps) => { const { mutate: updateFichesActionLiees } = useUpdateFichesActionLiees(definition); - const isReadonly = collectivite?.readonly ?? false; + const isReadonly = collectivite?.readOnly ?? false; return ( <> 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 a671482914..a76958136d 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 @@ -26,7 +26,7 @@ const IndicateurPersonnaliseBase = ({ const { description, unite, titre, rempli } = definition; const { mutate: updateDefinition } = useUpdateIndicateurDefinition(); const collectivite = useCurrentCollectivite(); - const isReadonly = !collectivite || collectivite?.readonly; + const isReadonly = !collectivite || collectivite?.readOnly; const { mutate: exportIndicateurs, isLoading } = useExportIndicateurs( 'app/indicateurs/perso', [definition] @@ -37,7 +37,7 @@ const IndicateurPersonnaliseBase = ({ name: 'description' | 'commentaire' | 'unite' | 'titre', value: string ) => { - const collectivite_id = collectivite?.collectivite_id; + const collectivite_id = collectivite?.collectiviteId; const nouveau = value?.trim(); if (collectivite_id && nouveau !== definition[name]) { updateDefinition({ ...definition, [name]: nouveau }); @@ -67,7 +67,7 @@ const IndicateurPersonnaliseBase = ({ const [showConfirm, setShowConfirm] = useState(false); const { mutate: deleteIndicateurPerso } = useDeleteIndicateurPerso( - collectivite?.collectivite_id as number, + collectivite?.collectiviteId as number, definition.id ); 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 c1c76a2c69..d5f3576542 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 @@ -7,13 +7,13 @@ import { IndicateurValuesTabs } from '@/app/app/pages/collectivite/Indicateurs/I import { useIndicateurImportSources } from '@/app/app/pages/collectivite/Indicateurs/Indicateur/detail/useImportSources'; import { FichesActionLiees } from '@/app/app/pages/collectivite/Indicateurs/Indicateur/FichesActionLiees'; import ActionsLieesListe from '@/app/app/pages/collectivite/PlansActions/FicheAction/ActionsLiees/ActionsLieesListe'; -import { useCollectiviteId } from '@/app/core-logic/hooks/params'; import { useCurrentCollectivite } from '@/app/core-logic/hooks/useCurrentCollectivite'; import ScrollTopButton from '@/app/ui/buttons/ScrollTopButton'; import { ToolbarIconButton } from '@/app/ui/buttons/ToolbarIconButton'; import { BadgeACompleter } from '@/app/ui/shared/Badge/BadgeACompleter'; import TextareaControlled from '@/app/ui/shared/form/TextareaControlled'; import { Badge, Field, TrackPageView } from '@/ui'; +import { pick } from 'es-toolkit'; import { TIndicateurDefinition } from '../types'; import { IndicateurCompose } from './detail/IndicateurCompose'; import { IndicateurSidePanelToolbar } from './IndicateurSidePanelToolbar'; @@ -29,21 +29,19 @@ export const IndicateurPredefiniBase = ({ }) => { const { commentaire } = definition; const { mutate: updateDefinition } = useUpdateIndicateurDefinition(); - const collectivite = useCurrentCollectivite(); - const isReadonly = !collectivite || collectivite?.readonly; + const collectivite = useCurrentCollectivite()!; + const isReadonly = !collectivite || collectivite?.readOnly; const { mutate: exportIndicateurs, isLoading } = useExportIndicateurs( 'app/indicateurs/predefini', [definition] ); - const collectivite_id = useCollectiviteId()!; - const { sources, currentSource, setCurrentSource } = useIndicateurImportSources(definition.id); // génère les fonctions d'enregistrement des modifications const handleUpdate = (name: 'commentaire', value: string) => { - const collectivite_id = collectivite?.collectivite_id; + const collectivite_id = collectivite?.collectiviteId; const nouveau = value?.trim(); if (collectivite_id && nouveau !== definition[name]) { updateDefinition({ ...definition, [name]: nouveau }); @@ -54,7 +52,10 @@ export const IndicateurPredefiniBase = ({ <>
{definition.titre} diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/detail/ImportSourcesSelector.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/detail/ImportSourcesSelector.tsx index 978d6c5a3b..703dc9f537 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/detail/ImportSourcesSelector.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/detail/ImportSourcesSelector.tsx @@ -10,6 +10,7 @@ import { TrackPageView, useEventTracker, } from '@/ui'; +import { pick } from 'es-toolkit'; import { useState } from 'react'; import { getSourceTypeLabel, SOURCE_COLLECTIVITE } from '../../constants'; import { TIndicateurDefinition } from '../../types'; @@ -41,8 +42,8 @@ export const ImportSourcesSelector = ({ const sourceTypeLabel = getSourceTypeLabel(sourceType); // collectivité courante - const collectivite = useCurrentCollectivite(); - const collectiviteId = collectivite?.collectivite_id || null; + const collectivite = useCurrentCollectivite()!; + const collectiviteId = collectivite.collectiviteId; // compare les données open-data avec les données courantes (si la source est externe) const openDataComparaison = useOpenDataComparaison({ @@ -58,7 +59,7 @@ export const ImportSourcesSelector = ({ // détermine si le bouton "appliquer à mes objectifs/résultats" doit être affiché const canApplyOpenData = collectivite && - !collectivite.readonly && + !collectivite.readOnly && currentSource !== SOURCE_COLLECTIVITE && sourceType && !!(comparaison?.conflits || comparaison?.ajouts); @@ -88,9 +89,9 @@ export const ImportSourcesSelector = ({ setCurrentSource(sourceId); if (sourceId !== SOURCE_COLLECTIVITE && sourceType) trackEvent('view_open_data', { - collectivite_id: collectiviteId!, - indicateur_id: String(definition.id), - source_id: sourceId, + ...collectivite, + indicateurId: String(definition.id), + sourceId: sourceId, type: sourceType, }); }} @@ -137,8 +138,12 @@ export const ImportSourcesSelector = ({ { const collectivite = useCurrentCollectivite(); if (!collectivite) return; - const isReadonly = !collectivite || collectivite.readonly; + const isReadonly = !collectivite || collectivite.readOnly; // extrait les userId et les tagId const pilotesValues = pilotes @@ -64,7 +64,7 @@ export const IndicateurInfoLiees = (props: TIndicateurInfoLieesProps) => { onChange={({ personnes }) => { upsertIndicateurPilote( personnes.map((personne) => ({ - collectiviteId: collectivite.collectivite_id, + collectiviteId: collectivite.collectiviteId, tagId: personne.tagId, userId: personne.userId, })) diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/detail/IndicateurValuesTabs.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/detail/IndicateurValuesTabs.tsx index 0c14b787d7..11515f7ec4 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/detail/IndicateurValuesTabs.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/detail/IndicateurValuesTabs.tsx @@ -24,7 +24,7 @@ export const IndicateurValuesTabs = ({ const collectivite = useCurrentCollectivite(); const isReadonly = !collectivite || - collectivite.readonly || + collectivite.readOnly || (!!importSource && importSource !== SOURCE_COLLECTIVITE); const { mutate: toggleIndicateurConfidentiel, isLoading } = useToggleIndicateurConfidentiel(definition); diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/detail/useApplyOpenData.ts b/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/detail/useApplyOpenData.ts index 623cc87d8d..e160de7d68 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/detail/useApplyOpenData.ts +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/detail/useApplyOpenData.ts @@ -70,9 +70,9 @@ export const useApplyOpenData = ({ source!.id, ]); trackEvent('apply_open_data', { - collectivite_id: collectiviteId!, - indicateur_id: definition.identifiant!, - source_id: source!.id, + collectiviteId: collectiviteId!, + indicateurId: definition.identifiant!, + sourceId: source!.id, type, overwrite, }); 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 30598e9f3e..38770866ec 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 @@ -37,7 +37,7 @@ export const useExportIndicateurs = ( saveBlob(blob, filename); trackEvent('export_xlsx_telechargement', { - collectivite_id: collectiviteId, + collectiviteId: collectiviteId, }); } }, diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/useRemoveIndicateurPerso.ts b/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/useRemoveIndicateurPerso.ts index 181feff7da..b7e584c3f8 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/useRemoveIndicateurPerso.ts +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/Indicateur/useRemoveIndicateurPerso.ts @@ -32,7 +32,10 @@ export const useDeleteIndicateurPerso = ( error: "L'indicateur personnalisé n'a pas pu être supprimé", }, onSuccess: () => { - tracker('indicateur_suppression', { collectivite_id, indicateur_id }); + tracker('indicateur_suppression', { + collectiviteId: collectivite_id, + indicateur_id, + }); queryClient.invalidateQueries([ 'indicateur_definitions', diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/IndicateursCollectivite/EmptyIndicateurFavori.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/IndicateursCollectivite/EmptyIndicateurFavori.tsx index d620c1ee5e..185fec8cd0 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/IndicateursCollectivite/EmptyIndicateurFavori.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/Indicateurs/IndicateursCollectivite/EmptyIndicateurFavori.tsx @@ -28,7 +28,7 @@ const EmptyIndicateurFavori = ({ collectiviteId, isReadonly }: Props) => { children: 'Explorer les indicateurs', onClick: () => { tracker('explorerIndicateursClick', { - collectivite_id: collectiviteId!, + collectiviteId: collectiviteId!, }); router.push( makeCollectiviteTousLesIndicateursUrl({ 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 61bd035da9..66c0a217a4 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 @@ -9,16 +9,17 @@ import { makeCollectiviteIndicateursCollectiviteUrl } from '@/app/app/paths'; import { useSearchParams } from '@/app/core-logic/hooks/query'; import { useCurrentCollectivite } from '@/app/core-logic/hooks/useCurrentCollectivite'; import { Button, ButtonMenu, TrackPageView, useEventTracker } from '@/ui'; +import { pick } from 'es-toolkit'; import { useState } from 'react'; /** Page de listing de tous les indicateurs de la collectivité */ const IndicateursCollectivite = () => { const tracker = useEventTracker('app/indicateurs/collectivite'); - const collectivite = useCurrentCollectivite(); - const collectiviteId = collectivite?.collectivite_id; + const collectivite = useCurrentCollectivite()!; + const collectiviteId = collectivite.collectiviteId; - const isReadonly = collectivite?.readonly ?? false; + const isReadonly = collectivite.readOnly ?? false; const [isNewIndicateurOpen, setIsNewIndicateurOpen] = useState(false); @@ -26,7 +27,7 @@ const IndicateursCollectivite = () => { const [filters, setFilters] = useSearchParams( makeCollectiviteIndicateursCollectiviteUrl({ - collectiviteId: collectiviteId!, + collectiviteId, }), {}, indicateursNameToParams @@ -36,7 +37,11 @@ const IndicateursCollectivite = () => { <>
@@ -81,7 +86,7 @@ const IndicateursCollectivite = () => { setFilters={(newFilters) => { setFilters(newFilters); tracker('filtres', { - collectivite_id: collectiviteId!, + ...collectivite, filtreValues: newFilters, }); }} 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 8c04138ce5..91953f3795 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 @@ -7,21 +7,22 @@ import { makeCollectiviteTousLesIndicateursUrl } from '@/app/app/paths'; import { useSearchParams } from '@/app/core-logic/hooks/query'; import { useCurrentCollectivite } from '@/app/core-logic/hooks/useCurrentCollectivite'; import { Button, ButtonMenu, TrackPageView, useEventTracker } from '@/ui'; +import { pick } from 'es-toolkit'; import { useState } from 'react'; /** Page de listing de toutes les fiches actions de la collectivité */ const TousLesIndicateurs = () => { - const collectivite = useCurrentCollectivite(); + const collectivite = useCurrentCollectivite()!; const tracker = useEventTracker('app/indicateurs/tous'); - const isReadonly = collectivite?.readonly ?? false; + const isReadonly = collectivite?.readOnly ?? false; const [isNewIndicateurOpen, setIsNewIndicateurOpen] = useState(false); const [filters, setFilters] = useSearchParams( makeCollectiviteTousLesIndicateursUrl({ - collectiviteId: collectivite?.collectivite_id!, + collectiviteId: collectivite.collectiviteId, }), {}, indicateursNameToParams @@ -30,7 +31,7 @@ const TousLesIndicateurs = () => { const handleSetFilters = (newFilters: FetchFiltre) => { setFilters(newFilters); tracker('filtres', { - collectivite_id: collectivite?.collectivite_id!, + ...collectivite, filtreValues: newFilters, }); }; @@ -39,7 +40,11 @@ const TousLesIndicateurs = () => { <>
{ setDisplayGraphs(!displayGraphs); tracker('toggle_graphique', { - collectivite_id: collectiviteId!, + collectiviteId: collectiviteId!, actif: !displayGraphs, }); }} diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/ParcoursLabellisation/AddDocsButton.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/ParcoursLabellisation/AddDocsButton.tsx index b23e57dfa1..dd685d5293 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/ParcoursLabellisation/AddDocsButton.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/ParcoursLabellisation/AddDocsButton.tsx @@ -12,7 +12,7 @@ export const AddDocsButton = () => { const [opened, setOpened] = useState(false); const handlers = useAddPreuveToDemande(); const currentCollectivite = useCurrentCollectivite(); - if (!currentCollectivite || currentCollectivite.readonly) { + if (!currentCollectivite || currentCollectivite.readOnly) { return null; } diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/ParcoursLabellisation/useCycleLabellisation.ts b/app.territoiresentransitions.react/src/app/pages/collectivite/ParcoursLabellisation/useCycleLabellisation.ts index 3f84353656..7236c58765 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/ParcoursLabellisation/useCycleLabellisation.ts +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/ParcoursLabellisation/useCycleLabellisation.ts @@ -31,7 +31,7 @@ export const useCycleLabellisation = ( referentiel: string | null ): TCycleLabellisation => { const collectivite = useCurrentCollectivite(); - const collectivite_id = collectivite?.collectivite_id || null; + const collectivite_id = collectivite?.collectiviteId || null; const isAuditeur = useIsAuditeur(); const identite = useCarteIdentite(collectivite_id); @@ -56,7 +56,7 @@ export const useCycleLabellisation = ( rempli && // et l'utilisateur a le droit requis collectivite && - !collectivite?.readonly + !collectivite?.readOnly ); // on peut soumettre une demande de labellisation si... diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/PersoPotentielModal/Justification.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/PersoPotentielModal/Justification.tsx index 38c052ddc2..86de5c4b51 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/PersoPotentielModal/Justification.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/PersoPotentielModal/Justification.tsx @@ -45,13 +45,13 @@ export const Justification = (props: TQuestionReponseProps) => { const newValue = value?.trim() || ''; if (newValue !== (justification || '')) updateJustification({ - collectivite_id: collectivite.collectivite_id, + collectivite_id: collectivite.collectiviteId, question_id: id, texte: newValue, modified_at: new Date().toISOString(), }); }} - disabled={collectivite.readonly} + disabled={collectivite.readOnly} autoFocus={!hasValue} /> } diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/PersoPotentielModal/Reponse.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/PersoPotentielModal/Reponse.tsx index af04581d94..0c8217b7c0 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/PersoPotentielModal/Reponse.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/PersoPotentielModal/Reponse.tsx @@ -29,7 +29,7 @@ const ReponseChoix = ({ qr, onChange }: TQuestionReponseProps) => { return ( { {choices?.map(({ id: choiceId, label }) => ( { { const collectivite = useCurrentCollectivite(); - const { collectivite_id, nom } = collectivite || {}; + const { collectiviteId: collectivite_id, nom } = collectivite || {}; // filtre initial const [filters, setFilters] = usePersoFilters(); diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/PersoReferentielThematique/PersoReferentielThematique.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/PersoReferentielThematique/PersoReferentielThematique.tsx index b5d70380e1..ea5865e947 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/PersoReferentielThematique/PersoReferentielThematique.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/PersoReferentielThematique/PersoReferentielThematique.tsx @@ -10,7 +10,7 @@ import { useThematique } from './useThematique'; const PersoReferentielThematique = () => { const collectivite = useCurrentCollectivite(); - const { collectivite_id, nom } = collectivite || {}; + const { collectiviteId: collectivite_id, nom } = collectivite || {}; const { thematiqueId } = useParams<{ thematiqueId: string }>(); const thematique = useThematique(thematiqueId); const qr = useQuestionsReponses({ thematique_id: thematiqueId }); diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ActionsGroupees/EditionPilote.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ActionsGroupees/EditionPilote.tsx index 84248801f4..c03176169d 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ActionsGroupees/EditionPilote.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ActionsGroupees/EditionPilote.tsx @@ -34,7 +34,7 @@ const ModaleEditionPilote = ({ actionsCount={selectedIds.length} onSave={() => { tracker('editer_personne_pilote_groupe', { - collectivite_id: collectiviteId, + collectiviteId: collectiviteId, }); mutation.mutate({ ficheIds: selectedIds, diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ActionsGroupees/EditionPlanning.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ActionsGroupees/EditionPlanning.tsx index 1e44673b4a..be659a301d 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ActionsGroupees/EditionPlanning.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ActionsGroupees/EditionPlanning.tsx @@ -36,7 +36,7 @@ const ModaleEditionPlanning = ({ actionsCount={selectedIds.length} onSave={() => { tracker('associer_planning_groupe', { - collectivite_id: collectiviteId, + collectiviteId: collectiviteId, }); mutation.mutate({ ficheIds: selectedIds, diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ActionsGroupees/EditionPriorite.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ActionsGroupees/EditionPriorite.tsx index 9dec48e2bd..42616c0f9f 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ActionsGroupees/EditionPriorite.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ActionsGroupees/EditionPriorite.tsx @@ -30,7 +30,7 @@ const ModaleEditionPriorite = ({ actionsCount={selectedIds.length} onSave={() => { tracker('associer_priorite_groupe', { - collectivite_id: collectiviteId, + collectiviteId: collectiviteId, }); mutation.mutate({ ficheIds: selectedIds, diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ActionsGroupees/EditionStatut.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ActionsGroupees/EditionStatut.tsx index 3008ae6357..346c1bf914 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ActionsGroupees/EditionStatut.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ActionsGroupees/EditionStatut.tsx @@ -32,7 +32,7 @@ const ModaleEditionStatut = ({ actionsCount={selectedIds.length} onSave={() => { tracker('associer_statut_groupe', { - collectivite_id: collectiviteId, + collectiviteId: collectiviteId, }); mutation.mutate({ ficheIds: selectedIds, diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ActionsGroupees/EditionTagsLibres.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ActionsGroupees/EditionTagsLibres.tsx index d3a6e8bdcc..ba1f3a96a1 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ActionsGroupees/EditionTagsLibres.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ActionsGroupees/EditionTagsLibres.tsx @@ -30,7 +30,7 @@ const ModaleEditionTagsLibres = ({ actionsCount={selectedIds.length} onSave={() => { tracker('associer_tags_perso_groupe', { - collectivite_id: collectiviteId, + collectiviteId: collectiviteId, }); mutation.mutate({ ficheIds: selectedIds, diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ExportPdf/ExportFicheActionGroupeesButton.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ExportPdf/ExportFicheActionGroupeesButton.tsx index 70a4890d93..86adaa17c7 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ExportPdf/ExportFicheActionGroupeesButton.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/ExportPdf/ExportFicheActionGroupeesButton.tsx @@ -34,7 +34,7 @@ const ExportFicheActionGroupeesButton = ({ const [isDataRequested, setIsDataRequested] = useState(false); const [content, setContent] = useState(undefined); - const fileName = `fiches-actions-${collectivite.collectivite_id}`; + const fileName = `fiches-actions-${collectivite.collectiviteId}`; useEffect(() => { if (content?.length === fichesIds.length) { @@ -54,7 +54,7 @@ const ExportFicheActionGroupeesButton = ({ variant="outlined" onClick={() => tracker('export_PDF_telechargement_groupe', { - collectivite_id: collectivite.collectivite_id, + collectiviteId: collectivite.collectiviteId, }) } > diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/FicheAction/Carte/FicheActionCard.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/FicheAction/Carte/FicheActionCard.tsx index 968435debd..cf877a8a97 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/FicheAction/Carte/FicheActionCard.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/PlansActions/FicheAction/Carte/FicheActionCard.tsx @@ -50,12 +50,12 @@ const FicheActionCard = ({ const carteId = `fiche-${ficheAction.id}`; const isNotClickable = - collectivite?.niveau_acces === null && !!ficheAction.restreint; + collectivite?.niveauAcces === null && !!ficheAction.restreint; return (
{/* Menu d'édition et de suppression */} - {!collectivite?.readonly && (isEditable || onUnlink) && ( + {!collectivite?.readOnly && (isEditable || onUnlink) && (
{onUnlink && ( @@ -170,15 +171,17 @@ const Presentation = () => {

  • - Définir ou évaluer vos objectifs, par exemple lors d'un suivi - annuel ou d'un bilan à mi-parcours de PCAET + { + "Définir ou évaluer vos objectifs, par exemple lors d'un suivi annuel ou d'un bilan à mi-parcours de PCAET" + }
  • Quantifier les efforts nécessaires secteur par secteur
  • Identifier votre contribution à la SNBC

- Cette trajectoire n'est pas prescriptive, mais peut constituer un - repère pour guider votre stratégie, vos actions. + { + "Cette trajectoire n'est pas prescriptive, mais peut constituer un repère pour guider votre stratégie, vos actions." + }

- {!collectivite.readonly && ( + {!collectivite.readOnly && ( } @@ -99,7 +99,7 @@ export const TrajectoireCalculee = () => { id, children: nom, onClick: () => { - trackTab(id, { collectivite_id: collectiviteId }); + trackTab(id, { collectiviteId: collectiviteId }); return setParams({ indicateurIdx: [String(idx)], secteurIdx: ['0'], @@ -114,7 +114,7 @@ export const TrajectoireCalculee = () => { defaultActiveTab={secteurIdx} onChange={(idx) => { trackEvent('selection_secteur', { - collectivite_id: collectiviteId, + collectiviteId: collectiviteId, secteur: indicateur?.secteurs[idx]?.identifiant, }); return setParams({ ...params, secteurIdx: [String(idx)] }); @@ -135,9 +135,9 @@ export const TrajectoireCalculee = () => { /** Avertissement "Données partiellement disponibles" */ !secteur && donneesSectoriellesIncompletes && ( { ) } @@ -213,7 +213,7 @@ export const TrajectoireCalculee = () => { )} {secteur && } diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/Trajectoire/useCalculTrajectoire.ts b/app.territoiresentransitions.react/src/app/pages/collectivite/Trajectoire/useCalculTrajectoire.ts index afbf8877fe..652567cacb 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/Trajectoire/useCalculTrajectoire.ts +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/Trajectoire/useCalculTrajectoire.ts @@ -43,7 +43,7 @@ export const useCalculTrajectoire = (args?: { nouveauCalcul: boolean }) => { async () => { if (!collectiviteId) return; trackEvent('cta_lancer_calcul', { - collectivite_id: collectiviteId, + collectiviteId: collectiviteId, source: args?.nouveauCalcul ? 'collectivite' : 'open_data', }); return api.get({ diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/Trajectoire/useTelechargementModele.ts b/app.territoiresentransitions.react/src/app/pages/collectivite/Trajectoire/useTelechargementModele.ts index 481a406d20..a0f3dff18e 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/Trajectoire/useTelechargementModele.ts +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/Trajectoire/useTelechargementModele.ts @@ -14,7 +14,10 @@ export const useTelechargementModele = () => { return useMutation( 'snbc/modele', async () => { - trackEvent('cta_download', { collectivite_id, file: 'modele' }); + trackEvent('cta_download', { + collectiviteId: collectivite_id, + file: 'modele', + }); const { blob, filename } = await api.getAsBlob({ route: '/trajectoires/snbc/modele', }); diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/Trajectoire/useTelechargementTrajectoire.ts b/app.territoiresentransitions.react/src/app/pages/collectivite/Trajectoire/useTelechargementTrajectoire.ts index 6c99a90f64..98f4e19dbe 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/Trajectoire/useTelechargementTrajectoire.ts +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/Trajectoire/useTelechargementTrajectoire.ts @@ -17,12 +17,12 @@ export const useTelechargementTrajectoire = () => { if (!collectivite) return; trackEvent('cta_download', { - collectivite_id: collectivite.collectivite_id, + collectiviteId: collectivite.collectiviteId, file: 'donnees', }); const { blob, filename } = await api.getAsBlob({ route: '/trajectoires/snbc/telechargement', - params: { collectiviteId: collectivite.collectivite_id }, + params: { collectiviteId: collectivite.collectiviteId }, }); if (blob) { await saveBlob( diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/Users/Membres.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/Users/Membres.tsx index 574441fc5f..cfef50c564 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/Users/Membres.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/Users/Membres.tsx @@ -21,6 +21,7 @@ import { useCurrentCollectivite, } from '@/app/core-logic/hooks/useCurrentCollectivite'; import { Button, Modal, Pagination, TrackPageView } from '@/ui'; +import { pick } from 'es-toolkit'; import { useEffect, useState } from 'react'; export type MembresProps = { @@ -44,8 +45,8 @@ export const Membres = ({ updateMembre, removeFromCollectivite, }: MembresProps) => { - const { niveau_acces } = collectivite; - const canInvite = niveau_acces === 'admin' || niveau_acces === 'edition'; + const { niveauAcces } = collectivite; + const canInvite = niveauAcces === 'admin' || niveauAcces === 'edition'; const { data, mutate: addUser } = useAddUserToCollectivite( collectivite, currentUser @@ -84,7 +85,11 @@ export const Membres = ({ <>

@@ -94,7 +99,7 @@ export const Membres = ({ title="Inviter un membre" render={({ close }) => ( { addUser(data); @@ -111,7 +116,7 @@ export const Membres = ({ { - const { collectivite_id: collectiviteId } = collectivite; + const { collectiviteId: collectiviteId } = collectivite; const queryClient = useQueryClient(); const { mutate: sendInvitation } = useSendInvitation(collectivite, user); const utils = trpc.useUtils(); diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/Users/useSendInvitation.ts b/app.territoiresentransitions.react/src/app/pages/collectivite/Users/useSendInvitation.ts index 98b32f08f5..5a6595800e 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/Users/useSendInvitation.ts +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/Users/useSendInvitation.ts @@ -29,7 +29,7 @@ export const useSendInvitation = ( (invitationId ? makeInvitationLandingPath(invitationId, email) : makeCollectiviteAccueilUrl({ - collectiviteId: collectivite.collectivite_id, + collectiviteId: collectivite.collectiviteId, })); const urlType = invitationId ? 'invitation' : 'rattachement'; diff --git a/app.territoiresentransitions.react/src/core-logic/hooks/useActionStatut.ts b/app.territoiresentransitions.react/src/core-logic/hooks/useActionStatut.ts index 80bccc6a13..ea727c9e85 100644 --- a/app.territoiresentransitions.react/src/core-logic/hooks/useActionStatut.ts +++ b/app.territoiresentransitions.react/src/core-logic/hooks/useActionStatut.ts @@ -113,7 +113,7 @@ export const useEditActionStatutIsDisabled = (actionId: string) => { return Boolean( !collectivite || - collectivite.readonly || + collectivite.readOnly || !score || score.desactive || (audit && (!isAuditeur || audit.valide)) diff --git a/app.territoiresentransitions.react/src/core-logic/hooks/useCurrentCollectivite.ts b/app.territoiresentransitions.react/src/core-logic/hooks/useCurrentCollectivite.ts index c1116af0a1..094a8127eb 100644 --- a/app.territoiresentransitions.react/src/core-logic/hooks/useCurrentCollectivite.ts +++ b/app.territoiresentransitions.react/src/core-logic/hooks/useCurrentCollectivite.ts @@ -5,14 +5,13 @@ import { TNiveauAcces } from '@/app/types/alias'; import { useQuery } from 'react-query'; export type CurrentCollectivite = { - collectivite_id: number; + collectiviteId: number; nom: string; - niveau_acces: TNiveauAcces | null; - acces_restreint: boolean; - est_auditeur: boolean; - // états dérivés - isAdmin: boolean; - readonly: boolean; + niveauAcces: TNiveauAcces | null; + accesRestreint: boolean; + isRoleAuditeur: boolean; + role: 'auditeur' | null; + readOnly: boolean; }; // charge une collectivité @@ -28,13 +27,13 @@ const fetchCurrentCollectivite = async (collectivite_id: number) => { function toCurrentCollectivite(collectivite: any): CurrentCollectivite { return { - collectivite_id: collectivite.collectivite_id, + collectiviteId: collectivite.collectivite_id, nom: collectivite.nom, - niveau_acces: collectivite.niveau_acces, - isAdmin: collectivite.niveau_acces === 'admin', - est_auditeur: collectivite.est_auditeur, - acces_restreint: collectivite.access_restreint || false, - readonly: + niveauAcces: collectivite.niveau_acces, + isRoleAuditeur: collectivite.est_auditeur, + role: collectivite.est_auditeur ? 'auditeur' : null, + accesRestreint: collectivite.access_restreint || false, + readOnly: (collectivite.niveau_acces === null || collectivite.niveau_acces === 'lecture') && !collectivite.est_auditeur, diff --git a/app.territoiresentransitions.react/src/fixtures/currentCollectivite.ts b/app.territoiresentransitions.react/src/fixtures/currentCollectivite.ts index fdff3800ac..d1b22f1409 100644 --- a/app.territoiresentransitions.react/src/fixtures/currentCollectivite.ts +++ b/app.territoiresentransitions.react/src/fixtures/currentCollectivite.ts @@ -1,24 +1,24 @@ import { CurrentCollectivite } from '@/app/core-logic/hooks/useCurrentCollectivite'; const fakeCurrentCollectiviteBase = { - collectivite_id: 1, + collectiviteId: 1, nom: 'Fake Collectivite', }; export const fakeCurrentCollectiviteAdmin: CurrentCollectivite = { ...fakeCurrentCollectiviteBase, - niveau_acces: 'admin', - isAdmin: true, - est_auditeur: false, - readonly: false, - acces_restreint: false, + niveauAcces: 'admin', + isRoleAuditeur: false, + role: null, + readOnly: false, + accesRestreint: false, }; export const fakeCurrentCollectiviteLecture: CurrentCollectivite = { ...fakeCurrentCollectiviteBase, - niveau_acces: 'lecture', - isAdmin: false, - est_auditeur: false, - readonly: true, - acces_restreint: false, + niveauAcces: 'lecture', + isRoleAuditeur: false, + role: null, + readOnly: true, + accesRestreint: false, }; diff --git a/app.territoiresentransitions.react/src/ui/charts/old/BarChartCardWithSubrows.tsx b/app.territoiresentransitions.react/src/ui/charts/old/BarChartCardWithSubrows.tsx index 140784239e..f1c5ee531a 100644 --- a/app.territoiresentransitions.react/src/ui/charts/old/BarChartCardWithSubrows.tsx +++ b/app.territoiresentransitions.react/src/ui/charts/old/BarChartCardWithSubrows.tsx @@ -226,7 +226,7 @@ const BarChartCardWithSubrows = ({ onOpenModal={() => collectiviteId && trackEvent('zoom_graph', { - collectivite_id: collectiviteId, + collectiviteId: collectiviteId, referentiel, type: relativeMode ? 'percentage' : 'points', }) @@ -234,7 +234,7 @@ const BarChartCardWithSubrows = ({ onDownload={() => collectiviteId && trackEvent('export_graph', { - collectivite_id: collectiviteId, + collectiviteId: collectiviteId, referentiel, type: relativeMode ? 'percentage' : 'points', }) diff --git a/app.territoiresentransitions.react/src/ui/referentiels/ActionStatusDropdown.tsx b/app.territoiresentransitions.react/src/ui/referentiels/ActionStatusDropdown.tsx index ef2b404518..dd044b020a 100644 --- a/app.territoiresentransitions.react/src/ui/referentiels/ActionStatusDropdown.tsx +++ b/app.territoiresentransitions.react/src/ui/referentiels/ActionStatusDropdown.tsx @@ -60,7 +60,7 @@ export const ActionStatusDropdown = ({ const args = { action_id: action.id, - collectivite_id: collectivite?.collectivite_id || 0, + collectivite_id: collectivite?.collectiviteId || 0, }; const { statut, filled } = useActionStatut(action.id); const { avancement, avancement_detaille, concerne } = statut || {}; diff --git a/app.territoiresentransitions.react/src/ui/shared/actions/ActionCommentaire.tsx b/app.territoiresentransitions.react/src/ui/shared/actions/ActionCommentaire.tsx index 1f07bfc17a..b8cd1a32e5 100644 --- a/app.territoiresentransitions.react/src/ui/shared/actions/ActionCommentaire.tsx +++ b/app.territoiresentransitions.react/src/ui/shared/actions/ActionCommentaire.tsx @@ -107,11 +107,11 @@ export const ActionCommentaireField = ({ commentaire.trim() !== (initialValue || '') && onSave({ action_id: action.id, - collectivite_id: collectivite.collectivite_id, + collectivite_id: collectivite.collectiviteId, commentaire: commentaire.trim(), }); }} - disabled={collectivite.readonly || disabled} + disabled={collectivite.readOnly || disabled} autoFocus={autoFocus} /> diff --git a/app.territoiresentransitions.react/src/ui/shared/actions/AddPreuve/AddPreuveComplementaire.tsx b/app.territoiresentransitions.react/src/ui/shared/actions/AddPreuve/AddPreuveComplementaire.tsx index f2bdd57f60..b9881287eb 100644 --- a/app.territoiresentransitions.react/src/ui/shared/actions/AddPreuve/AddPreuveComplementaire.tsx +++ b/app.territoiresentransitions.react/src/ui/shared/actions/AddPreuve/AddPreuveComplementaire.tsx @@ -34,7 +34,7 @@ export const AddPreuveComplementaire = (props: TAddPreuveButtonProps) => { ); const currentCollectivite = useCurrentCollectivite(); - if (!currentCollectivite || currentCollectivite.readonly) { + if (!currentCollectivite || currentCollectivite.readOnly) { return null; } diff --git a/app.territoiresentransitions.react/src/ui/shared/actions/AddPreuve/AddPreuveReglementaire.tsx b/app.territoiresentransitions.react/src/ui/shared/actions/AddPreuve/AddPreuveReglementaire.tsx index d880044508..23a37f09e7 100644 --- a/app.territoiresentransitions.react/src/ui/shared/actions/AddPreuve/AddPreuveReglementaire.tsx +++ b/app.territoiresentransitions.react/src/ui/shared/actions/AddPreuve/AddPreuveReglementaire.tsx @@ -22,7 +22,7 @@ export const AddPreuveReglementaire = (props: TAddPreuveButtonProps) => { const { preuve_id, isDisabled } = props; const handlers = useAddPreuveReglementaireToAction(preuve_id); const currentCollectivite = useCurrentCollectivite(); - if (!currentCollectivite || currentCollectivite.readonly) { + if (!currentCollectivite || currentCollectivite.readOnly) { return null; } diff --git a/app.territoiresentransitions.react/src/ui/shared/preuves/Bibliotheque/PreuveDoc.tsx b/app.territoiresentransitions.react/src/ui/shared/preuves/Bibliotheque/PreuveDoc.tsx index 3a199a7130..baa08ec6ca 100644 --- a/app.territoiresentransitions.react/src/ui/shared/preuves/Bibliotheque/PreuveDoc.tsx +++ b/app.territoiresentransitions.react/src/ui/shared/preuves/Bibliotheque/PreuveDoc.tsx @@ -18,7 +18,7 @@ const PreuveDoc = (props: TPreuveDocProps) => { document={props.preuve} isReadonly={ !currentCollectivite || - currentCollectivite.readonly || + currentCollectivite.readOnly || props.readonly || false } diff --git a/packages/ui/src/components/tracking/TrackPageView.tsx b/packages/ui/src/components/tracking/TrackPageView.tsx index 69a458457a..6660edf255 100644 --- a/packages/ui/src/components/tracking/TrackPageView.tsx +++ b/packages/ui/src/components/tracking/TrackPageView.tsx @@ -1,5 +1,6 @@ -import { useEffect } from 'react'; import { usePostHog } from 'posthog-js/react'; +import { useEffect } from 'react'; +import { objectToSnake } from 'ts-case-convert'; import { PageName, PageProperties } from './trackingPlan'; // extrait l'id de la collectivité depuis l'objet donné si une des propriétés @@ -47,14 +48,17 @@ export function TrackPageView({ useEffect(() => { if (posthog) { - // Spécifie le groupe des évenements qui suivent cet appel - // https://posthog.com/docs/getting-started/group-analytics - posthog.group('collectivite', getCollectiviteId(properties) ?? ''); + const collectiviteId = getCollectiviteId(properties); + if (collectiviteId) { + // Spécifie le groupe des évenements qui suivent cet appel + // https://posthog.com/docs/getting-started/group-analytics + posthog.group('collectivite', collectiviteId); + } // Envoie la pageview manuellement à PostHog conformément au tracking plan posthog.capture('$pageview', { $current_url: pageName, - ...(properties ?? {}), + ...objectToSnake(properties ?? {}), }); } }, [posthog, pageName]); diff --git a/packages/ui/src/components/tracking/trackingPlan.ts b/packages/ui/src/components/tracking/trackingPlan.ts index 8d5eb3787a..54ba3131be 100644 --- a/packages/ui/src/components/tracking/trackingPlan.ts +++ b/packages/ui/src/components/tracking/trackingPlan.ts @@ -55,7 +55,7 @@ type AuthPageAvecOnglets = { }; type OpenDataSource = { - source_id: string; + sourceId: string; type: 'resultat' | 'objectif'; }; @@ -96,25 +96,31 @@ type EventsGraphReferentiel = { }; }; +type CollectiviteDefaultProps = { + collectiviteId: number; + niveauAcces: string | null; + role: 'auditeur' | null; +}; + /** * Permet de respecter le plan de tracking. */ export interface TrackingPlan extends Record { 'app/edl/synthese': { - properties: { collectivite_id: number }; + properties: CollectiviteDefaultProps; onglets: never; events: EventsGraphReferentiel; }; 'app/audit/comparaison': { - properties: { collectivite_id: number }; + properties: CollectiviteDefaultProps; onglets: never; events: EventsGraphReferentiel; }; /** Page "Tous les indicateurs" */ 'app/indicateurs/tous': { - properties: { collectivite_id: number }; + properties: CollectiviteDefaultProps; onglets: never; events: { toggle_graphique: { actif: boolean }; @@ -127,7 +133,7 @@ export interface TrackingPlan extends Record { /** Page "Indicateurs de la collectivité" */ 'app/indicateurs/collectivite': { - properties: { collectivite_id: number }; + properties: CollectiviteDefaultProps; onglets: never; events: { explorerIndicateursClick: {}; @@ -140,7 +146,7 @@ export interface TrackingPlan extends Record { /** Page indicateur perso */ 'app/indicateurs/perso': { - properties: { collectivite_id: number }; + properties: CollectiviteDefaultProps; onglets: never; events: { indicateur_suppression: { indicateur_id: number }; @@ -150,7 +156,7 @@ export interface TrackingPlan extends Record { /** Page indicateur prédéfini */ 'app/indicateurs/predefini': { - properties: { collectivite_id: number; indicateur_id: string }; + properties: CollectiviteDefaultProps & { indicateurId: string }; onglets: never; events: { /** Consultation des données open data par fournisseur */ @@ -163,14 +169,14 @@ export interface TrackingPlan extends Record { /** Modale qui affiche les données open-data en conflits avec les données déjà saisies */ 'app/indicateurs/predefini/conflits': { - properties: { collectivite_id: number; indicateur_id: string }; + properties: CollectiviteDefaultProps & { indicateurId: string }; onglets: never; events: never; }; /** Page tableau de bord de la collectivité */ 'app/tdb/collectivite': { - properties: { collectivite_id: number }; + properties: CollectiviteDefaultProps; onglets: never; events: { // clic sur le bouton "éditer" de chaque module @@ -181,7 +187,7 @@ export interface TrackingPlan extends Record { /** Page tableau de bord personnel */ 'app/tdb/personnel': { - properties: { collectivite_id: number }; + properties: CollectiviteDefaultProps; onglets: never; events: { // clic sur le bouton "éditer" de chaque module @@ -193,7 +199,7 @@ export interface TrackingPlan extends Record { /** Page TDB "indicateurs de suivi de mes plans" */ 'app/tdb/personnel/indicateurs-de-suivi-de-mes-plans': { - properties: { collectivite_id: number }; + properties: CollectiviteDefaultProps; onglets: never; events: { tdb_modifier_filtres_indicateurs: {}; @@ -204,7 +210,7 @@ export interface TrackingPlan extends Record { /** Page TDB “actions dont je suis le pilote" */ 'app/tdb/personnel/actions-dont-je-suis-pilote': { - properties: { collectivite_id: number }; + properties: CollectiviteDefaultProps; onglets: never; events: { tdb_modifier_filtres_actions_pilotes: {}; @@ -214,7 +220,7 @@ export interface TrackingPlan extends Record { /** Page TDB "actions récemment modifiées" */ 'app/tdb/personnel/actions-recemment-modifiees': { - properties: { collectivite_id: number }; + properties: CollectiviteDefaultProps; onglets: never; events: { tdb_modifier_filtres_actions_modifiees: {}; @@ -224,7 +230,7 @@ export interface TrackingPlan extends Record { /** Page TDB "avancement des fiches action" */ 'app/tdb/collectivite/fiche-actions-par-statut': { - properties: { collectivite_id: number }; + properties: CollectiviteDefaultProps; onglets: never; events: { tdb_modifier_filtres_avancement_actions: {}; @@ -233,7 +239,7 @@ export interface TrackingPlan extends Record { /** Page TDB "suivi des plans d'actions" */ 'app/tdb/collectivite/suivi-plan-actions': { - properties: { collectivite_id: number }; + properties: CollectiviteDefaultProps; onglets: never; events: { tdb_modifier_filtres_suivi_plan_actions: {}; @@ -242,7 +248,7 @@ export interface TrackingPlan extends Record { /** Page fiche action */ 'app/fiche-action': { - properties: { collectivite_id: number }; + properties: CollectiviteDefaultProps; onglets: never; events: { validation_modale_modifier_fa: {}; @@ -255,7 +261,7 @@ export interface TrackingPlan extends Record { /** Page toutes les fiches action */ 'app/toutes-les-fiches-action': { - properties: { collectivite_id: number }; + properties: CollectiviteDefaultProps; onglets: never; events: { filtres: { @@ -266,7 +272,7 @@ export interface TrackingPlan extends Record { /** Actions groupées sur les fiches actions */ 'app/actions-groupees-fiches-action': { - properties: { collectivite_id: number }; + properties: CollectiviteDefaultProps; onglets: never; events: { editer_personne_pilote_groupe: {}; @@ -280,7 +286,7 @@ export interface TrackingPlan extends Record { /** Page "créer un plan" */ 'app/creer-plan': { - properties: { collectivite_id: number }; + properties: CollectiviteDefaultProps; onglets: never; events: { cta_creer: {}; @@ -292,19 +298,18 @@ export interface TrackingPlan extends Record { /** Trajectoire SNBC territorialisée */ 'app/trajectoires/snbc': { - properties: { - collectivite_id: number; - } & ( - | { - statut: - | 'commune_non_supportee' - | 'deja_calcule' - | 'pret_a_calculer' - | 'donnees_manquantes'; - } - | { statut: 'error'; error?: string; statusCode?: number } - | { statut?: undefined } - ); + properties: CollectiviteDefaultProps & + ( + | { + statut: + | 'commune_non_supportee' + | 'deja_calcule' + | 'pret_a_calculer' + | 'donnees_manquantes'; + } + | { statut: 'error'; error?: string; statusCode?: number } + | { statut?: undefined } + ); onglets: 'emissions_ges' | 'consommations_finales'; events: { cta_lancer_calcul: { source: 'open_data' | 'collectivite' }; @@ -315,21 +320,21 @@ export interface TrackingPlan extends Record { /** Page "Gestion des membres de la collectivité" */ 'app/parametres/membres': { - properties: { collectivite_id: number }; + properties: CollectiviteDefaultProps; onglets: never; events: never; }; /** Page "journal de bord de la collectivité" */ 'app/parametres/historique': { - properties: { collectivite_id: number }; + properties: CollectiviteDefaultProps; onglets: never; events: never; }; /** Page "Bibliothèque de documents de la collectivité" */ 'app/parametres/bibliotheque': { - properties: { collectivite_id: number }; + properties: CollectiviteDefaultProps; onglets: never; events: never; };