Google Visualization API
• Librerie JavaScript per la realizzazione di
grafici da inserire in pagine HTML
• Due versoni:
– Grafici interattivi realizzati con oggetti Flash
– Grafici statici realizzati con immagini create lato
server (Google)
• L’ultima versione delle librerie è scaricata
direttamente da Google ogni volta che si accede
alla pagina che le include
Esempi di grafici
Descrizione delle librerie
• Pensate per operare in un contesto HTTP
• Struttura modulare
– un “core” minimale di funzionalità sono delegate al
caricamento dinamico dei soli pacchetti necessari;
– vari pacchetti specifici per ciascuna tipologia di
grafico
• Si riduce il traffico per il download degli script
da Google
Importazione delle librerie
• Le librerie sono importate come un qualunque
altro file script esterno:
<SCRIPT LANGUAGE="JavaScript"
SRC="http://www.google.com/jsapi">
</SCRIPT>
• Viene creato l’oggetto “google” che espone
ilmetodo “load” per il caricamento dinamico
dei pacchetti
Caricamento dei pacchetti
• Si specificano:
– la versione (1=stabile, 1.1=sviluppo);
– i tipi di grafici che saranno utilizzati (packages)
<SCRIPT LANGUAGE="JavaScript">
google.load(
'visualization',
'1',
{'packages': ["annotatedtimeline", "gauge"]}
);
</SCRIPT>
Principio di funzionamento
• Per ciascuno dei grafici è necessario definire un
elemento DIV
• Il DIV deve avere specificate le dimensioni
(attributi “width” e “height”) e l’attributo “id”
• La creazione del grafico inserisce
dinamicamente il codice HTML necessario alla
sua visualizzazione all’interno del DIV
Definizione delle serie di dati
• I grafici della GVA hanno come sorgente dati
la DataTable
– Divisa in due parti: definizione delle colonne
(nome, tipo …)
– Righe di dati secondo lo schema delle colonne
definito nella prima parte
• La DataTable può essere definita:
– Staticamente, all’interno dello script
– Dinamicamente, tramite chiamata Ajax
Definizione statica
var data = new google.visualization.DataTable();
data.addColumn('string', 'Label');
data.addColumn('number', 'Value');
data.addRows(3);
data.setValue(0, 0, 'Memory');
data.setValue(0, 1, 80);
data.setValue(1, 0, 'CPU');
data.setValue(1, 1, 55);
data.setValue(2, 0, 'Network');
data.setValue(2, 1, 68);
Definizione dinamica
• Due possibilità:
– Recuperare i dati con una chiamata Ajax e scrivere
codice che crea la tabella sulla falsa riga
dell’esempio precedente
– Usare gli strumenti forniti dalle API di Google
• La GVA mette a disposizione l’oggetto Query,
che permette di recuperare automaticamente
una DataTable da una determinata URL
google.visualization.Query
• Preleva i dati da una URL mettendo a
disposizione funzionalità avanzate di filtraggio
• Gestisce automaticamente le comunicazioni
asincrone Ajax e i parametri di richiesta
• Processing della risposta ottenuta dalla
richiestatramite passagio di callback
• Ogni richiesta è associata ad un ID univoco per
la sessione di lavoro che deve essere ripetuto
nela risposta
Creazione Query e recupero dati
query = new
google.visualization.Query('http://localhost/gauges.json');
query.send(handleQueryResponse);
function handleQueryResponse(response) {
if (response.isError()) { alert('Error in query }
var data = response.getDataTable();
… /* creazione grafico */
}
Parametri della richiesta
• Alla chiamata del metodo “send” la query:
– interroga la url specificata al momento della
creazione
– passa il parametro “id” che deve essere restituito
identico nella risposta
• Permette altre operazioni (es. filtraggi) che non
trattiamo
Formato di risposta della url
• Diversi formati ammessi:
– json
– csv
• Preferibile il primo. Tabella descritta per
colonne e righe
table:{
cols: [ {id: 'A', label: 'Label', type: 'string'},
{id: 'B', label: 'Value', type: 'number'}],
rows: [{c:[{v: 'Statistic KPI'}, {v: 47.000}]}]
}
Parametri della risposta
• La descrizione della Datatable è inesrita in una
envelope del tipo:
google.visualization.Query.setResponse({
version:'0.5',
reqId:'0',
status:'ok',
table:{… }
})
Elaborazione della risposta
• La stringa json restituita dalla url è parsata
direttamente dal componente query
– è verificata la corrispondenza dello “id” inviato in
fase di richiesta
– la descrizione della tabella è trasformata in oggetto
JavaScript
– è estratto lo stato della risposta
• Non resta che verificare lo stato e prelevare i
dati con il metodo GetDataTable() dell’oggetto
response
Creazione del grafico
• Una volta recuparata la datTable, la creazione
del grafico è banale:
data = response.getDataTable();
chart = new google.visualization.AnnotatedTimeLine(
document.getElementById('chart_div') //chart-div è l’id di un DIV HTML
);
chart.draw(
data,
{displayAnnotations: true, scaleType: 'allfixed', scaleColumns: [0, 1]}
);
Note
• Le tabelle restituite dalle URL legate alle query
hanno strutture diverse a seconda del gafico da
cui saranno utilizzate
• Per ogni tipo di grafico esiste una
documentazione specifica all’indirizzo:
– http://code.google.com/intl/itIT/apis/visualization/documentation/gallery.html
Esercizio
• Modificare i file Json degli esempi
• Creare pagine dinamiche che gestiscano le
richiese delle query fornendo il correto eco del
campo id
Scarica

Slide su Google Visualization API