Griser valeurs sur enumération multiple

4.0
Griser valeurs sur enumération multiple
0
Tags: #<Tag:0x00007f6484dd33b8>

#1

Bonjour,

Je souhaite interdire aux utilisateurs de cocher certaines valeurs d’un champs enumération multiple selon certains critères. J’ai regardé la documentation sur les ObjectFieldList et j’ai trouvé que je pourrais récupérer les valeurs à “griser” avec le getList et le getItem mais je ne sais pas comment interdire ces valeurs aux utilisateurs? Est ce que c’est la bonne manière de faire et dans ce cas là comment arriver au résultat souhaité? ou y-t-il une manière de faire?

En vous remerciant pour votre aide.

Cordialement,
Zouhair


(David AZOULAY) #2

Il y a une notion d’item de liste enabled true/false, ça peut à priori se positionner item par item (cf. https://www.simplicite.io/resources/4.0/javadoc/com/simplicite/util/EnumItem.html), genre:

var list = this.getField("myField").getList();
for (var i = 0; i < list.size(); i++)
     list.get(i).setEnabled(true / false);

Par contre je ne sais pas trop si (ni comment) cette info enabled est prise en compte au niveau des UIs legacy et responsive dans le cas général (elle l’est pour les champs statut c’est sûr) et en particulier sur les énumérés multiples. @francois tu sais répondre sur cet aspect des choses ? sinon je vais faire des tests.


(Bruno Montagnac) #3

Bonjour David, François,

Merci David pour ton aide.

J’ai dû ajouter un appel à la méthode getAllItems() pour parcourir la liste.
Cependant, le code suivant (test arbitraire de désactivation des items d’index impairs) reste sans effet sur les éléments de la liste:

var allitems = this.getField("DataprocessDataCateg").getList().getAllItems()
console.log("allitems size="+allitems.size());
for (var i = 0; i < allitems.size(); i++) {
	console.log(i+" before setEnabled:"+allitems.get(i).isEnabled());
	allitems.get(i).setEnabled( i % 2 == 0 );
	console.log(i+" after setEnabled:"+allitems.get(i).isEnabled());
}

La trace de ce code indique bien la prise en compte du setEnabled(false)…
Mais rien n’est grisé sur l’écran.

Evénement: 12 after setEnabled:true
Evénement: 12 before setEnabled:true
Evénement: 11 after setEnabled:false
Evénement: 11 before setEnabled:true
Evénement: 10 after setEnabled:true
Evénement: 10 before setEnabled:true
Evénement: 9 after setEnabled:false
Evénement: 9 before setEnabled:true
Evénement: 8 after setEnabled:true
Evénement: 8 before setEnabled:true
Evénement: 7 after setEnabled:false
Evénement: 7 before setEnabled:true
Evénement: 6 after setEnabled:true
Evénement: 6 before setEnabled:true
Evénement: 5 after setEnabled:false
Evénement: 5 before setEnabled:true
Evénement: 4 after setEnabled:true
Evénement: 4 before setEnabled:true
Evénement: 3 after setEnabled:false
Evénement: 3 before setEnabled:true
Evénement: 2 after setEnabled:true
Evénement: 2 before setEnabled:true
Evénement: 1 after setEnabled:false
Evénement: 1 before setEnabled:true
Evénement: 0 after setEnabled:true
Evénement: 0 before setEnabled:true
Evénement: allitems size=13


(David AZOULAY) #4

Oui c’est ce que je disais, je ne sais pas si ce flag enabled est pris en compte par les UIs pour les champs énumérés de base simple ou multiple. Je vais regarder.


(Bruno Montagnac) #5

Merci encore.
J’ai oublié de tester dans les deux modes (pour l’instant, nos users sont encore en UI legacy).

  • En UI responsive, le setEnabled est bien effectif (et les options “désactivées” ne sont en fait pas affichées; nous aurions préféré des options grisées mais en tout cas, ça marche).
  • En UI legacy, le setEnabled est sans effet visible sur l’écran.

(David AZOULAY) #6

On a modifié l’affichage des listes coté UI legacy pour prendre en compte le flag enabled. J’ai upgradé ton instance “openid” pour que tu puisse tester et nous dire si c’est bon pour toi.


(Bruno Montagnac) #7

Bonjour David,
merci beaucoup pour ton retour.
Je confirme que c’est OK en responsive et en legacy sur l’instance openid.


(David AZOULAY) #8

Ok ce sera poussé sur la branche “release” et donc sur les images Docker d’ici la fin de la semaine normalement


(David AZOULAY) #9

@zoualialami @bmo PI on a revu la gestion des items enabled sur les listes de valeur: sur les listes simples (i.e. pas le state model de l’objet) les item inactifs apparaissent désormais grisés. Ca a été poussé sur la branche master hier (donc les instances en autoupgrade qui suivent cette branche sont à jour). Ce sera poussé sur la branche release d’ici la fin de la semaine.