infra-geo-ouverte / igo2

Assemblage (IGO2) / Open GIS Infrastructure 2.0
https://infra-geo-ouverte.github.io/igo2/
Other
56 stars 32 forks source link

Dans l'outil de sélection multiple ce serait pratique d'avoir l'oeil, pour activer ou désactiver plusieurs couches en même temps #453

Closed coulo3 closed 4 years ago

coulo3 commented 4 years ago

Please tell us about your environment:

eric-darras commented 4 years ago

L'amélioration 453 ajoute une nouvelle fonctionnalité. Cette nouvelle fonctionnalité, lorsque complet, va apparaître dans igo2 et igo2-lib

= = Dans igo2 = = Choisir "Carte" dans le menu. http://localhost:4201/

Sous le menu "Carte", on trouve les options pour les "Couches" et les "Légendes". Sous les "Couches", on trouve une liste de couches. En tête de cette liste se trouve quatre champs de contrôle

  1. Un champ texte qui limite l'affichage de la liste
  2. Une image qui change l'ordre du tri de la liste
  3. Un image d'oeil qui conserve les couches visibles
  4. Une case à cocher qui active la sélection multiple de couches

Si on coche sur la case à cocher [au point 4], une barre d'outils pour les options de la sélection multiple apparaît après la fin de la liste. C'est parmi ces options qu'une image d'oeil doit être ajouté. Cette image d'oeil activera ou désactivera les couches cochées en même temps.

= = Dans igo2-lib = = Choisir "Layer" dans le menu. http://localhost:4200/#/layer

Sous le titre de partie "Layers", on trouve une liste de layer ou couches. En tête de cette liste se trouve quatre champs de contrôle

  1. Un champ texte qui limiter l'affichage de la liste
  2. Une image qui change l'ordre du tri de la liste
  3. Un image d'oeil qui conserve les couches visibles
  4. Une case à cocher qui active la sélection multiple de couches

Si on coche sur la case à cocher [4], une barre d'outils pour les options de la sélection multiple apparaît dans le pied de page. C'est parmi ces options qu'une image d'oeil doit être ajouté. Cette image d'oeil activera ou désactivera les couches cochées en même temps.

igo2-lib fournit un lien vers un exemple de code source pour invoquer la fonctionnalité. igo2-lib/demo/src/app/geo/layer/layer.component.html Si on examine le code source on voit qu'on y appelle une balise <igo-layer-list ..>

Le code source du composant "igo-layer-list" se trouve dans le répertoire suivant :

igo2-lib/packages/geo/src/lib/layer/layer-list/ Il faut modifier les fichiers

Lorsque c'est modifié, on peut se contenter de recompiler le module geo : igo2-lib>npm run build.geo Ensuite redémarrer igo2-lib igo2-lib>npm start

Le changement sera visible dans igo2-lib, mais pas encore dans igo2 http://localhost:4200/#/layer

Il faut interrompre igo2 (localhost:4201) Il faut ensuite copier le contenu du répertoire igo2-lib\dist\geo\ dans le répertoire igo2\node_modules\@igo2\geo\ Démarrer igo2 igo2>npm start Le changement sera visible dans igo2 http://localhost:4201/

eric-darras commented 4 years ago

Analyse des spécifications

On demande un oeil pour pour activer ou désactiver plusieurs couches en même temps dans la sélection multiple.

Si on ajoute un oeil qui permet de cacher les couches sélectionnés, une question se pose. Que faire avec les couches déjà cachées individuellement ? Exemple A [x] couche 1 -- Visible [x] couche 2 -- Non Visible Si on clique sur l'oeil, les deux couches deviendront non-visibles. Mais que se passe t'il si on re-clique sur l'oeil ? Solution simple : Les deux couches deviendraient visibles. Solution complexe : La couche 1 redevient visible et la couche 2 redevient non-visible.

Je propose que l'oeil permette d'inverser la visibilité, pour contourner la difficulté. Ce comportement me semble plus simple à comprendre. Il permet d'évaluer visuellement des alternatives possibles. Si je reprends mon exemple A, on obtiendrait le comportement suivant :

Exemple A [x] couche 1 -- Visible [x] couche 2 -- Non Visible On clique sur l'oeil [x] couche 1 -- Non Visible [x] couche 2 -- Visible On clique sur l'oeil [x] couche 1 -- Visible [x] couche 2 -- Non Visible

eric-darras commented 4 years ago

Après avoir consulté Marc-André Barbeau, la solution simple discutée plus haut a été retenue. Le comportement sera le suivant :

Exemple A [x] couche 1 -- Visible [x] couche 2 -- Non Visible

On clique sur l'oeil [x] couche 1 -- Non Visible [x] couche 2 -- Non Visible

On re-clique sur l'oeil [x] couche 1 -- Visible [x] couche 2 -- Visible

mbarbeau commented 4 years ago

Vote sur le comportement de l'oeil avec cette situation: [x] couche 1 -- Visible [x] couche 2 -- Non Visible

Solution A (Voter :rocket: ): On clique sur l'oeil [x] couche 1 -- Visible [x] couche 2 -- Visible On clique sur l'oeil [x] couche 1 -- Non Visible [x] couche 2 -- Non Visible

Solution B (Voter :heart: ): On clique sur l'oeil [x] couche 1 -- Non Visible [x] couche 2 -- Visible On clique sur l'oeil [x] couche 1 -- Visible [x] couche 2 -- Non Visible

josee666 commented 4 years ago

Lorsque toute les couches sont non visibles afficher un oeil barré pour icone.

Exemple : couche1 -- non visible couche2 -- non visible couche3 -- visible couche4 -- non visible

icone oeil noir dans la bar

utilisateur clique oeil -> couche 1-2-4(en plus de 3) devient visibles et icone devient oeil barré.

clic sur oeil barré -> toute les couches deviennent non-visibles et icon oeil devient oeil noir

ameliebernier commented 4 years ago

Moi je vote pour la proposition A, ça me semble plus clair pour l,utilisateur et la plupart des outils fonctionnent comme ça... Si c'est un oeil pour rendre visible, ça sert à rendre les couches visibles! Sinon c'est plutôt un outil pour inverser la visibilité de chaque couche individuellement, il faudrait changer l'icône.

Est-ce que cet outil devrait être présent en tout temps, pas seulement en mode sélection multiple? Ça va être mêlant avec l'oeil qui est déjà présent quand la sélection multiple n'est pas activée, qui a un comportement différent. Pourquoi ce bouton ne servirait pas aussi à rendre facilement toutes les couches visibles ou à masquer toutes les couches d'un coup? Ça serait utile selon moi. Le bouton actuel est plutôt un filtre et je ne trouve pas que l'icône représente bien ce qu'il fait.

pelord commented 4 years ago

Faut juste faire attention a la performance lorsque l'ont ouvre toutes les couches.

https://github.com/openlayers/openlayers/issues/7790

ameliebernier commented 4 years ago

En effet, mais c'est le même problème si les utilisateurs ajoutent un grand nombre de couches. Ils pourraient tout sélectionner aussi dans l'outil de sélection multiple.

pelord commented 4 years ago

Essaye le coté performance avec ce lien :)

https://geoegl.msp.gouv.qc.ca/igo2/apercu-qc/?context=inondation&zoom=14&center=-71.1866,46.90184&visiblelayers=*&invisiblelayers=bb12b9975bbb86d5f5ca36ac4958c6be,e5a953873cdd7abd17e0d8d90c763232,430988e95780b3ea5d7ea2c49173ee91,fond_osm&wmsUrl=/ws/mffpecofor.fcgi,/apis/wss/transport.fcgi&layers=(iqs_pot_epn:igoz52,iqs_pot_epb:igoz51,iqs_pot_epr:igoz50,iqs_pot_sab:igoz49,iqs_pot_pib:igoz48,iqs_pot_pig:igoz47,iqs_pot_bop:igoz46,iqs_pot_pex:igoz45,iqs_pot_tho:igoz44,accr_st_ers:igoz43,accr_st_boj:igoz42,accr_st_err:igoz41),(convi_velo_glv:igoz40,DQ_CYCLABLE_MUN_L:igoz39,AQ_CHEMIN_FOR:igoz38,AQ_CHEMIN_FOR_SEC:igoz37,etablissement_mtq:igoz36,bgr_v_dirct_genrl_geomt_act:igoz35,bgr_v_dirct_terrt_geomt_act:igoz34,evenements:igoz33,circulation_routier:igoz32,parc_routier:igoz31,investissements:igoz30,pes_v_limtn_charg:igoz29,radars_photos:igoz28,aq_camion:igoz27,sortie_aut:igoz26,gsq_v_desc_strct_tri:igoz25,bgr_v_sous_route_res_sup_act:igoz24,telephone_urg:igoz23,villagerelais:igoz22,zones_degel:igoz21)

Le pan gèle lorsqu'il y a beaucoup de couches.... (sauf sous IE)

josee666 commented 4 years ago

Imagine si en plus si tu as l'option ouvrir les légendes automatiques à l'ouverture de la couche. Solution?? Limiter a un nombre x pour ouverture?? Limiter l'option à un contexte qui a un maximum de X couche?

pelord commented 4 years ago

Un avis indiquant que lorsque tu as plus de 15 couches, ça risque d,affecter grandement la performance.....?

pelord commented 4 years ago

Avec un "Continuer Oui/Non"

ameliebernier commented 4 years ago

Ça dépend des couches?

Les couches plus légères, il pourrait y en avoir un plus grand nombre sans affecter la performance (ou moins l,affecter) ou c'est vraiment le nombre qui est en cause?

pelord commented 4 years ago

Il faudrait tester.

ameliebernier commented 4 years ago

Oui avant de mettre un avertissement de la sorte il faudrait voir. Si la navigation est plus lente l'utilisateur s'en rend bien compte par lui-même, il peut retirer ou masquer des couches facilement à ce moment avec les outils qui sont en place.

Bref je ne priverais pas les utilisateurs de ces fonctionnalités pour autant

josee666 commented 4 years ago

Idée: Quand tu as coché plus de X couche(a determiner) par exemple 10, l'option de oeil se désactive(grisée) et le tooltip desssus indique : "l'option d'afficher toute les couches ne peut fonctionner avec plus de 10 couches"

ameliebernier commented 4 years ago

Il ne faudrait pas que ça empêche des les masquer par contre...

Je ne sais pas pour moi c'est vraiment à l'utilisateur de contrôler ça, on s'entend qu'un navigateur carto web aura toujours une limite où ça devient trop lourd, que ce soit 10, 20, 30 ou 50 couches... et ça peut probablement dépendre de la nature des couches, si j'ai 20 couches pas très lourde peut-être que tout va bien en fait!

pelord commented 4 years ago

Mais concrètement, pour un wms,il n'y a pas de différence entre une couche lourde ou pas... Bref, je ne vois pas le lien lourd/pas lourd

Est-ce lié a un problème de cache... ?

josee666 commented 4 years ago

Je ne sais pas qu'elle est le % des gens, surtout très grand public, qui seront 'compréhensifs' sur le fait que l'outil grafigne quand on en coche trop... Certains diront-> Cet outil ne va pas bien! Je pense qu'on doit limiter les comportements de l'utilisateur qui peuvent être problématique pour l'outil. On ne doit pas donner la possibilité à l'utilisateur de faire 'planter' l'outil.

pelord commented 4 years ago

L'avis ferai la "job" a mon avis.

ameliebernier commented 4 years ago

Effectivement, avoir des problèmes avec 10 couches c'est quand même grave! Ça me surprend un peu

pelord commented 4 years ago

Dans l'exemple précédent, c'est près de 40 couches.

pelord commented 4 years ago

faudrait trouver le seuil acceptable.

ameliebernier commented 4 years ago

Dans ce cas à mon sens, c'est quand même extrême comme utilisation, c'est à nous aussi de ne pas proposer des contextes à 40 couches? Bref je ne limiterais pas l,outil de visibilité à ce moment.

L'avertissement pourrait faire, ma seule crainte c'est de recevoir souvent cet avertissement et de faire mal paraître l'application alors que la performance pourrait être quand même "acceptable". Si c'est 15 couches le max il me semble qu'on a un problème!

Mais si c'est 30-40 c'est quand même pas mal moins pire

pelord commented 4 years ago

Dans ce cas à mon sens, c'est quand même extrême comme utilisation, c'est à nous aussi de ne pas proposer des contextes à 40 couches? Bref je ne limiterais pas l,outil de visibilité à ce moment.

L'avertissement pourrait faire, ma seule crainte c'est de recevoir souvent cet avertissement et de faire mal paraître l'application alors que la performance pourrait être quand même "acceptable". Si c'est 15 couches le max il me semble qu'on a un problème!

Mais si c'est 30-40 c'est quand même pas mal moins pire

Le problème, c'est l'ajout de couche par le catalogue.

ameliebernier commented 4 years ago

Par rapport à la "lourdeur", je croyais qu'un WMS avec beaucoup de détails l'image est plus lourde donc le rendu pourrait être plus difficile par le fureteur? Mais peut-être que ce n'est pas la cas!

Dans ton exemple aussi, il pas mal de WMS qui prennent plus de 2 secondes à répondre (jusqu'à 6), c'est quand même long

pelord commented 4 years ago

Même une fois chargées, le pan reste difficile. ca doit pas être lié au temps d'attente de la réponse

josee666 commented 4 years ago

Idée : pour garder cela simple et agile on pourrait faire un premier dévellopement qui répond au besoin initiale 1- ajouter le bouton oeil(oeil barré) dans la barre d'outil en sélection multiple (fonctionnement 🚀 selon ce qui a été voté)

On voit à l'usage limitation, seuil, disposition et si nécessaire, a ce moment, on demandera une amélioration/modification

ameliebernier commented 4 years ago

Je seconde, j'ai ouvert un autre issue concernant ce qu'on fait si trop de de couches sont ajoutées sur la carte https://github.com/infra-geo-ouverte/igo2/issues/493

mbarbeau commented 4 years ago

la performance dépend aussi de ton poste, moi je n'ai pas de problème avec le contexte cité ! À part que c'est long à afficher les wms mais ce n'est pas à cause de IGO !

pelord commented 3 years ago

@infra-geo-ouverte/depot-central-igo

Vous pensez quoi de ce correctif. https://github.com/infra-geo-ouverte/igo2-lib/commit/5b7ebc5a937ba35775e7f7f0bfe8c539cc2935d8

Il permet d'appeler seulement l'extent de la map plutot que 1.5x sa taille. Sa semble régler le problème. Avec le correctif :
https://geoegl.msp.gouv.qc.ca/igo2/mtq-quebec/?visiblelayers= Sans le correctif https://geoegl.msp.gouv.qc.ca/igo2/apercu-qc/?context=mtq&visiblelayers=

Vous devez faire le test sur un écran de grande taille + 1700px de largeur