GeotrekCE / Geotrek-admin

Paths management for National Parks and Tourism organizations
https://geotrek.fr
BSD 2-Clause "Simplified" License
131 stars 75 forks source link

Problème lien dynamique liste/carte #3110

Open thomasmagninfeysot opened 2 years ago

thomasmagninfeysot commented 2 years ago

Depuis 2.82.2 (sur instance PNRHJ + instance démo), plus interaction entre la liste et la carte :

L'objet survolé sur la carte ne met pas en surbrillance l'entité dans la liste : image

Et le filtre textuel n'interagit plus avec la carte (toutes les entités restent visibles) : image

camillemonchicourt commented 2 years ago

1. Interaction Carte > Liste

C'est normal que l'interaction Carte > Liste ne fonctionnement depuis la 2.82.0. C'est une régression fonctionnelle assumée pour apporter des améliorations conséquentes des performances, détaillées ici : https://github.com/GeotrekCE/Geotrek-admin/issues/2967#issuecomment-1110657720

Le contenu des listes est désormais paginé au niveau du serveur et non plus du navigateur web. Cela permet ainsi de charger beaucoup moins de contenus, qui sont désormais demandés au serveur page par page. Ainsi le navigateur ne charge plus que les contenus affichés dans la page, et non plus toutes les pages qui pouvaient représentés des milliers d'objets.

Pour la carte, bien sur on continue à récupérer tous les contenus et pas seulement ceux de la page affichée. La suite des travaux en cours sur les performances concerne justement l'optimisation du chargement des objets sur la carte.

Mais le fait que l'on charge dans le navigateur uniquement les objets de la page affichée, fais que celui-ci ne connait plus les objets des pages suivantes, donc on ne peut plus avoir l'interaction Carte > Liste. L'interaction dans l'autre sens fonctionne toujours.

Pour pallier à cette régression fonctionnelle, une tooltip a été ajoutée quand on survol un objet sur la carte, ce qui permet de repérer de quel objet il s'agit.


2. Recherche libre et carte

Concernant le filtre de recherche libre, il a du être entièrement revu du fait de la mise en place de la pagination de la liste côté serveur, justement pour bien s'appliquer sur les objets de toutes les pages et pas seulement ceux de la page affichée. Désormais quand on utilise la recherche libre, la requête doit être faite au niveau du serveur et non plus du navigateur comme avant. Cela fonctionne bien sur les listes, mais il reste en effet à faire en sorte qu'il filtre aussi la carte. Pour cela il faut revoir son fonctionnement.

thomasmagninfeysot commented 2 years ago

Pour la 1 vraiment dommage, on perd vachement en UX je trouve, ç'était quand même bien pratique ! sachant que de notre côté on a des tronçons nommés pareil (pdipr par exemple), du coup on s'y retrouve plus et la seule façon d'ouvrir la fiche est de cliquer le tronçon sur la carte mais pas de possiblité d'ouvrir dans une nouvelle fenêtre

camillemonchicourt commented 2 years ago

Oui c'est dommage. Mais en même temps on divise le temps de chargement des listes par 10, 100 ou plus selon le volume de données dans chaque module. Il est logique que si on pagine côté serveur et qu'on ne renvoie au navigateur que la liste des objets nécessaires à afficher la liste de la page, le navigateur ne puisse pas interagir avec des objets dont il ne dispose pas. Et ça aurait été lourd d'envoyer une requête au serveur à chaque fois qu'on survole un objet sur la carte. Mais cette piste (ou une autre) peut être creusée, investiguée. On a jugé que les gains énormes de performances d'affichage d'une liste étaient plus bénéfique que l'interaction carte > liste. Sachant que l'interaction liste > carte reste fonctionnelle. Et que le soucis de recherche libre qui ne filtre pas la carte est une régression non voulue qui sera corrigée. Pour l'interaction carte > liste, à creuser en évolution, mais pour le moment on l'a en partie "résolue" avec le tooltip au survol d'un objet.

Par contre, dans ton cas, cette régression est accentuée du fait d'un usage pas normal. C'est pas souhaité ni logique d'avoir plusieurs objets avec le même nom. D'autant plus que la notion de "PDIPR" devrait plutôt être un réseau auquel sont associés les tronçons et non pas leur nom. Pour leur nom, le laisser vide et ainsi utiliser leur identifiant unique est la solution privilégiée pour les tronçons. Dans les autres modules chaque objet est aussi censé avoir un nom unique, que ce soit une rando, une signalétique, un POI ou autre.

Dans tous les cas :

Voici ce qui était noté par @submarcos dans l'analyse des solutions de performances dans le ticket dédié (https://github.com/GeotrekCE/Geotrek-admin/issues/2967) :

  • Mettre en place la pagination côté serveur qui sera interrogé page par page
  • Conséquence : Il ne sera plus possible d’afficher en surbrillance l’élément de la liste lors d’un survol sur la carte
  • Contres propositions :
    • afficher une « popup Leaflet » sur la carte lors d’un survol / clic d’élément pour proposer un lien d’accès à l’élément
    • ajouter dynamiquement l’objet à la liste pour l’afficher
    • Déterminer la page de l’élément pour l’afficher directement et ainsi conserver la fonctionnalité de survol