Development #21034
cartes: option pour afficher les propriétés du geojson lors du clic sur le marqueur.
0%
Description
Comme discuté sur la liste.
Le vendredi 05 janvier 2018 à 16:45 +0100, Serghei Mihai a écrit : > Pour compléter l'idée de Pierre: en plus d'une option décidant s'il > faut ou > pas afficher les propriétés du geojson, il faudrait aussi décider si > tous les > champs doivent être affichés, dans quel ordre, est-ce qu'on leur > attribue des > libellés. Avant d'avoir cette version complète/compliquée avoir juste la version simple on/off m'irait assez bien. Pierre
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Josué Kouka il y a environ 6 ans
- Statut changé de Nouveau à En cours
- Assigné à mis à Josué Kouka
Est ce que l'on affiche toutes les propriétés, ou l'on permet de définir une liste pour n'en afficher que certaines ?
Mis à jour par Frédéric Péters il y a environ 6 ans
Comme discuté sur la liste.
Reprendre ce qui y a été dit, parce que là on ne sait visiblement pas quoi faire.
Mis à jour par Brice Mallet il y a environ 6 ans
Me convient également dans mon cas d'usage :avoir juste la version simple on/off m'irait assez bien
- sur la carte visible non loggué dans combo (https://mesdemarches-fsb.test.entrouvert.org/tests/test-carto/)
- au clic sur une puce s'afficherait les deux valeurs enregistrées dans "typologie signalements" et "statut simplifié" (https://stats-fsb.test.entrouvert.org/visualization/14/geojson/)
OK pour moi
Mis à jour par Benjamin Dauvergne il y a environ 6 ans
Un simple template moustache pour le contenu des vignettes et puis basta, non ?
Mis à jour par Frédéric Péters il y a environ 6 ans
au clic sur une puce s'afficherait les deux valeurs enregistrées
Les deux valeurs uniquement, ou également des libellés ? Et dans quel ordre ? (ici par hasard ça affiche typologie signalement avant statut simplifié, mais ça n'est défini nulle part)
Et s'il faut afficher des libellés, ceux-ci seraient les textes du json, et donc "statut simplifié", un peu obscur, et triste de sa majuscule perdue ?
Mis à jour par Brice Mallet il y a environ 6 ans
Frédéric Péters a écrit :
Les deux valeurs uniquement
pour faire simple, oui suffit
ou également des libellés ?
Et s'il faut afficher des libellés, ceux-ci seraient les textes du json, et donc "statut simplifié", un peu obscur, et triste de sa majuscule perdue ?
si on décide d'afficher les libellés alors impliquerait de pouvoir les modifier, oui
Et dans quel ordre ? (ici par hasard ça affiche typologie signalement avant statut simplifié, mais ça n'est défini nulle part)
Si l'ordre découle du GéoJSON (regroupement horizontal en premier ou vertical en 2ème, ou inversement) permettrait de décider en amont et tant mieux.
Si ne peut être choisi, dans mon cas d'usage de Fontenay, pas grave, à condition que l'ordre soit toujours le même sur chacune des icônes.
Mis à jour par Frédéric Péters il y a environ 6 ans
Les deux valeurs uniquement
pour faire simple, oui suffit
Mais sans libellés, au-delà de deux valeurs, ça va vite devenir un truc incompréhensible.
Si l'ordre découle du GéoJSON
Non, il ne définit pas d'ordre.
Si ne peut être choisi, dans mon cas d'usage de Fontenay, pas grave, à condition que l'ordre soit toujours le même sur chacune des icônes.
Ça veut alors dire trier sur base des libellés (alphabétiquement a priori).
Mis à jour par Josué Kouka il y a environ 6 ans
- Fichier maps_marker_data.png maps_marker_data.png ajouté
- Fichier 0001-maps-display-marker-data-in-popup-21034.patch 0001-maps-display-marker-data-in-popup-21034.patch ajouté
- Patch proposed changé de Non à Oui
- la gestion de l'affichage ou pas de la popup au niveau de la configuration de la cellule
- le style pour accompagner l'affichage des données de la popup.
Mis à jour par Frédéric Péters il y a environ 6 ans
Quelques commentaires plus haut l'opinion de Brice est de ne pas afficher le nom des attributs en tant que libellés. (et mon avis est qu'à un moment c'est quand même important d'afficher des libellés mais les noms de propriétés ne sont pas adaptés).
Mis à jour par Josué Kouka il y a environ 6 ans
- Fichier 0001-maps-display-marker-data-in-popup-21034.patch 0001-maps-display-marker-data-in-popup-21034.patch ajouté
Frédéric Péters a écrit :
Quelques commentaires plus haut l'opinion de Brice est de ne pas afficher le nom des attributs en tant que libellés. (et mon avis est qu'à un moment c'est quand même important d'afficher des libellés mais les noms de propriétés ne sont pas adaptés).
Ok je comprends, mais je pense quand meme utile de les avoir de les avoir des maintenant. Je trouve juste pas assez informatif d'avoir web
(pour parler de canal) et Déchets et nettoiement
(typologie) par exemple lorsque l'on clique sur un marqueur.
Mis à jour par Frédéric Péters il y a environ 6 ans
Ok je comprends, mais je pense quand meme utile de les avoir de les avoir des maintenant.
Il faut alors du code pour pouvoir assurer une correspondance entre libellés et propriété. Ce qui est bien c'est qu'en même temps ça permettra de gérer l'ordre d'affichage.
Mis à jour par Josué Kouka il y a environ 6 ans
- Fichier 0001-maps-display-marker-data-in-popup-21034.patch 0001-maps-display-marker-data-in-popup-21034.patch ajouté
- Fichier maps_marker_data.png maps_marker_data.png ajouté
Frédéric Péters a écrit :
Ok je comprends, mais je pense quand meme utile de les avoir de les avoir des maintenant.
Il faut alors du code pour pouvoir assurer une correspondance entre libellés et propriété. Ce qui est bien c'est qu'en même temps ça permettra de gérer l'ordre d'affichage.
Ok, après discussion avec Brice on part pour une première version sans les libellés. Cette version correspond au patch attaché. j'ai créé le ticket #21841 pour l'évolution sur l'affichage des libellés .
Mis à jour par Josué Kouka il y a environ 6 ans
- Lié à Bug #21841: cellule carto: afficher les libellés des propriétés d'un geojson en tant que libellés ajouté
Mis à jour par Frédéric Péters il y a environ 6 ans
Attention Serghei aussi est occupé à ajouter une migration sur ce modèle, c'est plutôt malheureux de se trouver à se marcher sur les pieds alors qu'il y a mille choses à faire.
display_marker_data = models.BooleanField(default=False, verbose_name=_('Display marker data'))
Des échanges sur la liste je préférerais anticiper un rien et avoir un marker_onclick_behaviour, qui serait une liste de possibilités, aujourd'hui ('rien', 'affichage des infos dans une popup'), plus tard d'autres options.
popup += '<p class="popup-field"><span class="field-label">' + value + '</span>' + '</p>';
Tu ne peux pas utiliser une classe field-label et mettre dedans une valeur et te dire que c'est logique.
data-display-marker-properties="{{ cell.display_marker_data }}"
En suivant ma première remarque sur marker_onclick_behaviour, cette remarque sera obsolète mais ici, data-whatever="True" (parce que repr() du bool()), c'est interprété correctement par le javascript ?
>>> $('[data-plop]').data('plop') "False" >>> if ($('[data-plop]').data('plop')) console.log('fail') fail
Et noté dans ce ticket, il faut assurer un ordre stable pour les propriétés, il n'y a rien de particulier fait ici, $.each(feature.properties(... va les prendre dans je ne sais quel ordre; tu as une référence pour dire que c'est bon deux objets javascript énumèrent toujours leurs propriétés dans un ordre identique ?
Mis à jour par Josué Kouka il y a environ 6 ans
- Fichier 0001-maps-display-marker-data-in-popup-21034.patch 0001-maps-display-marker-data-in-popup-21034.patch ajouté
Ok patch avec les commentaires pris en compte.
Mis à jour par Frédéric Péters il y a environ 6 ans
Ta migration est en conflit avec celle de Serghei, j'avais prévenu.
Mis à jour par Frédéric Péters il y a environ 6 ans
){
Très sérieusement, je ne vais plus relire les patchs où il n'y a pas un minimum d'application sur le style.
Mis à jour par Josué Kouka il y a environ 6 ans
- Fichier 0001-maps-add-handling-of-marker-behaviour-on-click-21034.patch 0001-maps-add-handling-of-marker-behaviour-on-click-21034.patch ajouté
Frédéric Péters a écrit :
Ta migration est en conflit avec celle de Serghei, j'avais prévenu.
){
Corrigés.
Mis à jour par Frédéric Péters il y a environ 6 ans
let properties = Object.keys(feature.properties).sort().reduce(function(new_prop, key) { new_prop[key] = feature.properties[key]; return new_prop; }, {});
rly?
$.each(properties, function(key, value) {
properties reste un Object (et j'ai du exécuter le code au-dessus pour le vérifier, si peu lisible); quelle garantie que sur cet Object, mais pas le précédent, les propriétées soient lues par ordre alphabétique ?
Mis à jour par Josué Kouka il y a environ 6 ans
- Fichier 0001-maps-add-handling-of-marker-behaviour-on-click-21034.patch 0001-maps-add-handling-of-marker-behaviour-on-click-21034.patch ajouté
J'avoue c'etait un peu wtf. Un meilleur patch
Mis à jour par Frédéric Péters il y a environ 6 ans
Tu utilises quelle source pour tes geojson de test ? (la question étant : te garantit-elle que les valeurs seront échappées pour être ainsi tapées dans l'html ?)
Mis à jour par Josué Kouka il y a environ 6 ans
- Fichier 0001-maps-add-handling-of-marker-behaviour-on-click-21034.patch 0001-maps-add-handling-of-marker-behaviour-on-click-21034.patch ajouté
Frédéric Péters a écrit :
Tu utilises quelle source pour tes geojson de test ? (la question étant : te garantit-elle que les valeurs seront échappées pour être ainsi tapées dans l'html ?)
Je m'assure que les valeurs reçus soient échappées. (En passant il semble y avoir un bug lorsque le champ group markers in cluster
est coché, j'essaie de trouver la cause).
Mis à jour par Frédéric Péters il y a environ 6 ans
popup += '<p class="popup-field"><span class="field-value">' + escape(value[1]) + '</span>';
escape() / Obsolète / Cette fonctionnalité a été supprimée des standards du Web. Bien que quelques navigateurs puissent encore la supporter, elle est en cours d'éradication. Ne l'utilisez ni dans d'anciens projets, ni dans de nouveaux. Les pages et applications Web l'utilisant peuvent cesser de fonctionner à tout moment. — https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/escape
~~
Il y avait quand même du vrai dans la question sur l'origine de tes sources geojson de test, parce qu'à part la vue geojson d'un formulaire spécifique dans w.c.s., je ne vois pas où tu trouverais feature.properties.display_fields, mais si c'est w.c.s., les valeurs sont échappées.
Mis à jour par Frédéric Péters il y a environ 6 ans
escape() / Obsolète / etc.
Et à vérifier, totalement inadapté, si j'ai une valeur "film untel (> 16ans)", je veux que "film untel (> 16ans)" s'affiche, pas "film%20untel%20%28%3E%2016ans%29".
~~
Avec ton exemple où "Voirie et espace public" apparaît, ça aurait pourtant du te sauter aux yeux que ça n'allait pas. (?)
Mis à jour par Josué Kouka il y a environ 6 ans
Il y avait quand même du vrai dans la question sur l'origine de tes sources geojson de test, parce qu'à part la vue geojson d'un formulaire spécifique dans w.c.s., je ne vois pas où tu trouverais feature.properties.display_fields, mais si c'est w.c.s., les valeurs sont échappées.
Pour repondre a ta question en attendant de poser un patch, mes sources geojson de test viennent à la fois de w.c.s et de bijoe.
Mis à jour par Frédéric Péters il y a environ 6 ans
- Lié à Development #22031: Modifier le retour geojson pour être clair sur le côté échappé (ou pas) des valeurs ajouté
Mis à jour par Josué Kouka il y a environ 6 ans
- Fichier 0001-maps-add-handling-of-marker-behaviour-on-click-21034.patch 0001-maps-add-handling-of-marker-behaviour-on-click-21034.patch ajouté
Ajout d'une function qui échappe les caractères quand il le faut
Mis à jour par Frédéric Péters il y a environ 6 ans
Ajout d'une function qui échappe les caractères quand il le faut
Non, jamais tu n'arriveras à déterminer "quand il le faut" (ni toi, ni personne). Ici w.c.s. va répondre avec un <a href="...">fichier.pdf</a> et tu vas échapper ça et plouf. Si j'ai créé le ticket #22031 côté w.c.s., c'est bien parce que ce n'est pas côté navigateur qu'on peut deviner les choses.
Mis à jour par Josué Kouka il y a environ 6 ans
Frédéric Péters a écrit :
Ajout d'une function qui échappe les caractères quand il le faut
Non, jamais tu n'arriveras à déterminer "quand il le faut" (ni toi, ni personne). Ici w.c.s. va répondre avec un <a href="...">fichier.pdf</a> et tu vas échapper ça et plouf. Si j'ai créé le ticket #22031 côté w.c.s., c'est bien parce que ce n'est pas côté navigateur qu'on peut deviner les choses.
Je ne comprends pas bien, l'échappement coté serveur ou navigateur ne serait pas identique ?
In [4]: django.utils.html.escape('<a href="https://whatever.com">whatever</a>') Out[4]: u'<a href="https://whatever.com">whatever</a>'
Ou bien ce que tu veux dire, c'est de juste le faire en backend combo lorsque l'on récupère les sources ?
Enfin, j'ai juste suivi ce que l'on a décidé hier. J'ai peut etre mal compris ce qui a été dit alors.
Mis à jour par Frédéric Péters il y a environ 6 ans
Je ne comprends pas bien, l'échappement coté serveur ou navigateur ne serait pas identique ?
Le serveur connait la nature de ce qu'il sert. Le client ne connait pas la nature de ce qu'il reçoit (juste une chaine).
Côté client, si tu reçois :
- Une chaine "<script>alert('hello')</script>', tu l'échappes ou pas ?
- Une chaine "<a href=...>plop.pdf</a>', tu l'échappes ou pas ?
Mis à jour par Josué Kouka il y a presque 6 ans
- Fichier 0001-maps-add-handling-of-marker-behaviour-on-click-21034.patch 0001-maps-add-handling-of-marker-behaviour-on-click-21034.patch ajouté
Frédéric Péters a écrit :
Je ne comprends pas bien, l'échappement coté serveur ou navigateur ne serait pas identique ?
Le serveur connait la nature de ce qu'il sert. Le client ne connait pas la nature de ce qu'il reçoit (juste une chaine).
Côté client, si tu reçois :
- Une chaine "<script>alert('hello')</script>', tu l'échappes ou pas ?
Si
- Une chaine "<a href=...>plop.pdf</a>', tu l'échappes ou pas ?
Si
Un patch avec la gestion de échappement et un test.
Mis à jour par Josué Kouka il y a presque 6 ans
- Fichier 0001-maps-add-handling-of-marker-behaviour-on-click-21034.patch 0001-maps-add-handling-of-marker-behaviour-on-click-21034.patch ajouté
Sans les modifications inutules (saut de ligne, ...)
Mis à jour par Frédéric Péters il y a presque 6 ans
Il y a deux mois : « Ici w.c.s. va répondre avec un <a href="...">fichier.pdf</a> et tu vas échapper ça et plouf ».
Plus tôt encore, #22031 du côté de w.c.s.
Pour reprendre, aujourd'hui, le client (que ça soit le navigateur ou combo client de w.c.s. quand il en reçoit les données), ne peut pas savoir ce qu'il faut échapper. Ne pourra jamais le savoir. Il faut mettre en place #22031. À partir de là, et à partir de là seulement, il deviendra possible au client de savoir que, pour le cas particulier de l'attribut nommé "html_value", décidé par convention, il n'y aura pas d'échappement à faire.
Et ça, dans le js, sur la forme :
for (...) { $value_elem = $('<span class="...">'); if (whatever.html_value) { $value_elem.html(whatever.html_value); } else { $value_elem.text(whatever.value); } }
Mis à jour par Josué Kouka il y a presque 6 ans
- Fichier 0001-maps-add-handling-of-marker-behaviour-on-click-21034.patch 0001-maps-add-handling-of-marker-behaviour-on-click-21034.patch ajouté
En prenant en compte le nouveau format du geojson wcs.
Mis à jour par Frédéric Péters il y a presque 6 ans
Dès le premier écran, je ne suis pas allé plus loin, Marker behaviour on clik
.
Mis à jour par Josué Kouka il y a presque 6 ans
- Fichier 0001-maps-add-handling-of-marker-behaviour-on-click-21034.patch 0001-maps-add-handling-of-marker-behaviour-on-click-21034.patch ajouté
Frédéric Péters a écrit :
Dès le premier écran, je ne suis pas allé plus loin,
Marker behaviour on clik
.
Path avec correction
Mis à jour par Frédéric Péters il y a presque 6 ans
Misère, toujours premier écran, pas allé plus loin, la même erreur mais cette fois en majscules. MARKER_ONCLIK_BEHAVIOUR.
Mis à jour par Josué Kouka il y a presque 6 ans
- Fichier marker_behaviour_onclick.png marker_behaviour_onclick.png ajouté
- Fichier 0001-maps-add-handling-of-marker-behaviour-on-click-21034.patch 0001-maps-add-handling-of-marker-behaviour-on-click-21034.patch ajouté
Tous est en marker_behaviour_onclick
.
Mis à jour par Frédéric Péters il y a presque 6 ans
Si quelqu'un trouve la capture attachée utile, qu'il compte présenter ça à des clients, qu'il l'écrive ici. De mon côté je notais il y a quatre mois "au-delà de deux valeurs, ça va vite devenir un truc incompréhensible", bref j'ai fait mon taf de relecture technique, et comme je trouverais encore à redire, il est grand temps que j'arrête.
Mis à jour par Josué Kouka il y a presque 6 ans
Frédéric Péters a écrit :
Si quelqu'un trouve la capture attachée utile, qu'il compte présenter ça à des clients, qu'il l'écrive ici. De mon côté je notais il y a quatre mois "au-delà de deux valeurs, ça va vite devenir un truc incompréhensible", bref j'ai fait mon taf de relecture technique, et comme je trouverais encore à redire, il est grand temps que j'arrête.
On en avait discuté et c'est ce que les CPF voulaient.
Mis à jour par Frédéric Péters il y a presque 6 ans
Je ne vois pas de réponse à mon "Mais sans libellés, au-delà de deux valeurs, ça va vite devenir un truc incompréhensible."; peut-être qu'avec la capture présentée il se dira qu'en fait non, ce n'est pas présentable. Ou pas. Ou il fallait juste quelque chose et on s'en fout de la qualité et c'est pour ça que je note que j'arrête ici.
Mis à jour par Brice Mallet il y a presque 6 ans
- Fichier Capture d_écran contenu pop-up souhaité par Brice.png Capture d_écran contenu pop-up souhaité par Brice.png ajouté
- avoir 3 champs et uniquement ces 3 là
- afficher les libellés de ces 3 champs
Copie écran jointe avec l'actuel à gauche, mon souhaité à droite
Mis à jour par Stéphane Laget il y a presque 6 ans
Ce que propose Brice ma parait bien.
Juste, si ces marqueurs doivent également être utilisés en front, s'assurer que le statut affiché est bien visible par l'usager.
Mis à jour par Josué Kouka il y a presque 6 ans
- Fichier 0001-maps-add-handling-of-marker-behaviour-on-click-21034.patch 0001-maps-add-handling-of-marker-behaviour-on-click-21034.patch ajouté
- Fichier combo_geojson.png combo_geojson.png ajouté
- Statut changé de En cours à Solution proposée
Ok. Un patch qui affiche libellé et valeur du geojson.
(Le filtrage des attributs à afficher se fait au niveau de WCS).
Mis à jour par Frédéric Péters il y a presque 6 ans
Mis à jour par Josué Kouka il y a presque 6 ans
Mis à jour par Frédéric Péters il y a presque 6 ans
Par rapport au ticket wcs pointé, sur les règles CSS pour l'affichage de l'image, il aurait fallu les reprendre, plutôt qu'en faire une version minimaliste ici, avec son risque de débordement en cas de photo en mode portrait, par exemple.
Mis à jour par Frédéric Péters il y a presque 6 ans
Dans le code js qui n'est pas if feature.properties.display_fields
, il y a $popup_field.find
mais $popup_field
n'est pas définie. Il serait à mon sens utile de poser sur le p.popup-field une classe avec le nom de l'attribut, pour au moins permettre, sans code, juste avec de la CSS, de cacher des propriétés.
Mis à jour par Frédéric Péters il y a presque 6 ans
- Lié à Development #25111: inclure l'identifiant du champ dans les données fournies dans le geojson ajouté
Mis à jour par Frédéric Péters il y a presque 6 ans
- Lié à Development #25094: carto : permettre de configurer les propriétés reprises dans le geojson ajouté
Mis à jour par Frédéric Péters il y a presque 6 ans
- Fichier 0001-maps-add-handling-of-marker-behaviour-on-click-21034.patch 0001-maps-add-handling-of-marker-behaviour-on-click-21034.patch ajouté
Voilà une version modifiée du patch :
- correction du js prenant les propriétés pour du geojson non tiré de w.c.s.
- ajustement au balisage, ça passe de <p> à <div>, parce qu'un champ de type fichier c'est un <div> et qu'il n'a pas le droit d'être placé dans un <div>.
- ajout d'une classe property-/nom de la propriété/, pour permettre du style.
- pour les geojson qui ne sont pas issus de w.c.s., qui sont une série de valeurs sans libellé, affichage avec une graisse normale.
Mis à jour par Christophe Siraut il y a presque 6 ans
ok pour moi. (pas testé, juste relu le ticket et le patch)
Mis à jour par Thomas Noël il y a presque 6 ans
- Statut changé de Solution proposée à Solution validée
Ack
Mis à jour par Frédéric Péters il y a presque 6 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit d30920adfcecb5dee3b9f8e10dd664252ebe437c Author: Josue Kouka <jkouka@entrouvert.com> Date: Thu Feb 15 11:21:37 2018 +0100 maps: add handling of marker behaviour on click (#21034)
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Fermé
maps: add handling of marker behaviour on click (#21034)