Rendu des relations N,N en "pillbox" en liste et fonction de recherche

Tags: #<Tag:0x00007fe295ac9d90>

Bonjour,

Version=4.0.P24
BuiltOn=2020-01-31 11:26 (revision 6f4def05369f3d9f7745a01e71bc7de9c7513b6d)

J’ai des relations n-n paramétrées en rendering “pillbox”.
Lors de l’affichage en liste, les relations “pillbox” sont restituées (a priori, en premières colonnes en partant de la gauche).

Nous avons deux problèmes:

  1. les colonnes correspondantes "pillbox (qui ne sont pas / n’ont pas besoin d’être filtrables a priori) présentent les champs de filtres des colonnes plus à droite (décalage des champs filtres de droite à gauche)
  2. l’affichage des ces colonnes “pillbox” en liste n’est pas paramétrable (impossible de les masquer)

ERRATUM: C’est dans la release note P24…

N,N Links rendered as Pillbox with positive order are inserted on list…

L’ordering négatif permet en effet de masquer la relation pillbox (et résout le problème de décalage des champs de filtre).

Par contre, si l’affichage est activé, alors les filtres sont décalés…

  • L’ordre négatif Link pillbox = pas d’affichage en liste
  • Sinon l’ordre du Link (exemple 35) vient s’insérer dans l’ordre des attributs d’objet (10 20 30 40).

Si vous avez 2 ordres identiques, il se peut que ça inverse des colonnes.

Tous nos tests avec des ordres bien triés n’ont pas de problème.
Il faut nous donner l’ensemble de vos ordres (fields + links) pour comprendre le problème

Bonjour François,

effectivement, les ordres paramétrés sur les relation étaient tous inférieurs à ceux paramétrés sur les object fields. Du coup, les colonnes/pillbox se retrouvaient justement à gauche.

J’ai modifié le paramétrage pour repositionner les colonnes dans la liste et l’ordre est bien pris en compte comme tu l’indiques.

Néanmoins, le décalage des champs de filtre persiste:

Ok vu, c’est la ligne des filtres qui ne tient pas compte des colonnes ajoutées, et pas les titres des colonnes.

On va corriger

1 Like

Voilà c’est corrigé, ça devrait mieux s’afficher à la prochaine livraison.

1 Like

Bonjour,
je réveille ce vieux post car finalement, nous avons des demandes (besoins métier prioritaires) de pouvoir formuler des recherches sur des termes rendus dans les pillbox en liste…

Est-il possible d’activer cette fonctionnalité par un paramétrage?

Dans la négative, la seule solution que j’entrevois pour l’instant est de créer un attribut ad-hoc valorisé automatiquement avec un concat des clés de la pillbox pour ensuite permettre une recherche sur les termes concaténés. Du coup, cet attribut serait affiché à la place de la pillbox en liste. Comme ça ne me semble pas idéal, je suis à l’écoute de tout conseil…

La feature d’avoir la recherche en colonne de liste (ou formulaire de recherche) de relation N,N pillbox est encore au backlog V5.

Le contournement de créer un champ qui concatène les N,N pour faire un recherche textuelle (à base de like) peut marcher, mais remplacera du coup la pillbox en liste (inutile d’afficher les 2).

Sur un autre projet, on avait dénormalisé la N,N dans un champ calculé HTML plus lisible pour l’utilisateur de type <ul> <li> (et non un rendering pillbox), mais on ne peut pas chercher sur un champ HTML.

Et se pose surtout la question de la modélisation de la recherche de N critères parmi N objets :

  • recherche sur la clé fonctionnel de l’objet lié “fi” => les lignes qui ont Finlande Fidgi…
  • recherche ET: france and suisse => les lignes qui ont France et Suisse en relation
  • recherche OU: france or suisse => les lignes qui ont France ou Suisse en relation
  • recherche mixte: france and (suisse or espagne)
  • recherche contient entre min/max correspondances parmi [france, espagne, italie…]
  • recherche XOR etc

Implémenter le 1) une recherche basée sur la clé fonctionnelle me semble faisable, et correspondre au besoin “minimal” = le filtre sera un morceau de SQL de type “where exists” avec la jointure via la N,N et l’index/clé de l’objet lié. Pour les autres c’est plus complexe à créer, assistant de recherche pour formuler la requête avec opérateur logique…

Quelle est la deadline pour ce besoin ?
on peut surement livrer l’évolution sur la clé fonctionelle uniquement et la backporter en V4 courant Juin.

Bonjour François,
merci beaucoup pour ce retour rapide et détaillé.
La solution de recherche sur les textes concaténés est attendu pour juin en effet avec instruction de livrer au plus vite dès qu’on a quelque-chose (on a des clients qui sont devenus accrocs aux sprints d’1 semaine).

Je n’ai pas encore commencé à implémenter le champ ad-hoc de mon côté (j’attendais ton retour avant). Si vous pouvez faire quelque-chose dans le socle pour fin juin - ce serait vraiment super - je peux les faire patienter un peu et remettre le ticket en attente.

Si l’utilisateur peut attendre un peu, c’est préférable que de faire un contournement temporaire qui reviendra au même.

Je remets ce besoin dans le haut de la pile, ça viendra après l’évolution du champs Bloc-note / Notepad pour avoir un rendering avec des remarques éditables et des checklists libres.

1 Like

C’est fait en V5 et backporté en V4.
Vous devrez tester lorsque vos images docker auront été mises à jour.

La recherche se fait via un like sur le champ user-key de l’index de l’objet lié (qui donc donc être indexable et indéxé) pour chercher dans une clé potentiellement composée de plusieurs champs. on pourra revoir ça si votre objet lié à la N,N n’est pas indexable et si sa clé fonctionnelle est une simple colonne.

  • Le filtre saisi est textuel et supporte les wildcards * % _ ?
  • Il est appliqué en jointure de la N,N et de la clé indexée avec un like (ou ilike sur postgreSQL)
  • Il ne supporte pas les expressions du genre ='a' or ='b' comme un champ texte

Techniquement si on souhaite accéder au filtre sur le lien :

  • en front : le filtre est accessible dans les filtres JSON de l’objet parent avec le nom suivant :
    { "link__<objectNN>__<foreignkey>": "abc*" }
  • en back : le filtre est positionné dans le Link de l’objet
    obj.getLink("<objectNN>","<foreignkey>").setFilter("abc*") / getFilter() / isFiltered()

Bonsoir François,

merci beaucoup. ça fonctionne “out of the box” (comme d’habitude). Nous sommes dans le cas le plus simple avec une clé à champ unique.

NB: la relation N-N n’est pas indexée elle-même mais les objets référencés (les deux pattes) le sont ainsi que leur clés fonctionnelles. Aucune difficulté donc de ce côté.

La recette métier devrait pouvoir se faire lundi (je viens de propager l’image en environnement de test).

Bonjour François,
je n’avais pas remarqué avant car je “pin” systématiquement mes recherches en liste.
Le métier me remonte que le filtre de recherche sur les N-N n’est pas affiché en mode formulaire (dialog modal à droite ou attaché à gauche).
Dois-je configurer la recherche de manière particulière ou est-ce une limitation de l’implémentation actuelle?

Oui, ce n’est pas encore implémenté dans le popup.
Il fallait déjà vérifier que ça fonctionnait en liste chez vous, il devrait être assez simple de l’ajouter au formulaire de recherche proprement dit dans la semaine.

1 Like

La recherche de relation N,N pillbox a été ajoutée au formulaire de recherche.
Ce sera livré ce soir.