Ajouter un filtre par défaut modifiable sur une instance fille

Ajouter un filtre par défaut modifiable sur une instance fille
0
Tags: #<Tag:0x00007f85f2f32fa8>

Bonjour
J’ai un objet application qui a 2 FK : une vers produit, une vers fonction.
Mon produit a également une référence vers fontion.

Lorsque je sélectionne un produit depuis une fiche d’application, je souhaite que la liste des produit affiché soit filtré par défaut avec la même fonction que sur mon application.
J’ai réussi à faire cela grâce à un hook

Product.initRefSelect = function() {
	if (this.getParentObject() !== null && this.getParentObject().getName() == "AppEAPM") {
		this.resetFilters();
		if (this.getParentObject().getFieldValue("AppEAPMFunctionId") != null) {
			this.getField("FunctionId.Name").setFilter(this.getParentObject().getFieldValue("AppEAPMFunctionId.Name"));
		}
	}
};

Le problème est que dans ma popup de recherche ce filtre ne peut pas être enlevé.
Comment puis le rendre supprimable sachant que je ne peux pas appliquer ce filtre dans le postUpdate de l’application car le champ Fonction est modifiable ?

Y a t-il un moyen propre de le faire ? Y a -t’il un moyen de savoir d’où une recherche est faite (s’il s’agit du clic sur un champ dans un autre formulaire ou du panel de recherche courant) ?

Merci

[Platform]
Status=OK
Version=4.0.P23
BuiltOn=2020-01-10 17:30 (revision 51ec4c2ec0814956190ff9ff1bb6ffd6dde0801c)

Il faut positionner le filtre une seule fois au niveau de l’objet parent, mais pas à chaque fois que le popup se rafraîchit.

Dans le initUpdate du parent, il faut récupérer l’instance ref de votre objet lié (getRefObject…), et lui mettre un filtre une fois. Pas besoin de initRefSelect dans ce cas.

Merci pour votre réponse.
Il n’existe pas un hook qui se déclenche à l’ouverture de la popup ?
Le filtre à mettre dépend de champs sur le formulaire qui peuvent être changés avant l’ouverture de la pop up.

Scénario :

  1. Ouverture de la page d’édition de mon application --> exécution de l’initUpdate
  2. Mise à jour du champ “Function”
  3. Clic sur le champ de produit --> ouverture de la pop up

Résultat : le filtre positionné dans l’initUpdate n’est plus à jour.
Auriez-vous une solution ?

Merci d’avance

Dans ce cas, vous pouvez scripter du code front dans une ressource SCRIPT de l’objet parent :

Dans le form.onload du parent appelé lorsque le formulaire est affiché :

Pour ajouter un change() sur le champ qui conditionne un filtre en back :
=> qui appelle une action masquée du fils (ref instance) qui valorise un filtre
=> ou alors qui positionne juste paramètre de session (via app.setSysParam) à récupérer dans l’initSearch de la ref instance de l’objet fils en back

https://docs.simplicite.io/documentation/04-ui/responsive.md
voir Business object hooks