Vous le savez peut-être, à partir du 5 Octobre se tiendra la conférence Adobe MAX à Los Angeles. Au cours de cet évènement, de nombreuses conférences et autres keynotes.
De grandes annonces seront faites pendant ces sessions comme par exemple l'arrivée d'Air 2.0 et d'autres nouveautés de Flash Player. Si vous voulez connaître ses annonces, vous avez plusieurs solutions:
- Faire le déplacement jusque LA
- Lire les reviews sur les différents blogs (avec un temps de retard bien sûr)
- … et en live sur le site d'Adobe Max

En effet, comme l'annonce Ryan Stewart sur son blog, vous pourrez regarder les keynotes en live sur MAX Online. Les meilleurs sessions seront elles-aussi ajoutées. Vous trouverez ainsi l'ensemble des sessions sur le site de MAX à partir de mi-octobre.
S'inscrire sur le site d'Adobe MAX Online
Dans les tutoriaux Flex DataFilterLib précédents, on a vu comment utiliser les filtres de la librairies, qu'ils soient simples ou combinés. La DataFilterLib fournit des filtres de base mais elle vous permet aussi d'ajouter des filtres personnalisés. Pour cela, il faut simplement créer une classe qui hérite (extends) de DataFilterBase comme ceci:
public class CustomSimpleFilter extends DataFilterBase {
public function CustomSimpleFilter(parameters:DataFilterParameters = null) {
super(parameters);
}
}
Les filtres de la librairie sont codés de cette manière, vous pouvez jeter un oeil aux sources de la librairie Flex. Grâce à l'objet "parameters" de type DataFilterParameters, vous pourrez récupérer l'ensemble des paramètres passés dans le tag MXML (filterOperator, filterValues, filterKeys, …). Par exemple, pour récupérer les filterValues, il vous suffit d'appeler:
var values:Array = _parameters.filterValues;
Si vous voulez faire votre filtrage spécial, il faut surcharger la méthode apply(item:Object):Boolean comme ceci:
override public function apply(item:Object):Boolean {
// code
return true;
}
Dans l'exemple suivant, on remplit un ArrayCollection avec des objets custom, de type CustomSimpleObject. Au moment où l'objet passe dans la méthode apply, on peut donc faire un cast (conversion de type) du paramètre item. Voici donc la classe complète qui a servi pour l'exemple qui vient après:
Lire la suite: 'DataFilterLib – Utilisation de filtres personnalisés'
Dans les exemples sur la DataFilterLib précédent, on a vu comment faire des filtrages simple, que ce soit par valeur ou par intervalle. Ces fonctionnalités étaient "assez" facilement reproduisibles avec des filterFunctions mais on va maintenant voir une des principales fonctionnalités de la DataFilterLib, le filtrage de données selon plusieurs filtres.
Le filtrage avec plusieurs DataFilterParameters est très simple puisqu'il suffit d'ajouter des DataFilterParameters au DataFilterSet principal. Les filtres seront ainsi combinés entre eux. N'importe quelle combinaison de filtres est possible, y compris un mélange de filtres type SingleValue et d'Interval.
Voici par exemple le DataFilterSet utilisé dans l'exemple suivant:
<filter:DataFilterSet id="filterSet"
data="{productData}">
<filter:dataFilterParameters>
<filter:DataFilterParameters id="tstIntervalParameters"
filterType="{DataFilterType.INTERVAL}"
filterKeys="{'productPrice'}"
filterOperator="{DataFilterIntervalOperator.INTERVAL_CLOSED}"
filterValues="{hsProductPrice.values}"
active="{activeIntervalCB.selected}"
invert="{invertIntervalCB.selected}"/>
<filter:DataFilterParameters id="tstMultiValueParameter"
filterType="{DataFilterType.SINGLE_VALUE}"
filterKeys="productType"
filterOperator="{DataFilterSingleValueOperator.EQUALS_TO}"
filterValues="{singleValuesList.selectedItems}"
invert="{invertListCB.selected}"
active="{activeListCB.selected}"/>
<filter:DataFilterParameters id="tstSingleValueParameter"
filterType="{DataFilterType.SINGLE_VALUE}"
filterKeys="{textFieldCB.selectedItem}"
filterOperator="{textOperatorCB.selectedItem}"
filterValues="{stringFilter.text}"
active="{activeTextCB.selected}"
invert="{invertTextCB.selected}"/>
</filter:dataFilterParameters>
</filter:DataFilterSet>
On a ici 3 filtres, 2 de type Singlevalue et un de type Interval. Le nombre de filtre n'est pas limité au sein d'un DataFilterSet.
Démonstration en ligne (onglet "Multiple Filters")
L'exemple suivant montre comment mettre en place de multiples filtres sur un même ArrayCollection. On peut ainsi facilement trouver les produits de type Home et Electro entre 80 et 250 euros. Toutes les combinaisons sont possibles. Pour intégrer ce genre de filtres dans votre application Flex, il vous suffit de lier les filtres aux bon champs de votre donnée et le tour est joué
This movie requires Flash Player 9
Voici un nouvel exemple de la DataFilterLib qui montre simplement comment on peut mettre à jour plusieurs vues avec un seul filtre. Dans cet exemple, j'ai 4 composants qui ont tous comme dataProvider, la même ArrayCollection. J'ai ainsi une DataGrid, une TileList, une List et un Chart qui affichent ma donnée (donnée d'exemples avec des appareils photo).
Pour effectuer mon filtrage, j'utilise un filtre de type INTERVAL, que vous pouvez configurer à votre guise. Cet article explique le fonctionnement des DataFilterInterval en détail. Grâce au mécanisme de Data Binding entre mes vues et mon model, toutes les vues vont se mettre à jour pendant la modification du filtrage.
Démonstration en ligne (onglet "Filter multiple views")
This movie requires Flash Player 9
Commentaires récents