Dopo il ritorno dall'ILUG e le chiacchiere fatte con un pò di colleghi che utilizzano Domino in ambiente web mi sono lanciato nella sperimentazione di Ajax con Dojo Toolkit.
Uno degli usi più "banali" di Ajax con domino è ovviamente quello di mostrare le nostre care viste in un modo nuovo più dinamico, permettendoci magari di navigare una vista senza dover ricaricare tutta la pagina.
Cosa abbiamo visto finora
Molte delle implementazioni attuali si basano sull'uso dei nuovi metodi XML introdotti nelle versioni 7 e 8 di Domino per:
- Leggere la struttura della vista in formato XML (o JSON a partire da Domino 7.0.2)
- Leggere le entries/righe della vista in formato XML (o JSON a partire da Domino 7.0.2)
- Generare l'html necessario a visualizzare i dati scaricati (ivi inclusa la formattazione e gli stili)
Questo approccio non mi fa impazzire per i seguenti motivi:
1. La generazione dell'XML per le viste è pesante quanto la generazione della vista stessa da parte del motore HTTP
2. L'analisi del XML/JSON sia per la struttura che per i dati viene demandata al client (web browser) che si trova a consumare ulteriore memoria per costruire le strutture dati necessarie alla gestione, navigazione e visualizzazione dei dati
3. La formattazione della vista non è più controllata da quello che faccio in Domino Designer ma va più o meno definita a mano all'interno della propria pagina tra script e html.
4. La categorizzazione e la gestione dei documenti response è qualcosa a cui nessuno ha ancora dato una soluzione "generalizzata".
Volendo dare un riepilogo negativo dell'approccio che va per la maggiore potrei quindi dire che:
1. Non ottengo vantaggi per quanto riguarda il carico di lavoro dei server ... (anzi per ogni vista viene richiesto l'xml della descrizione e quello dei dati)
2. Appesantisco il client (browser) con un sacco di operazioni javascript / xml solo per visualizzare gli stessi dati che il server domino ha per anni elaborato al meglio
3. Devo fare doppio lavoro, disegnare una vista e poi incorporarla nella mia applicazione web definendo stili e formattazione, non tutti gli sviluppatori domino hanno tutta l'esperienza necessaria, per non parlare della manutenzione delle applicazioni.
4. Nonostante tutta questa tecnologia la categorizzazione resta argomento "complicato" e con soluzioni non all'altezza.
Cosa vi propongo
Partendo da questo presupposto ho provato a cambiare il punto di vista...
Mi sono detto.. e se prendessi a pezzi l'html delle viste che domino genera da anni senza fare una piega ?
Ho iniziato a lavorare sull'idea e ho creato un Widget per Dojo Toolkit che fa esattamente questo. Trasforma una normale (e quando dico normale intendo normale) vista Web Domino in un widget dinamico, riutilizzabile e configurabile che mantiene tutte le funzionalità di una vista notes classica.
In particolare il widget consente di:
- Navigare la vista: Pagina avanti, pagina indietro, vai alla riga che inizia per (&StartKey=)
- Ricercare la vista: effettuando una ricerca full text
- Riordinare le colonne come, definito nel designer, cliccando sull'header della colonna
- Espandere e comprimere categorie e relazioni document / response
- Rispettare tutte le formattazioni definite creando la vista con designer.
Oggi non entrerò nel dettaglio della logica utilizzata nel widget ma mi limiterò a farvi provare il risultato in quattro esempi che ho preparato. Prossimamente e dopo aver ripulito il codice vi spiegherò cosa ci sta dietro (sempre che non vogliate leggervi direttamente i sorgenti).
Test Drive
E' giunto il momento di vedere l'effetto che fa, il mio consiglio è questo:
1° Cliccate su un esempio
2° Usatelo, navigate la vista, fate quello che fareste su una vista normale
3° Guardate il sorgente della pagina
4° Passate all'esempio successivo.
Quando avete finito gli esempi lasciatemi un commento :)
Nota: Per ora non vi metto online un pacchetto da scaricare perchè voglio prepararlo bene. Se non potete aspettare scrivetemi a daniele@vistalli.it
Comments (7)
Daniele Vistalli July 5th, 2007 16:52:44