Skip to content

Commit

Permalink
Raccorde le nouveau tableau des valeurs dans les pages Indicateur
Browse files Browse the repository at this point in the history
  • Loading branch information
marc-rutkowski committed Jan 16, 2025
1 parent 9436b51 commit 7aef208
Showing 1 changed file with 10 additions and 85 deletions.
Original file line number Diff line number Diff line change
@@ -1,13 +1,8 @@
import { transformeValeurs } from '@/app/app/pages/collectivite/Indicateurs/Indicateur/detail/transformeValeurs';
import { useIndicateurValeurs } from '@/app/app/pages/collectivite/Indicateurs/useIndicateurValeurs';
import { useCurrentCollectivite } from '@/app/core-logic/hooks/useCurrentCollectivite';
import { Tab, Tabs, useActiveTab } from '@/app/ui/shared/Tabs';
import { Alert, Checkbox, Tooltip } from '@/ui';
import { useEffect } from 'react';
import { Alert } from '@/ui';
import { SOURCE_COLLECTIVITE } from '../../constants';
import { IndicateurTable } from '../../table/indicateur-table';
import { TIndicateurDefinition } from '../../types';
import { IndicateurValuesTable } from './IndicateurValuesTable';
import { useToggleIndicateurConfidentiel } from './useToggleIndicateurConfidentiel';

// un message spécifique doit être affiché pour les indicateurs de la séquestration carbone
const ID_SEQUESTRATION = 'cae_63.';
Expand All @@ -20,69 +15,17 @@ export const IndicateurValuesTabs = ({
definition: TIndicateurDefinition;
importSource?: string;
}) => {
const { activeTab, onChangeTab } = useActiveTab();
const collectivite = useCurrentCollectivite();
const isReadonly =
!collectivite ||
collectivite.readonly ||
(!!importSource && importSource !== SOURCE_COLLECTIVITE);
const { mutate: toggleIndicateurConfidentiel, isLoading } =
useToggleIndicateurConfidentiel(definition);
const { confidentiel } = definition;

const { data: valeursBrutes } = useIndicateurValeurs({
id: definition.id,
importSource,
});
const { objectifs, resultats } = transformeValeurs(
valeursBrutes,
importSource
);

// force l'affichage de l'onglet Résultats sil il n'y a pas d'onglet Objectifs
// quand on passe d'une source de données à une autre
const avecResultats =
!importSource ||
importSource === SOURCE_COLLECTIVITE ||
resultats?.length > 0;
const avecObjectifs =
!importSource ||
importSource === SOURCE_COLLECTIVITE ||
objectifs?.length > 0;

useEffect(() => {
if (activeTab === 1 && !(avecObjectifs && avecResultats)) {
onChangeTab(0);
}
}, [avecObjectifs, avecResultats, activeTab]);

return (
<>
{!isReadonly && (
<>
<div className="flex my-10">
<Tooltip
label="Si le mode privé est activé, le résultat le plus récent n'est plus
consultable par les personnes n’étant pas membres de votre
collectivité. Seuls les autres résultats restent accessibles pour
tous les utilisateurs et la valeur privée reste consultable par
l’ADEME et le service support de la plateforme."
>
<div>
{' '}
{/** Permet de prendre en compte la checkbox + le label (autrement uniquement la checkbox trigger le tooltip) */}
<Checkbox
variant="switch"
label="Résultat récent en mode privé"
checked={confidentiel}
disabled={isLoading}
onChange={() =>
toggleIndicateurConfidentiel(confidentiel || false)
}
/>
</div>
</Tooltip>
</div>
{definition.identifiant?.startsWith(ID_SEQUESTRATION) && (
<Alert
className="mb-8"
Expand All @@ -92,32 +35,14 @@ export const IndicateurValuesTabs = ({
)}
</>
)}
<Tabs defaultActiveTab={activeTab} onChange={onChangeTab}>
{avecResultats ? (
<Tab label="Résultats" icon="checkbox">
<IndicateurValuesTable
definition={definition}
type="resultat"
valeurs={resultats}
valeursBrutes={valeursBrutes!}
isReadonly={isReadonly}
importSource={importSource}
confidentiel={confidentiel}
/>
</Tab>
) : null}
{avecObjectifs ? (
<Tab label="Objectifs" icon="calendar-2">
<IndicateurValuesTable
definition={definition}
type="objectif"
valeurs={objectifs}
valeursBrutes={valeursBrutes!}
isReadonly={isReadonly}
/>
</Tab>
) : null}
</Tabs>
{!!collectivite?.collectivite_id && (
<IndicateurTable
collectiviteId={collectivite.collectivite_id}
definition={definition}
confidentiel={confidentiel}
readonly={!collectivite || collectivite.readonly}
/>
)}
</>
);
};

0 comments on commit 7aef208

Please sign in to comment.