Mauvais rendu d'un tableau croisé sur un boolean avec des valeurs null

Mauvais rendu d'un tableau croisé sur un boolean avec des valeurs null
0
Tags: #<Tag:0x00007fec61caca60>

Bonjour,
je souhaite afficher un tableau croisé sur un boolean.
Mon attribut est un boolean non obligatoire. J’ai donc trois valeurs possibles : oui, non et rien.
Dans le tableau croisé, la valeur rien est remplacé par un non, ce qui entraîne une certaine confusion. Notre utilisateur souhaite faire la différence entre un champ jamais initialisé et un vrai non.
image

[Platform]
Status=OK
Version=4.0.P24
BuiltOn=2020-04-24 22:35 (revision 3fe76ae912e69f249470c97013574fce47b7e1d2)
Encoding=UTF-8
EndpointIP=21.0.9.3
EndpointURL=http://905ccbc17725:8080
TimeZone=Europe/Paris
SystemDate=2020-05-07 10:58:00

Un booléen n’est pas sensé avoir 3 valeurs, le défaut est donc que le tableau devrait n’avoir qu’une seule ligne “Non” et pas 2, mais surtout que votre champ n’est pas sensé être null. Dans les formulaires par exemple, un boolean null est affiché à “non” comme valeur par défaut, ce n’est pas une anomalie de ne pas avoir 3 radios buttons…

Si vous voulez 3 valeurs, modifiez simplement votre champ en type Énuméré facultatif avec la liste de valeur BOOL. C’est compatible avec les valeurs null, ‘0’ et un ‘1’ en base.

Bonjour,
merci pour votre retour. Un boolean ne peut pas être nul mais un Boolean si.
Je pensais que Simplicité gérait des Boolean puisqu’un attribut pouvait être mis en non obligatoire. Nous avions besoin de la valeur nulle afin de différencier un champ jamais renseigné d’un “Non” clair.
Quand à l’affichage, pas besoin de 3 radio button, juste deux suffisent et aucune valeur pré-renseignée.

Je prends note de votre solution. J’aurai aimé en avoir eu qui n’impose pas l’affichage d’un radio button “None”. Je vais voir pour le masquer en css.

Merci encore pour votre réponse.

Bonjour Amandine,
dans notre solution GDPR, j’utilise ces éléments de configuration pour adresser le même besoin :

  • utilisation de l’énumération BOOL (comme indiqué par François)
  • un code jquery inséré dans le template de l’objet (ou de la zone) qui masque ou retouche l’option “Aucun” selon le besoin exprimé

image

Un champ facultatif permet de revenir un null, et même si on le prévoyait pour un booléen ce serait au final équivalent à un énuméré à 3 valeurs pour l’utilisateur (selectbox ou boutons radio à 3 entrées).

Votre cas est plus complexe puisque null semble autorisé qu’à la création, ensuite une fois Oui/Non sélectionné, on ne peut plus revenir à null ?

Il suffit de passer votre champ Enum BOOL en obligatoire pour faire disparaître le “aucun”.
Sinon le rendre obligatoire ou pas via le initUpdate en fonction de sa valeur (non obligatoire tant que vide).

C’est plus pérenne que du CSS qu’il faudra revoir en cas de changement de rendering (bootstrap 4 n’aime pas les radio-inline, ça va devenir des form-check-inline…).

Dans le cas de Bruno, j’aurai fait comme suit :

  • une nouvelle liste de valeurs à 3 entrées = 3 traductions back sans code front en dur (code 0 = no, 1 = yes, et N = Not answered)
  • obligatoire + valeur par défaut “N”
  • Et joué si besoin en back par code pour activer/désactiver l’item “N” par accesseur getField(“myfield”).getList() suivants les cas

Merci beaucoup François pour ton retour et ton expertise. C’est dans ma backlog obsolescence / réduction de la dette technique.