assemblee-virtuelle / archipelago

Fostering interconnections between communities by creating synergies between their platforms
Apache License 2.0
14 stars 6 forks source link

Le type et le statut ne s'affichent pas dans le Edit (orgas, projets...) #193

Open fluidlog opened 1 month ago

fluidlog commented 1 month ago

Décrivez le bug Il est possible d'affecter un type et un statut à une organisation

image

Mais lorsqu'on revient dessus, l'input n'affiche pas ce qui a été retenu. image

Au niveau du show, ça fonctionne. image

Etapes pour reproduire

  1. Aller sur https://archipel.assemblee-virtuelle.org/
  2. Editez l'organisation Assemblée virtuelle par exemple
  3. observer que la value des input est vide
mguihal commented 1 month ago

https://archipel.assemblee-virtuelle.org/ n'a pas été mis-à-jour sur les dernières versions d'Archipelago.

As-tu observé également ce bug sur un Archipelago à jour ?

fluidlog commented 1 month ago

Je viens de tester sur le serveur du low-tech lab (en v2.1.0) https://archipel.lowtechlab.org/Organization/https%3A%2F%2Fdata.archipel.lowtechlab.org%2Forganizations%2Flow-tech-lab

Dans le show image

Dans le edit image

Attention : le problème apparait partout où on utilise le statut et le type (projet par exemple). Je modifie donc le titre.

SlyRock commented 1 week ago

on à des ReferenceInputdu package @semapps/input-components pour le statut et le type.

Le backend renvoie la donnée référencée sous forme de tableau et le composant ne gère pas ce cas.

Il semble que ce comportement soit apparu récemment…

Le composant en question est une surcharge du composant react-admin du même nom, qui introduit une fonction de formatage pour gérer des références sous formes d'objet et en extraire l'id. Le cas de la donnée sous forme d'id dans un tableau n'est pas pris en compte…

SlyRock commented 1 week ago

A débattre : Faut-il intervenir au niveau du dataProvider pour scalariser la donnée dès son extraction du backend (et la remettre en tableau à sa sortie) ou bien faut-il simplement traiter ce cas dans la fonction de formatage ?

SlyRock commented 1 week ago

Pour reproduire au plus simple : Dans une instance Archipelago :

  1. Créer un type de la classe OrganizationType
  2. Créer une Organization et lui affecter ce type

Lorsque l'on vient editer l'organization l'input n'est pas peuplé et on a un message d'erreur dans la console qui dit que la valeur est undefined

SlyRock commented 1 week ago

Proposition de code pour la fonction format si on souhaite traiter le problème au niveau front : src/frontend/packages/input-components/src/ReferenceInput.js

const format = (value) => {
  // If there is no value return an empty string
  if (!value) return '';
  // If the value is an array extract first entry
  if (Array.isArray(value)){
    value = value[0];
  }
  // If the value is an object with an @id field, return the uri
 return typeof value === 'object' ? value.id || value['@id'] : value;
};