Filter

Edit me

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} &gt; {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} &lt; {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>