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
Note
Le bouton Export du panneau Filter est lié à l’outil attribute table tool.
Exemple
Vous pouvez voir une vidéo avec un exemple : https://vimeo.com/331395259
Pré-requis
La couche doit publiée en WFS (voir WFS/OAPI) et la clé primaire doit aussi être publiée dans les Propriétés de la couche.
Configurer l’outil
Il existe un onglet dans le plugin Lizmap qui vous permet de configurer les entrées du filtre en fonction des champs de la couche. Vous pouvez ajouter un ou plusieurs champs pour une ou plusieurs couches. Si vous ajoutez des champs de 2 ou plusieurs couches différentes, Lizmap Web Client affichera une liste déroulante pour permettre à l’utilisateur de choisir la couche à filtrer. La sélection d’une couche rafraîchira le formulaire et désactivera le filtre actuel.
Vous devez ajouter une ligne dans le tableau du plugin pour chaque champ souhaité dans le formulaire de filtre. Pour chaque champ vous devez configurer des options :
Cliquer sur le bouton .
Couche: la couche source.
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 ».
Type : le type de l’entrée du formulaire parmi l’un des suivants : Texte, Valeurs uniques, Date, Nombre.
Champ : le nom du champ (dans la table en base données). Seulement pour les types Texte, Valeurs uniques et Nombre.
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.
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 enculture
etenvironnement
avec le séparateur `, `.
Pour éditer une couche dans la table, sélectionner la et cliquer sur le bouton ou alors double-cliquer sur la ligne.
Pour supprimer une couche de la table, cliquez sur celle-ci puis sur le bouton .
Pour monter ou descendre une couche, vous devez la sélectionner et cliquer ou . 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.
Si vous avez spécifié un texte séparateur, par exemple `, `, Lizmap trouvera les valeurs uniques des valeurs séparées du texte. Par exemple, la valeur d’une entité « culture, environnement » sera divisée en « culture » et « environnement » avec le séparateur `, `. En sélectionnant « culture » ou « environnement » dans le formulaire de saisie, vous afficherez cette entité.
Vous pouvez choisir de montrer deux types de champ différents :
Combo box : ce type affiche une combo box avec la liste des valeurs distinctes pour le champ. L’utilisateur ne pourra choisir qu’un seul élément parmi ces valeurs.
Checkboxes : ce type affichera autant de comboboxes que de valeurs distinctes pour le champ. Les données seront filtrées avec un
UNION
entre les éléments cochés.
Le filtre est construit comme suit:
( "field_thematique" LIKE '%Cuisine%' OR "field_thematique" LIKE '%Ecocitoyen%' )