diff --git a/administration/guide_developpeur/filtres_couches.md b/administration/guide_developpeur/filtres_couches.md index 692d578b1328aa959f312f636c838f5641ca83ee..10b6a11189906b97e6e7182ec7a488b4a23ad28f 100644 --- a/administration/guide_developpeur/filtres_couches.md +++ b/administration/guide_developpeur/filtres_couches.md @@ -55,9 +55,9 @@ Après avoir mis à jour le calque, une nouvelle section "Formulaire de filtre" Dans le studio il faudra définir un champs de type texte ou une liste déroulante avec une source de données adaptée. -Il faudra définir votre filtre pour qu'il utilise une valeur par défaut qui permettra de court-circuiter le vrai filtre. (Dans le cas présent **'empty'**) +Il faudra définir votre filtre pour qu'il utilise une valeur par défaut qui permettra de court-circuiter le filtre. (Dans le cas présent **'empty'**) -Si vous voulez un fonctionnement plus proche d'un LIKE SQL qu'une concordance parfaite utilisez **~** à la place de **=**. (voir exemple ci-dessous) +Si vous voulez un fonctionnement plus proche d'un LIKE SQL utilisez **~** à la place de **=**. (voir exemple ci-dessous) ``` FILTER (([type] = '%type%' or '%type%' = 'empty') and ([liketext] ~ '%liketext%' or '%liketext%' = 'empty') @@ -77,13 +77,14 @@ Pour filtrer sur un attribut unique de type date/timestamp référez vous à la Vue que la spécification d'un champs de type date/timestamp se fait dans la partie **METADATA**, il est impossible pour MapServer de traiter deux champs de ce type en théorie. -En réalité par un moyen détourné il est possible de géré autant de champs date/timestamp que vous voulez. +En réalité par un moyen détourné, il est possible de gérer autant de champs date/timestamp que vous voulez. -Pour l'exemple je vais prendre trois champs en base creation_date (date de création d'un objet, type postgres timestamp with time zone), date_debut_travaux (une date de début de travaux pour un objet métier par exemple, type timestamp with time zone), duree_travaux_jour (la durée des travaux en jours, type integer) +Pour l'exemple, je vais prendre trois champs en base creation_date (date de création d'un objet, type postgres timestamp with time zone), date_debut_travaux (une date de début de travaux pour un objet métier par exemple, type timestamp with time zone), duree_travaux_jour (la durée des travaux en jours à partie de la date de début, type integer) ### a - Adapter votre vue -On suppose que vous avez une vue postgres/postgis qui retourne déjà ces attributs. Pour permettre à MapServer de les traiter comme des entiers il va falloir que la vue retourne des entiers. +Pour permettre à MapServer de les traiter comme des entiers il va falloir que la vue retourne des entiers. + Exemple de code permettant de faire cela : ```sql @@ -95,12 +96,12 @@ Exemple de code permettant de faire cela : ### b - Adapter votre formulaire avec le studio Ajouter les champs dates que vous voulez. Dans le cas présent on va laisser la possibilité de prendre une date au dessus, en dessous, ou d'encadrer la/les date(s). -Pour chaque champs date il faut un champ caché. Le champs date va renvoyer une valeur formaté du type 'DD/MM/YYYY' ou 'YYYY-MM-DD', mais nous voulons un timestamp. Nous allons voir dans la prochaine partie comment utilisé un champ date pour remplir un champs caché avec un timestamp. +Pour chaque champs date il faut un champs caché. Le champs date va renvoyer une valeur formatée du type 'DD/MM/YYYY' ou 'YYYY-MM-DD', mais nous voulons un timestamp. Nous allons voir dans la prochaine partie comment utiliser un champ date pour remplir un champs caché avec un timestamp.  -### c - Permettre au formulaire de calculé les timestamps +### c - Permettre au formulaire de calculer les timestamps Il va falloir ajouter du code javascript spécifique à ce formulaire. Pour ce faire il va falloir changer de mode d'utilisation du studio, pour pouvoir éditer du javascript. @@ -108,7 +109,7 @@ Il va falloir ajouter du code javascript spécifique à ce formulaire. Pour ce f Vous allez arriver devant un champ vide. -Voici le code permettant de remplir les champs cachés avec les timestamps saisie dans les champs dates pour l'exemple : +Voici le code permettant de remplir les champs cachés pour l'exemple : ```javascript /* global angular, goog, moment, vitisApp, bootbox */ @@ -205,12 +206,10 @@ var destructor_form = function () { /**********************************************************************************/ ``` -Ce code créer un instance pour surveiller les chagement des champs dates (**$watch**) et utilise une librairie intégré à Vitis (**moment.js**) pour parser la date, la transformer en timestamp Unix et stocké le résultat dans le champ caché. +Ce code créé une instance pour surveiller les changements des champs dates (**$watch**) et utilise une librairie intégrée à Vitis (**moment.js**) pour parser la date, la transformer en timestamp Unix et stocker le résultat dans le champ caché. ### d - Intégration du filtre dans la couche MapServer -J'utilise par défaut 0 pour tous les champs, mais il est possible d'utiliser 0 pour les minimums et une valeur équivalente au timestamp du 01/01/3000 pour les maximums. - ``` FILTER (([mstmstp_date_debut_travaux] < '%travaux_date_max%' or [mstmstp_date_fin_travaux] < '%travaux_date_max%') and ([mstmstp_date_debut_travaux] < '%travaux_date_min%' or [mstmstp_date_fin_travaux] < '%travaux_date_min%') and ([mstmstp_creation_date] < '%travaux_date_max%') and ([mstmstp_creation_date] > '%creation_date_min%'))