Javascript : GXMLDISPLAY et tables dynamiques

4. Sélecteurs et colonnes cachées

On remarquera dans le code de la page HTML la présence d’un appel à une fonction gxmldisplay_selector avant l’affichage des boutons, soit les deux lignes :

Ces sélecteurs permettent de filtrer la table, avant l’affichage des données, avec un une série de filtres par intersection (non limité tant qu’il y a des données à afficher ou qui restent à masquer). Le premier filtre désélectionne ('n') toutes les données de la table (requête = not for all), le second filtre sélectionne ('y') les lignes ou la colonne SECTOR inclue ('inc') la chaîne de caractères ‘Q08638’.

La colonne SECTOR est bien incluse dans la table Javascript (cf. data_array et flags_array) mais n’apparaît pas dans la table. C’est une colonne de contrôle, qui nous permet d’afficher une ‘vue’ de l’ilot de données, destinée à un usage particulier. En sélectionnant  'Q08638' nous n’affichons que des lignes ou le domaine Uniprot Q08638 est inclus. Si nous reprenons la table initiale, nous constatons qu’une ligne correspondant à la tétrahydrooxazine (inhibiteur OXZ) n’apparaît pas dans la table dynamique, le contenu de la colonne SECTOR est égal à '-' :

Ces sélecteurs s’appliquent sur des colonnes affichables ou non, nous pourrions le faire sur la colonne TYPE, par exemple (qui s’affiche). La fonction gxmldisplay_selector utilise 4 arguments: (selector, keywords, values, operands) qui peuvent être simples ou composites :

  • L’argument selector correspond à (n|off|no) pour NOT et (y|on|yes) pour YES.
  • L’argument keywords correspond aux colonnes sur lesquelles le filtre va être appliqué. Plusieurs noms de colonnes séparés par 1 espace peuvent être utilisés, l’ordre de traitement correspondra à l’ordre des mots dans la chaine de caractères.
  • L’argument values correspond à une valeur qui va être testée dans une colonne donnée.
  • L’argument operands correspond a 'eq' pour une comparaison stricte: le contenu de la cellule doit correspondre à la valeur, ou ‘inc' : le contenu de la cellule peut inclure la valeur.

Si plusieurs colonnes sont traitées il doit y avoir autant de valeurs (séparées par des espaces) dans les arguments keywords, values et operands. Par exemple :

Ici nous faisons un filtrage simultané sur deux colonnes. On peut objecter qu’il n’est pas possible dans ce cas de filtrer en incluant des espaces, mais il s’agit ici de filtres simples, et qui peuvent être combinés. Au final, il s’agit donc d’un système très simple à mettre en œuvre et relativement efficace, même s’il ne s’applique qu’a des données sous forme de chaines de caractères.

Ce mode de filtrage a été mis en place pour une raison bien précise : l’expérience montre qu’il est souvent plus pertinent de proposer une vue restreinte et adaptée de la table (correspondant à un profil de consultation) que de proposer un outil de recherche/filtrage. Pour un besoin d’exposition simple sur des ilots de donnés limités (inférieurs à 1000 lignes) il n’est pas nécessaire d’alourdir l’application Javascript par des outils de requêtes supplémentaires.

Retour en haut