AJAX - Rico LiveGrid pour représenter les vues Lotus Notes
Il existe un nombre de plus en plus important de librairies Javascript AJAX. Après avoir beaucoup parlé de Scriptaculous, il est temps d'en présenter de nouvelles. RICO, s'appuie sur prototype.js, comme scriptaculous. Il offre la classe LiveGrid qui m'a particulièrement interressé après avoir découvert le nouveau moteur de recherche de Microsoft, live.com. Sur ce site, la barre de navigation pour accéder aux pages a disparu. Adieu "page suivante" ou "page précédente". Les résultats de la recherche s'affichent dans une longue liste qui se charge selon la position de l'ascenceur. Hors, ce qui me dérange le plus dans la gestion des vues Notes sur le web est justement la gestion de la navigation entre pages. RICO apporterait il la solution ?

La classe LiveGrid n'est certes pas encore parfaite, cependant le résultat me semble interressant à suivre. Toutes les vues notes ne sont pas représentables sur ce type d'interface, comme les vues catégorisées. Il est à noter que les vues catégorisées ne sont de toute façon pas vraiment utilisables sur le Web en natif non plus.
Installation de la librairie RICO
La librairie RICO ne comporte qu'un seul fichier javascript. Il faudra, par contre,
obligatoirement installer aussi la librairie prototype.js.
La classe Rico.LiveGrid
Pour utiliser LiveGrid, il va falloir définir une page Web appelant les librairies et initialisant un tableau permettant de représenter la vue. Ce tableau sera constitué de deux parties :
Pour représenter une vue Lotus Notes avec LiveGrid, j'utilise donc une page au format HTML et une vue avec un masque associé au format XML. On pourrait aussi passer par un agent pour générer le flux XML mais, comme déjà expliqué, l'utilisation d'une vue permet d'économiser des ressources serveur.
Définition de la vue XML
Les données transmises à la classe LiveGrid devront avoir le format XML suivant :
Nom de la vue : data.xml
Traiter contenu comme code HTML depuis l'avant-dernier onglet des options de la vue.
Il faut maintenant déclarer un masque de vue associé
Nom du masque : $$ViewTemplate For data.xml
Depuis le second onglet des propriétés du masque, cocher "Type de contenu : Autre" et indiquer comme valeur : application/xml
Le contenu du masque est :
La page Web
J'ai déclarer le contenu de ma page comme étant au format HTML dans les options de la page. De plus, j'ai volontairement supprimé toutes références au style dans le code fourni afin de ne pas l'allourdir. Le contenu de la page doit ressembler à celà :
Il ne reste plus qu'à déclarer l'entête du fichier HTML afin d'initialiser la LiveGrid.
La page ainsi définie ne permet pas encore de trier la vue en cliquant sur une colonne ni de gérer le téléchargement des données en tâche de fond. Les paramètres d'appel de la vue XML sont codés dans la librairie rico.js. Hors ces paramètres ne correspondent évidemment pas à la syntaxe d'appel des vues Lotus Notes. Ceci sera corrigé dans le prochain article.
En attendant, voici un exemple complet en ligne. N'ayant pas pu tester l'application sur toutes les plateformes, merci de laisser un commentaire si vous constatez une incompatibilité.

La classe LiveGrid n'est certes pas encore parfaite, cependant le résultat me semble interressant à suivre. Toutes les vues notes ne sont pas représentables sur ce type d'interface, comme les vues catégorisées. Il est à noter que les vues catégorisées ne sont de toute façon pas vraiment utilisables sur le Web en natif non plus.
Installation de la librairie RICO
La librairie RICO ne comporte qu'un seul fichier javascript. Il faudra, par contre,
obligatoirement installer aussi la librairie prototype.js.
- Télécharger la librairie RICO 1.1.2 sur la page de téléchargement du site
- Télécharger la librairie prototype 1.4.0 sur le site de conio (sélectionner le lien "Just the .js, please").
- Intégrer les deux fichiers dans les ressources de la base Lotus Notes.
La classe Rico.LiveGrid
Pour utiliser LiveGrid, il va falloir définir une page Web appelant les librairies et initialisant un tableau permettant de représenter la vue. Ce tableau sera constitué de deux parties :
- une entête : pour la définition des titres de colonnes
- les données : pour bien s'afficher, les premières lignes de données doivent être initialisées dans la page. Par la suite ces données seront directement extraites d'un fichier XML.
Pour représenter une vue Lotus Notes avec LiveGrid, j'utilise donc une page au format HTML et une vue avec un masque associé au format XML. On pourrait aussi passer par un agent pour générer le flux XML mais, comme déjà expliqué, l'utilisation d'une vue permet d'économiser des ressources serveur.
Définition de la vue XML
Les données transmises à la classe LiveGrid devront avoir le format XML suivant :
<ajax-response>
<response type="object" id="data_grid_updater">
<rows update_ui="true">
<tr><td>Valeur 1</td><td>Valeur 2...</td></tr>
...
<tr>...</tr>
</rows>
</response>
</ajax-response>Pour arriver à une telle représentation j'ai définie ma vue avec les paramètres suivants ;Nom de la vue : data.xml
Traiter contenu comme code HTML depuis l'avant-dernier onglet des options de la vue.
- Colonne 1 : "<tr><td>"
- Colonne 2 : Champ ou formule à représenter dans la grille
- Colonne 3 : "</td><td>"
- Colonne 4 : Champ ou formule à représenter dans la grille
- ...
- Colonne n : "</td></tr>"
Il faut maintenant déclarer un masque de vue associé
Nom du masque : $$ViewTemplate For data.xml
Depuis le second onglet des propriétés du masque, cocher "Type de contenu : Autre" et indiquer comme valeur : application/xml
Le contenu du masque est :
<ajax-response>
<response type="object" id="data_grid_updater">
<rows update_ui="true">
Ajout de la vue intégrée data.xml
</rows>
</response>
</ajax-response>Le nombre de lignes affichées dans la vue intégrée n'a aucune importance. Pour tester votre nouveau fichier XML, ouvrir la vue data.xml depuis un navigateur Web. Le format XML étant très contraigant il est possible que vous ayez un message d'erreur selon le texte affiché. Il n'est pas autorisé, par exemple, d'afficher le caractère '&'. Vous pouvez le supprimer ou le remplacer automatiquement, si nécessaire, à travers la formule de la colonne.La page Web
J'ai déclarer le contenu de ma page comme étant au format HTML dans les options de la page. De plus, j'ai volontairement supprimé toutes références au style dans le code fourni afin de ne pas l'allourdir. Le contenu de la page doit ressembler à celà :
<body onload="javascript:bodyOnLoad();">
<table id="data_grid_header" class="fixedTable"
cellspacing="0" cellpadding="0" style="width:560px">
<tr>
<th class="first tableCellHeader">Titre Colonne 1</th>
<th class="tableCellHeader">Titre Colonne 2</th>
<th class="tableCellHeader">Titre Colonne 3</th>
</tr>
</table>
<div id="viewPort" style="float:left">
<table id="data_grid" class="fixedTable"
cellspacing="0" cellpadding="0" style="float:left;width:560px;">
On ajoute ici la vue vue intégrée data.xml
</table>
</div>
</body>
</html>Attention, le nombre de lignes affichées dans la vue intégrée est très important ici. Il faut que ce nombre soit un peu supérieur au nombre de lignes à affichées.Il ne reste plus qu'à déclarer l'entête du fichier HTML afin d'initialiser la LiveGrid.
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Domino & Web 2.0 : Rico LiveGrid</title>
<script src="prototype.js" type="text/javascript"></script>
<script src="rico.js" type="text/javascript"></script>
<script language="javascript">
function bodyOnLoad(){
var opts = {
prefetchBuffer: false,
onscroll : updateHeader
};
new Rico.LiveGrid ("data_grid",18, 445, "data.xml?openview", opts);
}
function updateHeader( liveGrid, offset ) {
}
</script>
</head>Les options de déclarations de la LiveGrid sont : - "datagrid" : ID du tableau où seront représenter les valeurs
- 18 : nombre de lignes à afficher à l'écran
- 445 : nombre de lignes de la vue. Cette valeur devrait être calculée
- "data.xml?openview" : URL du flux XML
- opts : options complémentaires. Pour le moment celà ne sert pas
La page ainsi définie ne permet pas encore de trier la vue en cliquant sur une colonne ni de gérer le téléchargement des données en tâche de fond. Les paramètres d'appel de la vue XML sont codés dans la librairie rico.js. Hors ces paramètres ne correspondent évidemment pas à la syntaxe d'appel des vues Lotus Notes. Ceci sera corrigé dans le prochain article.
En attendant, voici un exemple complet en ligne. N'ayant pas pu tester l'application sur toutes les plateformes, merci de laisser un commentaire si vous constatez une incompatibilité.
English version

8 Commentaires:
Salut Philippe,
Très intéressant ce framework.
Cette vue est typique de ce que peux offrir Ajax et montre aussi ce que dénonce tout les ergonomes. Cette vue est complètement déroutante pour un utilisateur habitué au web classique. Il faut bien avouer qu'ils n'ont pas totalement tort...
Elle peut certes parraitre déroutante pour un site Web mais me semble plus naturelle pour un fervent utilisateur d'Excel :)
L'exemple en ligne permet juste de visualiser un rendu brut de la classe. Si la grille prenait toute la page, et si l'on ajoutait quelques fonctionnalités de recherche et/ou de filtrage, je pense que l'ergonomie serait acceptable dans le cadre d'un projet Intranet. Les vues INotes s'appuient d'ailleurs sur une ergonomie similaire.
Cependant, celà n'est pas encore faisable dans l'état actuelle de la classe RICO. De plus, le plus interressant, pour moi, était d'étudier comment personnaliser, à peu près proprement, une classe Javascript existante. Ce sera le sujet du prochain article.
hi phillipe,
sorry,my french isn't too good, so i'll try in english...
great technique! i like it, but i cant get the vertical scrollbar working with mozilla. did you recognize the same behaviour?
s_kotti
I've tried this application with Internet Explorer 6, 7, Firefox 1.5 and Opera 9 and I hadn't problem with scrollbar (Just in Opera, the scrollbar is at left and I don't know why).
Can you specify the version of your browser ? Perhaps the server free.dominoserver.de.it had problems. It's a free provider and there's sometimes some problems. If you use Firefox, you can install firebug extension to show the Ajax calls.
hi phillipe,
you're right, the scrollbar works fine with mozilla 1.5. Unfortunately my local installation is buggy, even after reinstall und deletion of registry entries... with ie(v6.0) i've still got a refresh problem while using the scrollbar or the order function: the table entries won't refresh but if i look in the source code i can see table rows generated, somehow mystic.
i've made it to use html-links in the xml view to open the unerlying document, have you suceeded with xml:link?
anyway, great articles here, i appreciate very much.
s_kotti
Like I said you, I have no problem with my IE6 but, I see some other case on Rico Forum. It seems to be fix on next version.
I haven't tried xml:link, only standard html href. I'm not a guru of XML :) But know you say me that, I believe I'll try it soon.
Tres tres bien tout ca
mais regardez aussi du coté de
http://www.dowdybrown.com/dbprod/rico-test9/
et la c est la version avancée de rico live grid
et c est génial
Bounjour,
Vous pouvez trouver une wrapper de LiveGrid ecrit dans C# a http://codeplex.com/SharpPieces.
Bonne journee
Enregistrer un commentaire
Lien vers ce message:
Créer un lien
<< Home