180 likes | 310 Views
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)
E N D
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
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/it-IT/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