Champ filtre en checkbox non identifiable

Bonjour,
Dans notre application, nous avons souvent des vues qui contiennent à gauche un tableau croisé et à droite une recherche.
image
Lorsque nous cliquons sur un chiffre du tableau croisé, cela met à jour la recherche. (Je sais qu’une feature request a été demandé pour que ce mécanisme soit intégré dans Simplicité et que le sujet est en réflexion chez vous).
Ici nous avons fait une solution maison en javascript afin de mettre à jour les filtres. Le champ de filtre, dans notre exemple “Statut de l’enquête” est identifié par un id qui correspond à son nom logique.
Lorsque l’option “Recherche” de l’attribut est à mis à “Recherche simple”, nous obtenons dans le HTML

<select id="ConCriSurveyStatus" class="form-control search-control">...</select>

L’input est clairement et facilement identifiable. Nous pouvons donc le manipuler avec jquey.
En revanche, lorsque l’option “Recherche” de l’attribut est à mis à “Case à cocher”, nous obtenons dans le HTML

<input class="form-control" readonly="">

A ce moment, le champ n’est plus identifiable et il est donc impossible de la modifier avec javascript.

Comment puis-je modifier un champ filtre de type checkbox ?

Merci d’avance

[Platform]
Status=OK
Version=4.0.P24
BuiltOn=2020-03-23 21:40 (revision 5b0e84e9965680d212027bf49d22ca11feb363cf)
Encoding=UTF-8
EndpointIP=21.0.9.3
EndpointURL=http://0631b60e1e33:8080
TimeZone=Europe/Paris
SystemDate=2020-04-03 09:45:47

Bonjour,

Faire du javascript à ce niveau est très peu maintenable.
Ce rendering est un input en lecture car il concatène les valeurs sélectionnées dans un dropdown bootstrap avec des checkbox juste à côté :

<input class="form-control" readonly="">
<div class="dropdown input-group-btn open">
  ...
  <ul role="menu" class="dropdown-menu" style="left: -260px;">
     <li><div class="checkbox"><label><input type="checkbox" class="search-control" name="myEnumField" value="code1"><span>Value1</span></label></div></li>
     ... 
  </ul>
</div>

Si vous faites du code spécifique, il faudrait donc agir sur les <input type="checkbox"> du dropdown et non plus sur un select. Ce reste tout à fait faisable par un selector en jQuery sur le nom :

$('.searchby input[name="myEnumField"]').prop("checked", true|false)
puis change puis click sur rechercher…

Bref c’est peu maintenable que d’agir sur le rendering physique, car il est susceptible d’évoluer suivant le moteur de rendu. Il est préférable de passer par les API de rendu (tools.displayFieldSearch) ou mieux de modifier l’objet niveau logique sans se préoccuper de l’affichage qui dépend du rendering :

// New filter
obj.filters = obj.filters || {};
obj.filters["myEnumField"] = [ "code1", "code4", "code13" ];
// Redraw the list
$ui.displayList("#work", obj, { showNav:true, nav:"add" });

et c’est tout.