PnX-SI / GeoNature

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

Formulaire OccTax: valeurs par défaut #280

Open TheoLechemia opened 6 years ago

TheoLechemia commented 6 years ago

Suite à la création d'une table des valeurs par défaut dans le schéma contact, j'ai implémenté les choses côté front pour pré-remplir certains champs. J'ai mis des valeurs par défaut uniquement sur les champs qui ne sont pas cachés pour ne pas entraîner d'erreurs. Donc ça concerne: Méthode d'observation => "vu" Etat biologique => "observé vivant" Objet du dénombrement => "individu". Je n'ai pas pré-rempli les champs pour laquelle la valeur par défaut est "ne sais pas" ou "inconnu". A discuter.

J'ai aussi mis en place le fait de récupérer les valeurs de l'occurrence précédente, pour les cas on on enchaîne pleins de relevés qui on la même technique d'observation, la même méthode d'observation etc... (voir https://github.com/PnX-SI/GeoNature/issues/279) Je l'ai mis en place pour les mêmes trois champs cité au dessus, mais pas pour les champs du dénombrement. A discuter aussi.

Par contre j'ai vu qu'en base les valeurs par défaut sont toujours remplis à partir de l’organisme 1: https://github.com/PnX-SI/GeoNature/blob/develop/data/modules/contact/contact.sql#L85 . Il faudrait gérer ça côté front si on met des valeurs par défaut en fonction de l'organisme

gildeluermoz commented 6 years ago

Je n'ai pas pré-rempli les champs pour laquelle la valeur par défaut est "ne sais pas" ou "inconnu". A discuter.

Je dirais que s'il y a une valeur par défaut qui va s'appliquer lors de l'écriture en base, il faut l'afficher à l'utilisateur afin qu'il soit informé de ce qui se passe réellement.

Par contre j'ai vu qu'en base les valeurs par défaut sont toujours remplis à partir de l’organisme 1: https://github.com/PnX-SI/GeoNature/blob/frontend-contact/data/modules/contact/contact.sql#L85 . Il faudrait gérer ça côté front si on met des valeurs par défaut en fonction de l'organisme

Il faut améliorer le comportement des valeurs par défaut en donnant la possibilité de définir des valeurs pour tous les organismes. Par exemple, si id_organism est null alors on l'applique par défaut à tous les organismes, sauf si une autre valeur existe pour l'organisme (et pour ce paramètre). Pour cela il faut modifier la base en supprimant le NOT NULL de la FK sur pr_contact.defaults_nomenclatures_value.id_organism et en modifiant la fonction pr_contact.get_default_nomenclature_value(myidtype integer, myidorganism integer)

gildeluermoz commented 6 years ago

Shit ! pr_contact.defaults_nomenclatures_value.id_organism fait partie de la clé primaire, on ne peut pas supprimer le NOT NULL! A creuser

gildeluermoz commented 6 years ago

Un organisme 0 = tous les organismes ?

camillemonchicourt commented 6 years ago

Ouais 0 c'est bien et c'est mieux qu'un NOT NULL je dirai.

D'accord aussi sur le fait de mettre les valeurs par defaut pour plus de champs car c fait en base de toute façon, ça permet de le rendre lisible.

Pas tres convaincu des verrous. Soit on implémente la recup de la saisie precedente soit non selon moi.

gildeluermoz commented 6 years ago

j'aime pas les comportements automatiques que l'utilisateur ne va pas forcement voir. C'est trop ambigu. Dans certains cas tu as des valeurs par défaut définies dans la base et dans d'autres l'utilisateur modifie ce comportement par défaut, sans le savoir, pour un cas et ça va s'appliquer sur le suivant à la place de la valeur par défaut habituelle et dont il a l'habitude. C'est source d'erreur. Le verrou correspond à une action définie, correspondant à une fonctionnalité qui est bien plus claire.

camillemonchicourt commented 6 years ago

Ouais je comprends l'ambiguïté en effet. Mais je crains la multiplication des actions, des boutons et la complexité que ça entraine. Mettons ça de côté du coup le temps d'avoir plus de retours sur les besoins.

camillemonchicourt commented 6 years ago

La valeur par défaut est définie dans chaque module. Pour OCCTAX c'est dans pr_contact.defaults_nomenclatures_value. Elle peut être définie pour chaque type de nomenclature ainsi que par organisme, règne et/ou group2inpn. Si organisme = 0 alors la valeur par défaut s'applique à tous les organismes. Idem pour les règnes et group2inpn La fonction pr_contact.get_default_nomenclature_value permet de renvoyer l'id de la nomenclature par défaut. Ces valeurs par défaut sont aussi utilisés pour certains champs qui sont cachés (statut_observation, floutage, statut_validation...) mais ne sont donc pas modifiables par l'utilisateur.

Si l'utilisateur modifie une des nomenclatures pour un taxon, cela remet les valeurs par défaut pour le taxon suivant.

Pour le moment, on garde ce comportement et on met de côté pour savoir quel est le bon comportement à garder à terme.

camillemonchicourt commented 6 years ago

Il existe aussi une table globale de valeurs par défaut : ref_nomenclatures.defaults_nomenclatures_value. Elles peuvent être utiles pour les métadonnées par exemple mais à voir si une nomenclature a une valeur par défaut générale, mais pas de valeur par défaut dans le module, alors on pourrait utiliser la valeur par défaut générale dans le module.

camillemonchicourt commented 6 years ago

Reste à voir :