- MadeInFlex - http://www.madeinflex.com -
Componente Search As You Type
Publicado por Xavi Beumala el 25 de Septiembre de 2006 a las 17:32 en Componentes | 13 Comments
Hay muchas ocasiones en las que la cantidad de información presentada al usuario es bastante grande y que por motivos funcionales no se puede limitar. Lo que sí se puede facilitar es la forma en la que el usuario pueda encontrarla. Con este fin, van apareciendo nuevos componentes / widgets que favorecen la usabilidad aprovechando la madurez de la usuarios finales.
Imaginemos un formulario en el que el usuario tiene que seleccionar uno en concreto. En este caso toda la información tiene que estar precargada (alrededor de 250 paises) y aunque no suponga un suplicio, en muchas ocasiones encontrar el pais en cuestión cuesta más de lo que debería. Una forma que nos podría ayudar a mejorar esto es aplicar un filtro dinámico conforme el usuario vaya escribiendo.
Sayt es un componente que permite filtrar los datos de un ArrayCollection (la mayoría de los componentes del sdk de flex2 lo usan internamente como dataProvider).
El componente en sí, aunque hereda de Box, no tiene una representación visual, sólo funcional. Por ello se tiene que crear un elemento con la capa visual pertinente que herede del componente base (com.mif.widgets.sayt.SaytBase).
En el ejemplo anterior estaríamos creando un widget basado en sayt que mostraría una imagen (search.png) y un campo de introducción de texto. El binding actualizará la propiedad saytPatternExpr cada vez que el usuario modifique el texto.
Veamos ahora un ejemplo de uso.
En este caso estamos indicando a través de la propiedad dataProvider de simpleSayt que el modelo de datos sobre el que va actuar sayt es el de la lista namesId y que la propiedad sobre la que se aplicará el filtro se corresponde con el atributo @name.
El componente consta básicamente de tres propiedades.
Cada vez que alguna de estas propiedades se modifique, ya sea a través de un binding o una modificación expresa, el filtro se aplicará de forma automática.
La verdad es que en cuanto a performance refiere, el uso de Regular Expressions me ha sorprendido bastante. Tengo ejemplos que usan dataproviders con más de 4000 objetos complejos cargados y la búsqueda es prácticamente instantanea.
Artículo imprimido desde MadeInFlex: http://www.madeinflex.com
URL al articulo: http://www.madeinflex.com/2006/09/25/componente-search-as-you-type/
URLs en esta entrada:
[1] Regular Expressions: http://en.wikipedia.org/wiki/Regular_expression
[2] Imagen: http://www.madeinflex.com/files/zip/sayt_example_project.zip
[3] Descargar proyecto de ejemplo.: http://www.madeinflex.com/files/zip/sayt_example_project.zip
[4] Imagen: http://www.madeinflex.com/files/zip/sayt_swc_project.zip
[5] Descargar proyecto de sayt.: http://www.madeinflex.com/files/zip/sayt_swc_project.zip
[6] Imagen: http://www.madeinflex.com/files/swc/sayt.zip
[7] Descargar swc de sayt.: http://www.madeinflex.com/files/swc/sayt.zip
Haz click aquí para imprimir.