Contrainte sur une liste en fonction d'un attribut énuméré simple

Request description

Dans le cadre d’un processus métier, nous travaillons avec un objet LegalText et nous souhaitons contraindre dynamiquement la liste des pays affichés en fonction de la sélection d’un attribut énuméré dans cet objet.(ici la liste des pays en fonction du périmètre).

Steps to reproduce

  • Le champ Périmètre est un attribut énuméré simple avec les options Importateur ou Filiale.

  • Le champ Pays de déploiement est un attribut enum multiple qui affiche la liste des pays.

  • En fonction de la valeur sélectionnée dans le champ Périmètre (soit Importateur, soit Filiale), nous voulons que la liste des pays dans le champ Pays de déploiement se mette à jour dynamiquement, en ne proposant que les pays correspondant à cette sélection.

Comme les 2 attributs sont dans la meme activité, il n’y a pas de save pour recuperer au next step la valeur du périmètre et ajuster la liste donc je pense qu’il faudrait le faire dynamiquement , est-ce possible ?

Question

  • Comment peut-on gérer cette contrainte directement au niveau du processus métier dans Simplicité ? (script front ou businessProcess) ou bien existe-t-il une manière native de filtrer la liste des pays via des contraintes ou des règles métier, plutôt que d’utiliser un script jQuery ?

  • Avez-vous des exemples ou des bonnes pratiques pour ce genre de besoin dans le cadre d’un processus métier ?

En attente d’un retour, à bientôt ! :slight_smile:

Technical information

Instance /health
---paste the content of your-instance.com/health---
Simplicité logs
---paste the content of the **relevant** server-side logs---
Browser logs
---paste content of the **relevant** browser-side logs---
Other relevant information

----E.g. type of deployment, browser vendor and version, etc.----

Simplicité gère nativement les listes liées entre 2 champs ENUM, pour gérer des cas “simples” de type / sous-type.

https://docs.simplicite.io/lesson/tutorial/configuration/linkedlists

Je doute que cela fonctionne pour un ENUM vers un ENUM-MULTIPLE, mais en soit on peut l’envisager, car que le champs lié soit multiple ou non ne change en rien ses valeurs possibles contraintes par un autre ENUM. On va regarder si c’est faisable.

Pour les autres cas, il faut prévoir de recharger dynamiquement par code la liste fille en fonction des autres champs. Si l’activité est liée à un objet métier, il faut implémenter le SCRIPT / hook form.onload (sinon mettre le javascript dans le template de l’activité et accéder via jQuery à vos input/select) :

Quelque chose du style de ce que fait la contrainte front :

let f1 = $ui.getUIField(ctn, obj, "field1");
// Bind change
f1.ui.change(e => {
  let val1 = f1.ui.val();
  // Déterminer la liste liée à charger
  let lov = val1=="FILIALE" ? "LIST_X" : "LIST_Y";
  // ou un appel au back si complexe... then
  // Recharger la liste liée
  let f2 = $ui.getUIField(ctn, obj, "field2");
  if (f2 && f2.ui) // exists in form
    obj.setList("field2", lov) // ajax call
    .then(r => r.field.ui.redraw().change()); // redraw the field (select2 or inputs...)
});
1 Like

L’évolution a été faite et sera backportée en 6.1.9

pour pouvoir lier une valeur d’ENUM à une liste à choix multiples ENUM-MULTI, ce qui devrait répondre à votre cas d’usage sans avoir de code à ajouter.

@Hamza

2 Likes

This topic was automatically closed 60 minutes after the last reply. New replies are no longer allowed.