Skip to content

Commit

Permalink
fix(trajectoire): une utilisateur en lecture, support, ademe peut lan…
Browse files Browse the repository at this point in the history
…cer le calcul de la trajectoire automatique. il ne peut pas renseigner des valeurs d'indicateur manquants.
  • Loading branch information
dthib committed Jan 7, 2025
1 parent bd1824d commit 47a3d11
Show file tree
Hide file tree
Showing 5 changed files with 90 additions and 27 deletions.
Original file line number Diff line number Diff line change
@@ -1,24 +1,42 @@
import { makeCollectiviteIndicateursUrl } from '@/app/app/paths';
import { Button, Card } from '@/ui';

interface ComparezLaTrajectoireProps {
collectiviteId: number;
identifiantReferentiel: string;
readonly?: boolean;
}

/** Affiche l'encadré "Comparez la trajectoire SNBC à vos objectifs et vos résultats" */
export const ComparezLaTrajectoire = ({
collectiviteId,
identifiantReferentiel,
}: {
collectiviteId: number;
identifiantReferentiel: string;
}) => {
readonly = false,
}: ComparezLaTrajectoireProps) => {
return (
<Card>
<h5>Comparez la trajectoire SNBC à vos objectifs et vos résultats</h5>
<p className="text-sm font-normal">
Pour cela, il faut d&apos;abord{' '}
<b>compléter vos objectifs et vos résultats dans vos Indicateurs</b>.
Vous avez le choix d&apos;appliquer les données disponibles en open
data, ou bien de renseigner vos propres données.
</p>
{readonly ? (
<p className="text-sm font-normal">
Pour cela, il faut d&apos;abord{' '}
<b>
faire compléter vos objectifs et vos résultats dans vos Indicateurs
par un utilisateur en Edition ou Admin sur le profil de cette
collectivité
</b>
. L&apos;utilisateur pourra appliquer les données disponibles en open
data, ou bien renseigner ses propres données.
</p>
) : (
<p className="text-sm font-normal">
Pour cela, il faut d&apos;abord{' '}
<b>compléter vos objectifs et vos résultats dans vos Indicateurs</b>.
Vous avez le choix d&apos;appliquer les données disponibles en open
data, ou bien de renseigner vos propres données.
</p>
)}
<Button
disabled={readonly}
href={makeCollectiviteIndicateursUrl({
collectiviteId,
indicateurView: 'cae',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,23 @@
import { Alert, Button, Modal } from '@/ui';
import { DonneesCollectivite } from './DonneesCollectivite/DonneesCollectivite';

interface DonneesPartiellementDisponibles {
title?: string;
description?: string;
disabled?: boolean;
}

const DEFAULT_TITLE =
'Voici un premier calcul de votre trajectoire SNBC territorialisée, avec les données disponibles !';
const DEFAULT_DESC =
"Il manque des données pour certains secteurs : nous vous les mettrons à disposition prochainement. En attendant, complétez les données manquantes pour l'année 2015 afin de finaliser le calcul.";
"Il manque des données pour certains secteurs : complétez les données manquantes pour l'année 2015 afin de finaliser le calcul.";

/** Affiche l'avertissement "Données partiellement disponibles" */
export const DonneesPartiellementDisponibles = ({
title = DEFAULT_TITLE,
description = DEFAULT_DESC,
}: {
title?: string;
description?: string;
}) => {
disabled = false,
}: DonneesPartiellementDisponibles) => {
return (
<Alert
state="warning"
Expand All @@ -24,7 +28,9 @@ export const DonneesPartiellementDisponibles = ({
size="xl"
render={(props) => <DonneesCollectivite modalProps={props} />}
>
<Button size="sm">Compléter les données</Button>
<Button disabled={disabled} size="sm">
Compléter les données
</Button>
</Modal>
}
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import SpinnerLoader from '@/app/ui/shared/SpinnerLoader';
import { Alert, Button, Card, Modal, TrackPageView } from '@/ui';
import { useEffect } from 'react';
import { useQueryClient } from 'react-query';
import { useCurrentCollectivite } from '../../../../core-logic/hooks/useCurrentCollectivite';
import { CommuneNonSupportee } from './CommuneNonSupportee';
import { HELPDESK_URL } from './constants';
import { ReactComponent as DbErrorPicto } from './db-error.svg';
Expand Down Expand Up @@ -63,23 +64,45 @@ const TrajectoireContent = (props: {
* ne sont pas disponibles.
*/
const DonneesNonDispo = () => {
const collectivite = useCurrentCollectivite();

return (
<Card className="flex items-center my-16">
<DbErrorPicto />
<h2>Données disponibles insuffisantes pour le calcul</h2>
<p className="font-normal text-lg text-center">
Nous ne disposons pas encore des données suffisantes pour permettre le
calcul automatique de la trajectoire SNBC territorialisée de votre
collectivité. Vous pouvez néanmoins lancer un calcul en complétant les
données disponibles en open data avec vos propres données. Vous pourrez
ainsi visualiser facilement votre trajectoire SNBC territorialisée et la
comparer aux objectifs fixés et résultats observés.
</p>
{collectivite?.readonly ? (
<p className="font-normal text-lg text-center">
Nous ne disposons pas encore des données suffisantes pour permettre le
calcul automatique de la trajectoire SNBC territorialisé de votre
collectivité.{' '}
<b>
Un utilisateur en Edition ou Admin sur le profil de cette
collectivité
</b>{' '}
peut néanmoins lancer un calcul en complétant les données disponibles
en open data avec celles disponibles au sein de la collectivité. Vous
pourrez ensuite visualiser facilement votre trajectoire SNBC
territorialisée et la comparer aux objectifs fixés et résultats
observés.
</p>
) : (
<p className="font-normal text-lg text-center">
Nous ne disposons pas encore des données suffisantes pour permettre le
calcul automatique de la trajectoire SNBC territorialisée de votre
collectivité. Vous pouvez néanmoins lancer un calcul en complétant les
données disponibles en open data avec vos propres données. Vous
pourrez ainsi visualiser facilement votre trajectoire SNBC
territorialisée et la comparer aux objectifs fixés et résultats
observés.
</p>
)}
<Modal
size="xl"
render={(props) => <DonneesCollectivite modalProps={props} />}
>
<Button>Compléter mes données</Button>
<Button disabled={!collectivite || collectivite.readonly}>
Compléter mes données
</Button>
</Modal>
</Card>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,14 @@ export const TrajectoireCalculee = () => {
{
/** Avertissement "Données partiellement disponibles" */
!secteur && donneesSectoriellesIncompletes && (
<DonneesPartiellementDisponibles />
<DonneesPartiellementDisponibles
disabled={!collectivite || collectivite.readonly}
description={
!collectivite || collectivite.readonly
? "Il manque des données pour certains secteurs : un utilisateur en Edition ou Admin sur le profil de cette collectivité peut compléter les données manquantes pour l'année 2015 afin de finaliser le calcul"
: undefined
}
/>
)
}
{
Expand Down Expand Up @@ -187,7 +194,12 @@ export const TrajectoireCalculee = () => {
secteur && !valeursSecteur && (
<DonneesPartiellementDisponibles
title="Données non disponibles"
description="Nous ne disposons pas encore des données nécessaires pour calculer la trajectoire SNBC territorialisée de ce secteur. Nous y travaillons activement et espérons vous fournir ces informations très prochainement. En attendant, vous pouvez calculer dès maintenant votre trajectoire pour l’ensemble des secteurs en complétant les données déjà disponibles."
description={
!collectivite || collectivite.readonly
? 'Nous ne disposons pas encore des données nécessaires pour calculer la trajectoire SNBC territorialisée de ce secteur. Nous y travaillons activement et espérons vous fournir ces informations très prochainement. En attendant, un utilisateur en Edition ou Admin sur le profil de cette collectivité peut compléter les données déjà disponibles pour calculer la trajectoire pour l’ensemble des secteurs.'
: 'Nous ne disposons pas encore des données nécessaires pour calculer la trajectoire SNBC territorialisée de ce secteur. Nous y travaillons activement et espérons vous fournir ces informations très prochainement. En attendant, vous pouvez calculer dès maintenant votre trajectoire pour l’ensemble des secteurs en complétant les données déjà disponibles.'
}
disabled={!collectivite || collectivite.readonly}
/>
)
}
Expand All @@ -201,6 +213,7 @@ export const TrajectoireCalculee = () => {
<ComparezLaTrajectoire
collectiviteId={collectiviteId}
identifiantReferentiel={identifiant}
readonly={!collectivite || collectivite.readonly}
/>
)}
{secteur && <Methodologie secteur={secteur} />}
Expand Down
3 changes: 3 additions & 0 deletions backend/src/auth/authorizations/permission.models.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,14 @@ export const Permission: Record<Role, PermissionOperation[]> = {
PermissionOperation.INDICATEURS_VISITE,
PermissionOperation.INDICATEURS_LECTURE,
PermissionOperation.INDICATEURS_TRAJECTOIRES_LECTURE,
PermissionOperation.INDICATEURS_TRAJECTOIRES_EDITION,
],
[Role.ADEME]: [
PermissionOperation.COLLECTIVITES_VISITE,
PermissionOperation.PLANS_FICHES_VISITE,
PermissionOperation.INDICATEURS_VISITE,
PermissionOperation.INDICATEURS_TRAJECTOIRES_LECTURE,
PermissionOperation.INDICATEURS_TRAJECTOIRES_EDITION,
],
[Role.LECTURE]: [
PermissionOperation.COLLECTIVITES_VISITE,
Expand All @@ -33,6 +35,7 @@ export const Permission: Record<Role, PermissionOperation[]> = {
PermissionOperation.INDICATEURS_VISITE,
PermissionOperation.INDICATEURS_LECTURE,
PermissionOperation.INDICATEURS_TRAJECTOIRES_LECTURE,
PermissionOperation.INDICATEURS_TRAJECTOIRES_EDITION,
],
[Role.EDITION]: [
PermissionOperation.COLLECTIVITES_VISITE,
Expand Down

0 comments on commit 47a3d11

Please sign in to comment.