Formulaire de filtrage - filtrer une couche en fonction de la valeur des champs

Principe

Cet outil affiche un formulaire dans le panneau de gauche, basé sur plusieurs champs, et permet aux utilisateurs de chercher parmi les couches de données avec un ensemble d’entrée de formulaire : des combo boxes, des cases à cocher, des entrées texte avec autocomplétion, des sélecteurs de date avec sliders entre la date minimum et maximum, etc.

Avertissement

Ceci fonctionne uniquement avec des couches provenant de base de donnés : PostgreSQL (recommandé), Spatialite et GeoPackage.

En utilisant du SQL, Lizmap va requêter les données afin de récupérer :

  • le nombre total des entités pour le filtre courant

  • les valeurs uniques de certains champs (pour le type Valeurs uniques par exemple)

  • le minimum et le maximum pour les champs numériques ou de date

  • l’emprise des données pour le filtre courant

Exemple

Vous pouvez voir une vidéo avec un exemple : https://vimeo.com/331395259

Pré-requis

La couche doit publiée en WFS (voir Capacités des services OGC) et la clé primaire doit aussi être publiée dans les Propriétés de la couche.

Configurer l’outil

../../_images/interface-add-form-filter.jpg

Il existe un nouvel onglet dans l’extension Lizmap qui vous permet de configurer les entrées de filtre en rapport aux champs de couche. Si vous ajoutez des champs de 2 couches différentes ou plus, Lizmap Web Client affichera un menu déroulant permettant la sélection de la couche à filtrer. La sélection d’une couche va rafraîchir le formulaire et désactiver le filtre courant.

  • Vous devez ajouter une ligne dans le tableau de l’extension pour chaque champ souhaité dans le formulaire de filtre. Pour chaque champ vous devez configurer des options :

    1. Cliquer sur le bouton add_layer_svg.

    2. Couche: la couche source.

    3. Titre : le titre souhaité pour l’entrée, qui sera affiché au-dessus de l’entrée du formulaire. Par exemple « Choisir une catégorie » pour un champ de couche intitulé « category ».

    4. Type : le type de l’entrée du formulaire parmi l’un des suivants : Texte, Valeurs uniques, Date, Nombre.

    5. Champ : le nom du champ (dans la table en base données). Seulement pour les types Texte, Valeurs uniques et Nombre.

    6. Date min. : le champ contenant la date de début de votre objet (ex : « debut_date » d’un événement). Ceci n’est nécessaire que pour le type Date. Si vous n’avez qu’un seul champ date dans vos données, vous devriez le sélectionner dans le champ Date min.

      • Date max. : le champ contenant la date de fin de votre donnée. Si vous avez 2 champs contenant des dates, un pour la date de début et un autre pour la date de fin, vous pouvez les différencier. Sinon, vous devez utiliser le même champ pour Date min. et Date max..

      • Format : le format pour le type Valeurs uniques seulement. Sa valeur peut être Liste sélection, qui affichera une combo box, ou Cases à cocher qui affichera une case à cocher pour chaque valeur distincte. Les valeurs distinctes sont interrogées dynamiquement par Lizmap Web Client.

    7. Séparateur : pour le type Valeurs uniques seulement. A utiliser si vous voulez séparer les valeurs du champ par un séparateur. Ex : culture, environnement peuvent être séparés en culture et environnement avec le séparateur `, `.

  • Pour éditer une couche dans la table, sélectionner la et cliquer sur le bouton edit_layer_svg ou alors double-cliquer sur la ligne.

  • Pour supprimer une couche de la table, cliquez sur celle-ci puis sur le bouton remove_layer_svg.

  • Pour monter ou descendre une couche, vous devez la sélectionner et cliquer down_layer_svg ou up_layer_svg. L’ordre changera dans Lizmap également.

Description des différents types de champ du formulaire

Texte

Le type le plus simple. Avec ce type d’entrée, l’utilisateur verra une entrée classique de type texte. Vous pouvez saisir n’importe quel texte et validez. L’autocomplétion est activée par défaut, ce qui signifie que Lizmap retrouvera les valeurs uniques pour ce champ. Ceci pourrait dans le futur devenir optionnel si certains jeux de données étaient trop gros et que l’autocomplétion devenait trop lourde.

Le filtre est construit comme suit:

"field" LIKE '%foo%'

Date

Ce type de saisie affiche un curseur avec deux poignées pour permettre la recherche entre les deux valeurs sélectionnées. Les deux entrées de texte sont également affichées et peuvent être utilisées pour définir manuellement les dates minimale et maximale.

La date est « tronquée » à un format date (pas de donnée temps tel que les heures, minutes ou secondes actuellement).

Le pas du slider est codé en dur et vaut 86400 secondes, ce qui représente 1 jour.

Le filtre est construit comme suit:

( ( "field_date" >= '2017-04-23' OR  "field_date" >= '2017-04-23' ) AND ( "field_date" <= '2018-06-24' OR  "field_date" <= '2018-06-24' ) )

Numérique

Ce type de saisie affiche un curseur avec deux poignées pour permettre la recherche entre les deux valeurs sélectionnées. Deux entrées de texte sont également affichées et peuvent être utilisées pour définir manuellement les valeurs minimale et maximale.

Le filtre est construit comme suit:

( ( "field" >= 100 ) AND ( "field_date" <= 200 ) )

Valeurs uniques

Lizmap interrogera les données pour obtenir les valeurs distinctes du champ. Vous pouvez choisir deux types de saisie différents : Liste sélection ou cases à cocher.

If you have specified a splitter text, for example `, `, Lizmap will find the unique values of the separated text values. For example the value of one feature culture, environment will be split into culture and environment with the splitter `, `. Selecting culture or environment in the form input will show this feature.

Vous pouvez choisir de montrer deux types de champ différents :

  • Combo box: this type will show a combo box with the list of distinct values for the field. The user will be able to choose only one item among the values.

  • Checkboxes: this type will show as many comboboxes as distinct values for the field. The data will be filtered with a UNION between checked items.

Le filtre est construit comme suit:

( "field_thematique" LIKE '%Cuisine%'  OR "field_thematique" LIKE '%Ecocitoyen%'  )