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 865ebc4 commit 48b59c1
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 48b59c1

Please sign in to comment.