Projet

Général

Profil

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

Ajouté par Benjamin Dauvergne il y a plus de 2 ans. Mis à jour il y a plus de 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
21 octobre 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

Lié à Combo - Development #61287: map: pouvoir accèder à la propriété couleur située dans "display_fields"Nouveau31 janvier 2022

Actions

Révisions associées

Révision fe64dcf9 (diff)
Ajouté par Benjamin Dauvergne il y a plus de 2 ans

maps: keep the marker's colour property (#58072)

Historique

#2

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.

#3

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).

#4

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
#5

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

  • Assigné à mis à Benjamin Dauvergne
#6

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

N'ayant pas trop de réponses à mes questions je propose une correction minimale.

#7

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.

#8

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.

#9

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.

#12

Mis à jour par Valentin Deniaud il y a plus de 2 ans

  • Statut changé de Solution proposée à Solution validée
#13

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)
#14

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
#15

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é

Formats disponibles : Atom PDF