Filter
Description
Voozanoo 4 dispose d’un système de filtre, il s’agit d’une ressource de type XML qui contient les mêmes éléments qu’un XML de formulaire:
- Dataset: descriptif des variables du filtre
- Layout: mise en forme du filtre
- Condition: conditions utilisables dans un dataquery.
A l’origine les filtres ont été développés pour les listings. Lorsqu’un filtre est lié à un listing, il est fusionné dans le xml de listing.
Note
Par défaut les données des filtres sont sauvegardés en session pour qu’elles soient ré-affichées au prochain chargement de la page. Ce mécanisme peut être désactivé en passant le paramètre flter_sess=0 dans la requête de chargement de la frame.
A partir de la version 2.24
Core_Library_Filter_Manager
La class Core_Library_Filter_Manager met à disposition plusieurs méthodes pour exploiter les filtres:
- ParseForm: fusionne les filtres sur le formulaire passé en
paramètre. Les filtres sont déclarés via l’attribut
id_filter
du noeud dataquery. - ParseDataquery: ajoute les conditions du filtre sur le dataquery
passé en paramètre. Comme précédement, le dataquery doit être lié à
un filtre vie l’attribut
id_filter
. - IsDataQueryCompatible: permet de savoir si un filtre est compatible avec un dataquery.
Exemple de XML
<?xml version="1.0" encoding="UTF-8"?>
<filter>
<dataset id="filter">
<metadata>
<fields>
<field id="ddn_min" type="date" mandatory="false" default_label="Date de naissance" default_short_label="DDN">
<date min="1900-01-01" max="2010-01-01"/>
</field>
<field id="ddn_max" type="date" mandatory="false" default_label="Date de naissance" default_short_label="DDN">
<date min="1900-01-01" max="2010-01-01"/>
</field>
<field id="cp" type="string" mandatory="false" default_label="Code postal" default_short_label="CP">
<string length="5" />
</field>
</fields>
</metadata>
</dataset>
<layout>
<group>
<form_row>
<statictext class="col-md-4 control-label">Date de naissance superieure à</statictext>
<value dataset="filter" field="ddn_min" mode="rw" />
</form_row>
<form_row>
<statictext class="col-md-4 control-label">Date de naissance inferieure à</statictext>
<value dataset="filter" field="ddn_max" mode="rw" />
</form_row>
<form_row>
<label class="col-md-4" dataset="filter" field="cp" />
<value dataset="filter" field="cp" mode="rw" />
</form_row>
</group>
</layout>
<conditions>
<condition sql="{ddn} > {crit_ddn_min}" optional="true" >
<field field_name="ddn" varset_name="pat" alias="ddn" />
<variable alias="crit_ddn_min" default="NULL">
<entry type="param" name="crit_ddn_min" />
<entry type="dataset" name="filter_export" field="ddn_min" row="current" />
</variable>
</condition>
<condition sql="{ddn} < {crit_ddn_max}" optional="true" >
<field field_name="ddn" varset_name="pat" alias="ddn" />
<variable alias="crit_ddn_max" default="NULL">
<entry type="param" name="crit_ddn_max" />
<entry type="dataset" name="filter_export" field="ddn_max" row="current" />
</variable>
</condition>
<condition sql="{cp} = {crit_cp}" optional="true" >
<field field_name="cp" varset_name="pat" alias="cp" />
<variable alias="crit_cp" default="NULL">
<entry type="param" name="crit_cp" />
<entry type="dataset" name="filter_export" field="cp" row="current" />
</variable>
</condition>
</conditions>
</filter>