PnX-SI / GeoNature

Application de saisie et de synthèse des observations faune et flore
GNU General Public License v3.0
103 stars 102 forks source link

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

Open edelclaux opened 1 month ago

edelclaux commented 1 month ago

Epic: "Fiche espèce" #2981

Issue liée à l'issue https://github.com/PnX-SI/TaxHub/issues/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 commented 1 month ago

On propose d'ajouter:

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 commented 1 month ago

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

edelclaux commented 1 month ago

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

camillemonchicourt commented 1 month ago

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 commented 1 month ago

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 commented 1 month ago

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 commented 1 month ago

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 commented 1 month ago

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 commented 1 month ago

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:

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 commented 1 month ago

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 commented 1 month ago
OphelieRicci commented 1 month ago

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 commented 3 weeks ago

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

Je mets à jour la description également !

image

edelclaux commented 3 weeks ago

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 ?

https://github.com/PnX-SI/GeoNature/issues/3187#issuecomment-2356428649

camillemonchicourt commented 3 weeks ago

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 : https://github.com/PnX-SI/GeoNature-atlas/pull/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 :

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 commented 3 weeks ago

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 :)

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 commented 3 weeks ago

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 : https://github.com/PnX-SI/TaxHub/pull/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 commented 3 weeks ago

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 commented 3 weeks ago

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 commented 3 weeks ago

Mis à jour.

image

Il manque la maj de la version taxhub quand le merge de la PR https://github.com/PnX-SI/TaxHub/pull/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 commented 3 weeks ago

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 commented 3 weeks ago

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

edelclaux commented 3 weeks ago

je ne sais PAS :D

edelclaux commented 3 weeks ago

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 commented 3 weeks ago

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

edelclaux commented 3 weeks ago

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 commented 3 weeks ago

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 commented 3 weeks ago

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 commented 3 weeks ago

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 commented 3 weeks ago

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