Nella realizzazione di interfaccie di report può capitare di dover creare delle tabelle che visualizziino una serie di informazioni. Spesso, se i dati sono molti, è necessario ricorrere alla creazione di tabelle paginate. In altri casi, o in aggiunta a questo, può essere necessario andare a realizzare dei sistemi che permettano di fvariare i criteri di ordinamento dei dati estratti, così da migliorare l'usabilità del sistema.
Queste operazioni spesso sono operazioni che porterebero via un pò di tempo per la realizzazione e sono decisamente poco divertenti da implmentare (ma servono e quindi devono essere fatte). Vediamo come possiamo velocizzarne la realizzazione con Drupal.
La volta scorsa, nel parlare di ottimizzazione del frontend di siti generici (e Drupal in particolare) avevamo
affrontato alcune delle problematiche principali, tra cui appunto la generazione di sottodomini per lo smistamento degli asset statici [1], così da parallelizzare il più possibile il caricamento della pagina.
Ora vedremo come ottimizzare e mettere in pratica i suggerimenti che YSlow (ma anche PageSpeed) ci danno.
NOTA: con il nome di assett intendendo con questo nome quelle informazioni che non variano o variano molto poco nel corso del tempo e che consideriamo opportuno far gestire su sottodomini differenti per ottimizzare le performance del frontend per gli utenti finali (ed eventualmente per suddividere la gestione di questo tipo di dati ai server).
Può capitare, a volte, di dover alterare lo schema di una tabella creata da un altro modulo, vedremo come effettuare questa operazione nella mianera corretta mantenendo l'integrità della struttura rappresentata dallo schema e quella effettivamente presente nel database.
Ci sono diversi applicativi per la gestione dei progetti, e dei gruppi di lavoro, ogniuno con i propri pregi e difetti, questo significa che alcuni di essi si adatteranno meglio alle nostre esigenze di altri, e sopratutto può soddistarlemeglio in alcune situazioni e meno in altre. Per questo motivo è importante conoscere quali strumenti possiamo usare per poter scegliere il migliore per la nostra esigenza.
Il progetto che voglio persentarvi è rilasciato da Development Seed ed è un progetto basato su Drupal. Vediamo le opportunità che ci offre.
Le viste sono uno strumento estremamente potente e permettono di andare ad elaborare le informazioni creando degli elementi (pagine, blocchi, ...) di presentazione. La possibilità di usare dei filtri esposti ne fa degli strumenti adatti alla creazione di strumenti di ricerca dei contenuti.
L'utilizzo della tassonomia come filtro esposto per la ricerca, però, non è così intuitivo, poiché l'eventuale albero viene presentato tutto all'interno di un unica select con una struttura indentata, cosa che per l'utente fruitore medio non è così intuibile.
Nel caso di vocabolario con un elevato numero di termini questo è anche scomodo perchè verranno presentati tutti i termini avendo quindi una lista molto lunga di elementi, decisamente scomoda quando si cerca di trovare un informazione.
Vediamo ora come ricorrere ad una serie di menu a tendina che presentano le informazioni della tassonomia su livelli separati (una select per oogni livello), in cui i livelli successivi vengono caricati in maniera asincrona in base alla selezione precedente.
Può capitare di avere elementi della pagina che devono essere caricati in maniera asincorna, di consegunenza non sono disponibili al termine del primo caricamento della pagina, ultimamente sempre più spesso capita che questi elementi debbano a loro volta essere ancorati ad altri eventi javascript (binding).
Fintanto che il caricamento di questi secondi elementi viene svolto attraverso script scritti da noi è sufficiente mettere in coda al caricamento dell'elemento tramite $.getAjax() la funzione che si decide di ancorare agli elementi, ma cosa succede quando questo viene svolto in maniera "automatica" ricorrendo a script predefiniti (si, per capirci il caricamento tramite AHAH Form di Drupal)?
Come spesso capita si utilizzano select per andare a far effettuare delle scelte agli utenti, e come abbiamo visto precentemente è possibile usare le funzionalità ajax per fare in modo che delle select secondarie varino in funzione della prima scelta.
Cosa succede, invece, quando si hanno centinaia o migliaia di elementi tra cui scegliere? una select diventa una pessima scelta per l'utente che deve andare ad inserire i dati, ma fortunatamente Drupal ci mette a disposizione i campi autocompletanti, elementi che abbiamo già affrontato in articoli precedenti.
Vediamo ora come creare dei campi autocompletanti che hanno dipendenze tra di loro.
Ok, non proprio tutti ma buona parte di voi ha alzato la mano, questo perchè è sicuramente uno strumento potentissimo per la visualizzazione delle informazioni, quindi è fondamentale (o comunque molto utile) andare ad integrare i propri moduli con views, permettendo così la massima facilità di utilizzo successiva.
Vediamo ora come andare ad integrare delle tabelle del nostro modulo in modo che siano collegate a views.