Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FESP_FRONTEND_8 - Ajout des "statuts du taxon" (version sans picto) #3187

Open
edelclaux opened this issue Sep 13, 2024 · 30 comments
Open

FESP_FRONTEND_8 - Ajout des "statuts du taxon" (version sans picto) #3187

edelclaux opened this issue Sep 13, 2024 · 30 comments

Comments

@edelclaux
Copy link
Contributor

Epic: "Fiche espèce" #2981

Issue liée à l'issue PnX-SI/TaxHub#510

On souhaitait initialement ajouter l'information des status du taxon, via un pictogramme associé.
La notion de pictogramme a soulevé quelques points techniques.

On propose ici d'intégrer un affichage textuel des statuts, simple et rapide, sans pictogramme.

@edelclaux edelclaux converted this from a draft issue Sep 13, 2024
@edelclaux
Copy link
Contributor Author

edelclaux commented Sep 13, 2024

On propose d'ajouter:

  • des badges dans l'entête
  • un onglet taxonomie avec des informations plus complètes

Badges:
Image

Onglet:
L'onglet taxonomie reprendra les informations de l'onglet taxonomie de la fiche observation. On évitera évidemment la duplication de code en réutilisant le même composant.
Quelque chose comme ça:
Image

@camillemonchicourt
Copy link
Member

OK, attention les statuts peuvent être régionaux rt donc dépendre de l'instance ou de la localisation des observations.

@edelclaux
Copy link
Contributor Author

Dans le cadre la fiche espèce, est-ce que la liste des statuts du taxon doit être restreint par les observations ?

@camillemonchicourt
Copy link
Member

Dans le cadre la fiche espèce, est-ce que la liste des statuts du taxon doit être restreint par les observations ?

Bonne question. 🤔

@edelclaux
Copy link
Contributor Author

Mon avis, c'est qu'on affiche toutes les informations de statuts sur le taxon. C'est de l'info plutôt générique.

Mais mon avis "métier", ça vaut que ça vaut.

@camillemonchicourt
Copy link
Member

Oui je pense aussi.

Mais je vois pas trop comment on peut gérer les infos territorialisées car je connais pas assez la BDD sur cet aspect.

@edelclaux
Copy link
Contributor Author

Ca se gère assez bien en fait.

La table bdc_statut_text a un champ enabled.
Ce champs enabled est utilisé pour filtrer les données à la génération de la vue v_bdc_statut

Cette configuration des champs enabled est il me semble à la discrétion de l'admin, qui peut s'appuyer sur bdc_statut_cor_text_area pour faire un filtre géographique.

Les infos de taxonomie d'un cd_ref sont issues de cette vue. Donc on retombe sur nos pattes comme il faut.

@camillemonchicourt
Copy link
Member

En effet OK pour moi.
D'autant plus qu'il y a une commande côté TH pour désactiver les textes en dehors d'une liste de départements fournis en paramètre de la commande.

@edelclaux
Copy link
Contributor Author

J'ai fait une version presque ok, avec des badges qui s'appuient sur les couleurs IUCN, que j'ai trouvées la https://github.com/timcashion/IUCNpalette?tab=readme-ov-file
image.

Pour les textes (court et long, j'ai un peu improvisé. Est-ce que ça va semble ok ?
Je suppose que non :)

Pour pouvoir ajuster, voici un exemple d'info pour un taxon donné:

J'ai opté à l'instinct pour:
badge:

  • si true/false: ${status.cd_type_statut} ${text.cd_sig}
  • si valeur: ${status.cd_type_statut} ${text.cd_sig}: ${value.code_statut}

infobulle: ${status.statut} ${text.cd_sig} ${text.full_citation}: ${value.display}

"statut": {
   "cd_type_statut": "LRE", 
   "display": "Liste rouge europeenne - LRE",
   "​lb_type_statut": "Liste rouge européenne",
   "regroupement_type": "Liste rouge"
}
"text": {
    "cd_doc": 434629,
    "cd_iso3166_1": "",
    "cd_iso3166_2": "",
    "cd_sig": "EUROPE",
    "cd_st_text": null,
    "cd_type_statut": "LRE",
    "doc_url": null,
    "enable": true,
    "full_citation": "IUCN. 2023. <em>The European IUCN Red List of Threatened Species. Version 2023-1</em>. https://www.iucnredlist.org/regions/europe. Accessed on 8 january 2024.",
    "id_text": 87,
    "lb_adm_tr": "Europe",
    "niveau_admin": ""
}
"value": {
    "cd_nom": 67111,
    "cd_ref": 67111,
    "code_statut": "LC",
    "display": "LC - Préoccupation mineure",
    "id": 317009,
    "id_value": 165,
    "id_value_text": 934,
    "label_statut": "Préoccupation mineure",
    "rq_statut": ""
}

@camillemonchicourt
Copy link
Member

OK OK. Pour les couleurs, je ne sais pas si c'est assez stable pour les avoir directement dans le code, car j'imagine que les types peuvent évoluer et bouger.
Donc j'aurai plutôt opter pour gérer ça dans la BDD, et pas directement dans le code en dur. Mais à voir si ça suffit, si c'est stable et donc viable. Je n'ai pas d'avis tranché sur le sujet, ne le connaissant pas assez.

Pour les textes courts, je les trouve un peu long, mais là aussi je ne connais pas bien le sujet et le contenu.
Je vais voir si on peut jeter un œil à tout ça prochainement avec @amandine-sahl qui connait mieux le sujet.

@edelclaux
Copy link
Contributor Author

  • couleurs: j'ai fait un truc un peu bourrin. Mon objectif, c'est avant tout d'avoir un truc assez simple, indépendant des problématiques de synchro avec TaxHub décrit dans l'issue PnX-SI/TaxHub/#559.
    Si la colormap est un peu olé olé, on l'enlève de cette PR et on décale dans l'autre !

  • texte: je suis tout ouïe :)

@OphelieRicci
Copy link

Comme convenu, voilà la charte des codes couleurs pour les statuts Liste rouge, définis internationalement par l'Union internationale pour la conservation de la nature (UICN) :

https://uicn.fr/wp-content/uploads/2018/04/guide-pratique-listes-rouges-regionales-especes-menacees.pdf
Voir page 55

Image

Je vous les ai converties en hexadécimal :
EX : #000000
EW : #3d1951
RE : #5a1a63
CR : #d3001b
EN : #fbbf00
VU : #ffed00
NT : #fbf2ca
LC : #78b74a
DD : #d3d4d5

L'ensemble des statuts :

Image

Du coup je ne sais pas pourquoi il n'y a pas le NA et le NE dans leurs codes couleurs, les voilà en pipetant (bon pas pour le blanc quand même XD) :
NA : #919291
NE : #ffffff

Voilà un exemple de déclinaison de ces couleurs sur l'INPN :
Image

Les autres statuts présents dans GeoNat'îdF :
protection (nationale, régionale, départementale), directives européennes (DO = directive Oiseaux, DH = Directive Habitats), conventions internationales (Convention de Berne, Convention de Bonn), déterminantes de Znieff, statuts de rareté, espèces à Plans Nationaux et Régionaux d'action (PNA, PRA), espèces SCAP (Scap nationale, Scap régionale), Réglementation (ex : introduits envahissants)
n'ont pas de couleurs particulières.

Ici une page des statuts qui remontent dans GeoNat'îdF pour exemple :
https://geonature.arb-idf.fr/node/208
Mais juste pour exemple étant donné qu'il faut qu'on reste génériques au maximum

D'après ce que tu nous as montré Etienne, on laisse le choix dans le fichier de config à l'admin d'afficher ce qu'il veut (sur notre instance on activera statuts Listes rouge, statuts de protection, statuts de rareté et déterminant znieff je pense)

Merci bcp :) !

@edelclaux
Copy link
Contributor Author

Suite aux informations d'Ophélie, j'ai ajusté la colormap j'avais réglé initialement.

Je mets à jour la description également !

image

@edelclaux
Copy link
Contributor Author

Comme convenu, voilà la charte des codes couleurs pour les statuts Liste rouge, définis internationalement par l'Union internationale pour la conservation de la nature (UICN) :

https://uicn.fr/wp-content/uploads/2018/04/guide-pratique-listes-rouges-regionales-especes-menacees.pdf Voir page 55

Image

Je vous les ai converties en hexadécimal : EX : #000000 EW : #3d1951 RE : #5a1a63 CR : #d3001b EN : #fbbf00 VU : #ffed00 NT : #fbf2ca LC : #78b74a DD : #d3d4d5

L'ensemble des statuts :

Image

Du coup je ne sais pas pourquoi il n'y a pas le NA et le NE dans leurs codes couleurs, les voilà en pipetant (bon pas pour le blanc quand même XD) : NA : #919291 NE : #ffffff

Voilà un exemple de déclinaison de ces couleurs sur l'INPN : Image

Les autres statuts présents dans GeoNat'îdF : protection (nationale, régionale, départementale), directives européennes (DO = directive Oiseaux, DH = Directive Habitats), conventions internationales (Convention de Berne, Convention de Bonn), déterminantes de Znieff, statuts de rareté, espèces à Plans Nationaux et Régionaux d'action (PNA, PRA), espèces SCAP (Scap nationale, Scap régionale), Réglementation (ex : introduits envahissants) n'ont pas de couleurs particulières.

Ici une page des statuts qui remontent dans GeoNat'îdF pour exemple : https://geonature.arb-idf.fr/node/208 Mais juste pour exemple étant donné qu'il faut qu'on reste génériques au maximum

D'après ce que tu nous as montré Etienne, on laisse le choix dans le fichier de config à l'admin d'afficher ce qu'il veut (sur notre instance on activera statuts Listes rouge, statuts de protection, statuts de rareté et déterminant znieff je pense)

Merci bcp :) !

@OphelieRicci
Merci pour les infos !
Est-ce que tu as une opinion sur le contenu du texte des badges / de la tooltip des badges ?

#3187 (comment)

@camillemonchicourt
Copy link
Member

OK, on a regardé ça avec @amandine-sahl.

Le premier point global est en effet qu'il est dommage de définir des éléments liés aux statuts de protection (ici les couleurs des statuts UICN) au niveau de GeoNature alors que tout ce qui concerne la taxonomie et ses statuts est géré et centralisé au niveau de TaxHub.
Si le fait de passer ces éléments dans la BDD de TaxHub peut être un peu complexe, on aurait pu imaginer une première solution intermédiaire plus simple : créer un fichier JSON au niveau de TaxHub listant les valeurs des statuts de liste rouge et mettre en place une route de l'API TaxHub renvoyant l'éventuelle couleur de chaque valeur de statut.
GeoNature ne devrait pas avoir à gérer des infos liées aux statuts de protection, d'autant plus que ça serait potentiellement utile à d'autres outils, comme on le voit avec GeoNature-atlas : PnX-SI/GeoNature-atlas#563

Si il faut faire simple et aller vite, la solution proposée intégrée à GeoNature est acceptable, mais non satisfaisante.

Concernant les statuts, il y a 3 niveaux d'infos :

  • Le type de statut
  • Le texte du statut
  • La valeur du statut

Pour l'affichage, il nous semble pertinent de n'afficher que "status.cd_type_statut : value.code_statut".
Le cdsig est peu lisible et apporte de la confusion.

Pour l'info bulle, on proposerait plutôt : {status.statut} : ${value.display} - ${text.full_citation}.

A noter qu'un taxon peut avoir beaucoup de statuts : https://inpn.mnhn.fr/espece/cd_nom/99165/tab/statut

SELECT *
FROM taxonomie.v_bdc_status vbs 
WHERE cd_nom = 99165

@edelclaux
Copy link
Contributor Author

Merci de ta réponse. J'intègre les modifications sur les textes.

Pour la symbologie des statuts, on est tout à fait entièrement d'accord, la bonne solution est l'intégration à taxhub.

L'idée de cette issue / PR ici de proposer une solution disponible immédiatement, en attendant de pouvoir faire évoluer taxhub dans ce sens. La, c'est un petit serpent qui se mord la queue :)

  • Si on remplace la symbologie "en fonction du statut", par une symbologie neutre, est-ce que ce serait acceptable côté GN ?
  • Sinon, est-ce que vous voulez vraiment servir une symbologie statique côté backend ? Quitte à la figer dans un json, pourquoi ne pas l'intégrer au processus de maj de taxhub, et le rajouter à une colonne de bdc_statut_XXX à la réécriture des tables du schéma ?

On relance la question centrale:

Quelle est la bonne manière d'intégrer une donnée à taxhub / colonne à bdc_statut_XXX qui permette d’être robuste aux évolutions de taxref ? Aujourd'hui, il semble que tout est supprimé, puis rechargé aux mises à jour.

Est-ce que vous faites évoluer de manière impactante le procédé de mise à jour de taxref avec taxhub v2 ?

@camillemonchicourt
Copy link
Member

Je ne vois pas de soucis d'intégrer ça dans TaxHub. Mais OK si c'est prévu dans un second temps.

Pour la MAJ de Taxref, c'est pas mal simplifié dans la v2 avec la suppression de la table bib_noms : PnX-SI/TaxHub#513.

La piste d'un JSON côté TaxHub est pour faire quelque chose de simple pour commencer. Mais le faire directement en BDD côté TaxHub est encore mieux en effet.
Je ne connais pas assez la BDD de TaxHub pour répondre en détail où et comment il faudrait stocker cela. Avec la vigilance que certaines données sont supprimées et recrées au niveau BDC statut à chaque MAJ de Taxref. La table des types de statut au moins, mais c'est pas celle-ci qui serait utile pour stocker les couleurs des valeurs de statuts. Je ne sais même pas si une table des valeurs de statut existe, il faudrait alors la créer.

@edelclaux
Copy link
Contributor Author

edelclaux commented Sep 25, 2024

Ok, j'étais timide avec taxhub et tous les mouvements de ces derniers temps :)

Je pars sur la version efficace JSON, à faire évoluer après la release de taxhub.

J'ai intégré la modif sur les textes. Sur la tooltip, j'ai supposé que {status.statut} voulait {status.cd_type_statut}. C'est ptet pas le cas :)

image

Le dev côté taxhub est pas mal commencé. Il reste à savoir comment est stocké le fichier de symbologie json. J'ai pris contact avec @amandine-sahl pour avoir son avis sur la bonne façon de le gérer

@camillemonchicourt
Copy link
Member

OK super.

Sur la tooltip, j'ai supposé que {status.statut} voulait {status.cd_type_statut}

Oui erreur de ma part.

Et en effet quand un statut a pour valeur TRUE, alors il ne faut afficher que le type de statut, pas sa valeur.

@edelclaux
Copy link
Contributor Author

edelclaux commented Sep 26, 2024

Mis à jour.

image

Il manque la maj de la version taxhub quand le merge de la PR PnX-SI/TaxHub#562 sera réalisée

Ca n'impactera pas le code de la PR associée à cette issue (#3191), qui peut quand même être réalisée !

@camillemonchicourt
Copy link
Member

Je pense à un truc peut-être trop tard, mais est-ce que ce composant des badges est assez factorisé pour être remobilisé ailleurs ? 😇
On pourrait le remonter sur les fiches observations dans la synthèse, et peut-être dans d'autres modules, genre Monitoring ou autres.

@edelclaux
Copy link
Contributor Author

ça peut se factorier oui. Je sais où ranger ce genre de composant atomique réutilisable.

@edelclaux
Copy link
Contributor Author

edelclaux commented Sep 26, 2024

je ne sais PAS :D

@edelclaux
Copy link
Contributor Author

edelclaux commented Sep 26, 2024

Je l'ai mis dans GN2CommonModule/others/badge, et le sélecteur gn-badge
"https://github.com/PnX-SI/GeoNature/blob/ed91512956c02f585f3364401aba9363d64f2bbe/frontend/src/app/GN2CommonModule/others/badge/badge.component.ts"

Je suis personnellement pas fan de "others". Ca sent pas la grande organisation ^^

@Pierre-Narcisi Qu'est-ce que tu en penses ?

@camillemonchicourt
Copy link
Member

OK c'est cool, on le déplacera si besoin.
Je le nommerai plutôt status-badges pour être plus explicite.

@edelclaux
Copy link
Contributor Author

edelclaux commented Sep 27, 2024

J'ai fait un composant badge un peu atomique, indépendant de la notion de status.

    <gn-badge
      tooltip="ceci est la tooltip"
      text="ceci est le texte"
      [symbology]="{ color: '#ff5733' }"
    />

image

J'ai l'impression que tu voulais autre chose :) Dispo pour en discuter si jamais !

@camillemonchicourt
Copy link
Member

Ah ouais OK, j'imaginai un composant plus complet qui gère directement tous le badge des statuts et qu'on peut appeler d'autre part et qui colle directement les badges avec leur style, l'appel de l'API, les statuts du taxons mis en forme, etc...
Mais j'y connais rien. C'est peut-être pas pertinent ou possible.

@edelclaux
Copy link
Contributor Author

Ok. Je viens de rajouter un composant gn-status-badges, plus métier, qui utilise le composant créé plus tôt.
Il permet, à partir d'un taxon donné en tant qu'input, de récupérer la symbologie, faire les petits calculs, et afficher les badges de status.

image

Example d'utilisation:
image

Est-ce qu'il faut préfixeer les composants par gn ou par pnx ?

@camillemonchicourt
Copy link
Member

OK super.
Je suis pas fan de ces composants qu'on prefixait initialement pnx.
Pour moi ça n'a plus de sens et je préfère clairement gn.

@edelclaux
Copy link
Contributor Author

Ok. pnx c'est le passé, gn c'est l'avenir :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: En revue
Development

No branches or pull requests

3 participants