Development #58072
map: le champ MapLayer.properties sert à la fois de filtre pour le GeoJSON et le contenu des popups, mais on ne peut donc pas bénéficier de la propriété couleur sans l'afficher dans la popup
0%
Description
Cf. #58060
On un GeoJSON qui contient des features de cette forme :
{
"0": {
"type": "Feature",
"id": "dmt_zonage_om_tm.fid-79e23e97_17ca106df0f_-6d1a",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
1.3051,
43.5949
],
....
[
1.3051,
43.5949
]
]
]
},
"geometry_name": "geom",
"properties": {
"id": 0,
"type_collecte": "Ordures Ménagères",
"jour_collecte": "Lundi Jeudi Soir",
"htmlcol": "#43ABAB",
"bbox": [
1.2822,
43.5893,
1.3668,
43.634
]
}
}
}
Si on ne définit pas MapLayer.properties, les popups sont vides.
Si on définit MapLayer.properties à "type_collecte", alors on perd la couleur, parce l'objet "properties" a ses clés filtrées selon layer.properties
par le code suivant :
class MapLayer(...):
...
def get_geojson(...):
...
properties = []
if self.properties:
properties = [x.strip() for x in self.properties.split(',')]
for feature in features:
if 'display_fields' in feature['properties']:
# w.c.s. content, filter fields on varnames
feature['properties']['display_fields'] = [
x for x in feature['properties']['display_fields'] if x.get('varname') in properties
]
else:
# classic geojson, filter properties
feature['properties'] = dict(
[x for x in feature['properties'].items() if x[0] in properties]
)
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
J'enlèverai bien le filtrage fait coté serveur, puisqu'il est fait dans le JS qui génère le contenu des popups; mais ça sert peut-être à quelque chose quelque part.
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
Et bien sûr si on met htmlcol dans properties, on se retrouve avec le code de la couleur dans la popup (mais on retrouve les surfaces colorées).
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
- Sujet changé de map: le champ MapLayer.properties sert à la foir de filtre pour le GeoJSON et le contenu des popups, mais on ne peut donc pas bénéficier de la propriété couleur sans l'afficher dans la popup à map: le champ MapLayer.properties sert à la fois de filtre pour le GeoJSON et le contenu des popups, mais on ne peut donc pas bénéficier de la propriété couleur sans l'afficher dans la popup
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
- Fichier 0001-maps-keep-the-marker-s-colour-property-58072.patch 0001-maps-keep-the-marker-s-colour-property-58072.patch ajouté
- Tracker changé de Bug à Development
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
N'ayant pas trop de réponses à mes questions je propose une correction minimale.
Mis à jour par Frédéric Péters il y a plus de 2 ans
En fait ça se discute dans #57760 et ce n'est sans doute pas le plus pratique d'avoir les deux tickets qui bougent en même temps.
Mis à jour par Valentin Deniaud il y a plus de 2 ans
Benjamin Dauvergne a écrit :
J'enlèverai bien le filtrage fait coté serveur, puisqu'il est fait dans le JS qui génère le contenu des popups; mais ça sert peut-être à quelque chose quelque part.
Je suis sur cette ligne là aussi, donc le patch me va. Je pense que ça n'entre pas en conflit avec #57760, il y aura un petit rebase sans conséquence à faire. Par contre c'est rouge.
Mis à jour par Frédéric Péters il y a plus de 2 ans
J'enlèverai bien le filtrage fait coté serveur, puisqu'il est fait dans le JS qui génère le contenu des popups; mais ça sert peut-être à quelque chose quelque part.
Je suis sur cette ligne là aussi
C'est utile pour ne pas charger la connexion et le navigateur avec un geojson lourd et/ou, surtout, contenant des informations qui ne doivent pas aboutir à l'usager.
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
- Fichier 0001-maps-keep-the-marker-s-colour-property-58072.patch 0001-maps-keep-the-marker-s-colour-property-58072.patch ajouté
Ok donc ma proposition va dans le bon sens.
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
Mis à jour par Valentin Deniaud il y a plus de 2 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit fe64dcf9464595a31a468a86b3fa6b0a72da1001 Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Wed Nov 10 09:44:26 2021 +0100 maps: keep the marker's colour property (#58072)
Mis à jour par Frédéric Péters il y a plus de 2 ans
- Statut changé de Résolu (à déployer) à Solution déployée
Mis à jour par Serghei Mihai il y a environ 2 ans
- Lié à Development #61287: map: pouvoir accèder à la propriété couleur située dans "display_fields" ajouté
maps: keep the marker's colour property (#58072)