Recherche multiple sur objet lié

bonjour,

est il possible de faire une recherche multi critères en liste sur un objet lié ?
Un exemple :
mon objet Etablissement est lié à un objet ministère de tutelle.
les utilisateurs veulent afficher les établissements dépendant du ministère de l’agriculture ET du ministère de la mer.

la liste des ministères est un objet et pas un énuméré multiple

Bonjour,

Dans le panel de recherche en dialog, il est possible d’ajouter plusieurs conditions sur un champ.

Exemple sur la démo :

En revanche, il n’existe pas à ce jour de mécanisme permettant sélectionner plusieurs lignes dans la liste de sélection de référence.

merci pour ta réponse.

pour les utilisateurs, ce n’est pas simple.
si cette fonctionnalité pouvait être ajoutée, ça serait une belle évolution très attendue chez nous :slight_smile:

sachant que les listes sur lesquelles les recherches sont faires sont affichées dans une vue.
Et que le panel de recherche en dialogue ne s’affiche pas. seule la recherche en liste est possible.

une autre évolution à prévoir

Je passe en feature request du coup !

1 Like

Après réflexion et pression des utilisateurs, l’accès à la recherche en dialogue à partir d’une vue doit résoudre mon problème :
si je mets à disposition des recherches déjà prêtes, ils n’auront pas à écrire les requêtes.

@Alistair Est ce que cette évolution est possible rapidement ?

Bonjour,

On peut effectivement la faire pour la prochaine version si ce n’est pas trop impactant.

  • accéder au bouton toggle recherche “en liste / en popup”
  • la recherche multi références nommées : là c’est surement plus compliqué car ca revient à sélectionner/cocher des références, donc faire des recherches dans un recherche

En attendant, pour ouvrir le dialogue de recherche et faire comme @Alistair le suggère, on peut aussi ajouter une action avec le code front suivant :

javascript: $ui.displaySearch(null, obj, { position: 'popup' });

C’est ce que fait le bouton (avec qq paramètres en plus dans le cas général).
Ensuite normalement la liste captera l’événement de recherches avec les nouveaux filtres.

2 Likes

Même problème avec la Recherche prédéfinie : elle n’apparait pas en liste dans les vues
les contacts via le menu :

les contacts via la vue :

est ce que, comme pour la recherche avancée, je peux forcer l’affichage avec une action ?

Tu peux valoriser une searchSpec dans la méthode appelée par une action. Attention a réinitialiser cette searchSpec dans un initList s’il n’y a pas de parent, ou toute autre condition.

je veux afficher la liste des recherches prédéfinies

image

il faudrait qu’une liste, affichée via le menu ou via une vue, ait les mêmes fonctionnalités.

Bonjour,

Tout comme vouloir changer tous les filtres avec l’accès au dialogue de recherche, une liste de vue est déjà un accès filtré, lui remettre toutes les fonctions de l’objet principal revient à y accéder directement = autant mettre un bouton qui redirige vers l’objet Main.

Une liste en item de vue est déjà une recherche prédéfinie sur un objet métier : avec ses filtres, tris, préférence de colonnes affichées, group by, etc.

Du coup, il peut y avoir conflit de mélanger 2 recherches, c’est pourquoi on ne peut pas changer de recherche prédéfinie dans un panel de recherche prédéfinie ou ouvrir le dialogue complet, ça annulera la recherche d’avant (ce n’est pas un merge de filtres) = on peut juste sur-filtrer les colonnes,

Donc à moins que la liste en panel soit filtrée par search-spec SQL en dur, je ne vois pas l’intérêt de proposer cette fonctionnalité, autant aller sur l’objet principal et utiliser tous les filtrages possibles.

Le plus simple pour sur-filtrer est d’ajouter des actions qui font juste des “setFilter” en back sur l’objet en plus de la recherche prédéfinie du panel. En 5.4, il sera possible de grouper ses actions.

Sinon par code on peut toujours ajouter un select sur le list.onload en testant le nom de l’instance.
Du style :

function doFilter() {
    obj.filters = obj.filters || {};
    obj.filters.champX = $(this).data("filter") || "%";
    $ui.displayList(ctn, obj, p);
}
var filter = obj.filters ? obj.filters.champX : "%";
var sel = $('<select autocomplete="off" class="form-control"/>').change(doFilter);
$('<option/>').appendTo(sel);
$('<option/>').data({ filter:"G"}).prop("selected", filter=="G").text("Gestionnaires").appendTo(sel);
$('<option/>').data({ filter:"D"}).prop("selected", filter=="D").text("Directeurs").appendTo(sel);
$('<option/>').data({ filter:"%"}).text("Tous").appendTo(sel);
$(".list-actionbar .actions", ctn).prepend(sel);

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