Panoramica
Un grafico di Gantt è un tipo di grafico che illustra la suddivisione di un progetto nelle sue attività di componente. I grafici di Gantt di Google illustrano l'inizio, la fine e la durata delle attività all'interno di un progetto, nonché le eventuali dipendenze di un'attività. Il rendering dei grafici di Gantt di Google viene eseguito nel browser utilizzando SVG. Come tutti i grafici Google, i grafici di Gantt mostrano descrizioni comando quando l'utente passa il mouse sopra i dati.
Nota. I diagrammi di Gantt non funzionano nelle versioni precedenti di Internet Explorer. IE8 e le versioni precedenti non supportano il formato SVG richiesto dai diagrammi di Gantt.
Esempio semplice
<html> <head> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <script type="text/javascript"> google.charts.load('current', {'packages':['gantt']}); google.charts.setOnLoadCallback(drawChart); function daysToMilliseconds(days) { return days * 24 * 60 * 60 * 1000; } function drawChart() { var data = new google.visualization.DataTable(); data.addColumn('string', 'Task ID'); data.addColumn('string', 'Task Name'); data.addColumn('date', 'Start Date'); data.addColumn('date', 'End Date'); data.addColumn('number', 'Duration'); data.addColumn('number', 'Percent Complete'); data.addColumn('string', 'Dependencies'); data.addRows([ ['Research', 'Find sources', new Date(2015, 0, 1), new Date(2015, 0, 5), null, 100, null], ['Write', 'Write paper', null, new Date(2015, 0, 9), daysToMilliseconds(3), 25, 'Research,Outline'], ['Cite', 'Create bibliography', null, new Date(2015, 0, 7), daysToMilliseconds(1), 20, 'Research'], ['Complete', 'Hand in paper', null, new Date(2015, 0, 10), daysToMilliseconds(1), 0, 'Cite,Write'], ['Outline', 'Outline paper', null, new Date(2015, 0, 6), daysToMilliseconds(1), 100, 'Research'] ]); var options = { height: 275 }; var chart = new google.visualization.Gantt(document.getElementById('chart_div')); chart.draw(data, options); } </script> </head> <body> <div id="chart_div"></div> </body> </html>
Nessuna dipendenza
Per creare un grafico di Gantt senza dipendenze, assicurati che l'ultimo valore di ogni riga nella tabella di dati sia impostato su null
.
<html> <head> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <script type="text/javascript"> google.charts.load('current', {'packages':['gantt']}); google.charts.setOnLoadCallback(drawChart); function drawChart() { var data = new google.visualization.DataTable(); data.addColumn('string', 'Task ID'); data.addColumn('string', 'Task Name'); data.addColumn('string', 'Resource'); data.addColumn('date', 'Start Date'); data.addColumn('date', 'End Date'); data.addColumn('number', 'Duration'); data.addColumn('number', 'Percent Complete'); data.addColumn('string', 'Dependencies'); data.addRows([ ['2014Spring', 'Spring 2014', 'spring', new Date(2014, 2, 22), new Date(2014, 5, 20), null, 100, null], ['2014Summer', 'Summer 2014', 'summer', new Date(2014, 5, 21), new Date(2014, 8, 20), null, 100, null], ['2014Autumn', 'Autumn 2014', 'autumn', new Date(2014, 8, 21), new Date(2014, 11, 20), null, 100, null], ['2014Winter', 'Winter 2014', 'winter', new Date(2014, 11, 21), new Date(2015, 2, 21), null, 100, null], ['2015Spring', 'Spring 2015', 'spring', new Date(2015, 2, 22), new Date(2015, 5, 20), null, 50, null], ['2015Summer', 'Summer 2015', 'summer', new Date(2015, 5, 21), new Date(2015, 8, 20), null, 0, null], ['2015Autumn', 'Autumn 2015', 'autumn', new Date(2015, 8, 21), new Date(2015, 11, 20), null, 0, null], ['2015Winter', 'Winter 2015', 'winter', new Date(2015, 11, 21), new Date(2016, 2, 21), null, 0, null], ['Football', 'Football Season', 'sports', new Date(2014, 8, 4), new Date(2015, 1, 1), null, 100, null], ['Baseball', 'Baseball Season', 'sports', new Date(2015, 2, 31), new Date(2015, 9, 20), null, 14, null], ['Basketball', 'Basketball Season', 'sports', new Date(2014, 9, 28), new Date(2015, 5, 20), null, 86, null], ['Hockey', 'Hockey Season', 'sports', new Date(2014, 9, 8), new Date(2015, 5, 21), null, 89, null] ]); var options = { height: 400, gantt: { trackHeight: 30 } }; var chart = new google.visualization.Gantt(document.getElementById('chart_div')); chart.draw(data, options); } </script> </head> <body> <div id="chart_div"></div> </body> </html>
Raggruppare le risorse
Le attività di natura simile possono essere raggruppate utilizzando le risorse. Aggiungi una colonna di tipo string
ai dati (dopo le colonne Task ID
e Task Name
) e assicurati che tutte le attività che devono essere raggruppate in una risorsa abbiano lo stesso ID risorsa. Le risorse saranno raggruppate per colore.
<html> <head> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <script type="text/javascript"> google.charts.load('current', {'packages':['gantt']}); google.charts.setOnLoadCallback(drawChart); function daysToMilliseconds(days) { return days * 24 * 60 * 60 * 1000; } function drawChart() { var data = new google.visualization.DataTable(); data.addColumn('string', 'Task ID'); data.addColumn('string', 'Task Name'); data.addColumn('string', 'Resource'); data.addColumn('date', 'Start Date'); data.addColumn('date', 'End Date'); data.addColumn('number', 'Duration'); data.addColumn('number', 'Percent Complete'); data.addColumn('string', 'Dependencies'); data.addRows([ ['Research', 'Find sources', null, new Date(2015, 0, 1), new Date(2015, 0, 5), null, 100, null], ['Write', 'Write paper', 'write', null, new Date(2015, 0, 9), daysToMilliseconds(3), 25, 'Research,Outline'], ['Cite', 'Create bibliography', 'write', null, new Date(2015, 0, 7), daysToMilliseconds(1), 20, 'Research'], ['Complete', 'Hand in paper', 'complete', null, new Date(2015, 0, 10), daysToMilliseconds(1), 0, 'Cite,Write'], ['Outline', 'Outline paper', 'write', null, new Date(2015, 0, 6), daysToMilliseconds(1), 100, 'Research'] ]); var options = { height: 275 }; var chart = new google.visualization.Gantt(document.getElementById('chart_div')); chart.draw(data, options); } </script> </head> <body> <div id="chart_div"></div> </body> </html>
Calcolo di inizio/fine/durata
I grafici di Gantt accettano tre valori relativi alla durata dell'attività: una data di inizio, una data di fine e una durata (in millisecondi). Se, ad esempio, non esiste una data di inizio, il grafico può calcolare l'ora mancante in base alla data di fine e alla durata. Lo stesso vale per il calcolo della data di fine. Se vengono indicate sia la data di inizio sia la data di fine, la durata può essere calcolata tra le due.
Consulta la tabella seguente per un elenco di come Gantt gestisce la presenza di inizio, fine e durata in circostanze diverse.
Inizia | Fine | Durata | Risultato |
---|---|---|---|
Presenta | Presenta | Presenta | Verifica che la durata sia coerente con l'ora di inizio e di fine. Genera un errore se incoerente. |
Presenta | Presenta | Null | Calcola la durata a partire dall'ora di inizio e di fine. |
Presenta | Null | Presenta | Calcola l'ora di fine. |
Presenta | Null | Null | Genera un errore perché non è possibile calcolare la durata o l'ora di fine. |
Null | Presenta | Presenta | Calcola l'ora di inizio. |
Null | Null | Presenta |
Calcola l'ora di inizio in base alle dipendenze. Se combinato con defaultStartDate , consente di disegnare grafici utilizzando solo le durate.
|
Null | Presenta | Null | Genera un errore perché non è possibile calcolare l'ora di inizio o la durata. |
Null | Null | Null | Genera un errore perché non è possibile calcolare l'ora di inizio, l'ora di fine o la durata. |
Tenendo presente quanto riportato sopra, puoi creare un grafico che traccia un tipico tragitto giornaliero per andare al lavoro utilizzando solo la durata di ogni attività.
<html> <head> <script src="https://www.gstatic.com/charts/loader.js"></script> <script> google.charts.load("current", { packages: ["gantt"] }); google.charts.setOnLoadCallback(drawChart); function toMilliseconds(minutes) { return minutes * 60 * 1000; } function drawChart() { var otherData = new google.visualization.DataTable(); otherData.addColumn("string", "Task ID"); otherData.addColumn("string", "Task Name"); otherData.addColumn("string", "Resource"); otherData.addColumn("date", "Start"); otherData.addColumn("date", "End"); otherData.addColumn("number", "Duration"); otherData.addColumn("number", "Percent Complete"); otherData.addColumn("string", "Dependencies"); otherData.addRows([ [ "toTrain", "Walk to train stop", "walk", null, null, toMilliseconds(5), 100, null, ], [ "music", "Listen to music", "music", null, null, toMilliseconds(70), 100, null, ], [ "wait", "Wait for train", "wait", null, null, toMilliseconds(10), 100, "toTrain", ], [ "train", "Train ride", "train", null, null, toMilliseconds(45), 75, "wait", ], [ "toWork", "Walk to work", "walk", null, null, toMilliseconds(10), 0, "train", ], [ "work", "Sit down at desk", null, null, null, toMilliseconds(2), 0, "toWork", ], ]); var options = { height: 275, gantt: { defaultStartDate: new Date(2015, 3, 28), }, }; var chart = new google.visualization.Gantt( document.getElementById("chart_div") ); chart.draw(otherData, options); } </script> </head> <body> <div id="chart_div"></div> </body> </html>
Percorso critico
Il percorso critico in un grafico di Gantt è il percorso, o i percorsi, che influiscono direttamente sulla
data di fine. Per impostazione predefinita, il percorso critico nei grafici di Gantt di Google è di colore rosso e può essere personalizzato utilizzando le opzioni criticalPathStyle
. Puoi anche disattivare il percorso critico impostando criticalPathEnabled
su false
.
var options = { height: 275, gantt: { criticalPathEnabled: true, criticalPathStyle: { stroke: '#e64a19', strokeWidth: 5 } } };
Frecce per lo stile
Puoi definire lo stile delle frecce delle dipendenze tra le attività con le opzioni gantt.arrow
:
var options = { height: 275, gantt: { criticalPathEnabled: false, // Critical path arrows will be the same as other arrows. arrow: { angle: 100, width: 5, color: 'green', radius: 0 } } };
Stilizzare le tracce
Lo stile della griglia viene gestito da una combinazione di innerGridHorizLine
,
innerGridTrack
e innerGridDarkTrack
. Impostando solo il
innerGridTrack
, il grafico calcolerà un colore più scuro per
innerGridDarkTrack
, ma impostando solo il
innerGridDarkTrack
, il
innerGridTrack
utilizzerà il suo colore predefinito e non calcolerà un colore più chiaro.
var options = { height: 275, gantt: { criticalPathEnabled: false, innerGridHorizLine: { stroke: '#ffe0b2', strokeWidth: 2 }, innerGridTrack: {fill: '#fff3e0'}, innerGridDarkTrack: {fill: '#ffcc80'} } };
Caricamento in corso...
Il nome del pacchetto google.charts.load
è "gantt"
.
google.charts.load("current", {packages: ["gantt"]});
Il nome della classe della visualizzazione è google.visualization.Gantt
.
var chart = new google.visualization.Gantt(container);
Formato dei dati
Righe:ogni riga della tabella rappresenta un'attività.
Colonne:
Colonna 0 | Colonna 1 | Colonna 2 | Colonna 3 | Colonna 4 | Colonna 5 | Colonna 6 | Colonna 7 | |
---|---|---|---|---|---|---|---|---|
Scopo: | ID attività | Nome attività | (Facoltativo) ID risorsa | Inizia | Termina | Durata (in millisecondi) | Percentuale di completamento | Dipendenze |
Tipo di dati: | stringa | stringa | stringa | date | date | numero | numero | stringa |
Ruolo: | dominio | dati | dati | dati | dati | dati | dati | dati |
Opzioni di configurazione
Nome | Tipo | Predefinita | Descrizione |
---|---|---|---|
backgroundColor.fill | stringa | 'white' (bianco) | Il colore di riempimento del grafico, come stringa di colore HTML. |
gantt.arrow | oggetto | null |
Per i grafici di Gantt, gantt.arrow controlla le varie proprietà delle frecce che collegano le attività.
|
gantt.arrow.angle | numero | 45 | L'angolazione della testa della freccia. |
gantt.arrow.color | stringa | "#000" | Il colore delle frecce. |
gantt.arrow.length | numero | 8 | La lunghezza della punta della freccia. |
gantt.arrow.radius | numero | 15 | Il raggio per definire la curva della freccia tra due attività. |
gantt.arrow.spaceAfter | numero | 4 | La quantità di spazio vuoto tra la punta di una freccia e l'attività a cui punta. |
gantt.arrow.width | numero | 1,4 | La larghezza delle frecce. |
gantt.barCornerRadius | numero | 2 | Il raggio per definire la curva degli angoli di una barra. |
gantt.barHeight | numero | null | L'altezza delle barre per le attività. |
gantt.criticalPathEnabled | boolean | true |
Se true frecce sul percorso critico avranno uno stile diverso.
|
gantt.criticalPathStyle | oggetto | null | Un oggetto contenente lo stile di eventuali frecce del percorso critiche. |
gantt.criticalPathStyle.stroke | stringa | null | Il colore di eventuali frecce del percorso critico. |
gantt.criticalPathStyle.strokeWidth | numero | 1,4 | Lo spessore delle frecce del percorso critiche. |
gantt.defaultStartDate | data/numero | null |
Se non è possibile calcolare la data di inizio utilizzando i valori della tabella di dati, la data di inizio verrà impostata su questa. Accetta un valore date (new Date(YYYY, M, D) ) o un numero, che rappresenta il numero di millisecondi da utilizzare.
|
gantt.innerGridHorizLine | oggetto | null | Definisce lo stile delle linee interne della griglia orizzontale. |
gantt.innerGridHorizLine.stroke | stringa | null | Il colore delle linee interne della griglia orizzontale. |
gantt.innerGridHorizLine.strokeWidth | numero | 1 | La larghezza delle linee interne della griglia orizzontale. |
gantt.innerGridTrack.fill | stringa | null |
Il colore di riempimento della traccia griglia interna. Se non viene specificato alcun valore innerGridDarkTrack.fill , questo verrà applicato a ogni traccia della griglia.
|
gantt.innerGridDarkTrack.fill | stringa | null | Il colore di riempimento della traccia alternativa scura della griglia interna. |
gantt.labelMaxWidth | numero | 300 | La quantità massima di spazio consentita per ogni etichetta dell'attività. |
gantt.labelStyle | oggetto | null |
Un oggetto contenente gli stili per le etichette delle attività. labelStyle: { fontName: Roboto2, fontSize: 14, color: '#757575' }, |
gantt.percentEnabled | boolean | true | Compila la barra delle applicazioni in base alla percentuale di completamento dell'attività. |
gantt.percentStyle.fill | stringa | null | Il colore della parte della percentuale di completamento di una barra delle applicazioni. |
gantt.shadowEnabled | boolean | true |
Se impostato su true , disegna un'ombra sotto ogni barra delle applicazioni con dipendenze.
|
gantt.shadowColor | stringa | "#000" | Definisce il colore delle ombre sotto qualsiasi barra delle applicazioni con dipendenze. |
gantt.shadowOffset | numero | 1 | Definisce l'offset, in pixel, delle ombre in qualsiasi barra delle applicazioni con dipendenze. |
gantt.sortTasks | boolean | true | Specifica che le attività devono essere ordinate in modo topologico, se vero, altrimenti utilizza lo stesso ordine delle righe corrispondenti della tabella di dati. |
gantt.trackHeight | numero | null | L'altezza dei binari. |
larghezza | numero | larghezza dell'elemento contenitore | Larghezza del grafico, in pixel. |
altezza | numero | dell'elemento contenitore | dell'altezza del grafico, in pixel. |
Metodi
Metodo | Descrizione |
---|---|
draw(data, options) |
Disegna il grafico. Il grafico accetta ulteriori chiamate di metodo solo dopo che è stato attivato
l'evento Tipo di reso: nessuno
|
getSelection() |
Restituisce un array delle entità del grafico selezionate.
Le entità selezionabili sono barre, voci di legenda e categorie.
Per questo grafico, è possibile selezionare una sola entità alla volta.
Tipo restituito: array di elementi di selezione
|
setSelection() |
Seleziona le entità del grafico specificate. Annulla la selezione precedente.
Le entità selezionabili sono barre, voci di legenda e categorie.
Per questo grafico è possibile selezionare una sola entità alla volta.
Tipo di reso: nessuno
|
clearChart() |
Cancella il grafico e rilascia tutte le risorse allocate. Tipo di reso: nessuno
|
Eventi
Evento | Descrizione |
---|---|
click |
Attivato quando l'utente fa clic all'interno del grafico. Può essere utilizzato per identificare quando viene fatto clic su titolo, elementi di dati, voci della legenda, assi, linee della griglia o etichette. Proprietà:targetID
|
error |
Attivato quando si verifica un errore durante il tentativo di rendering del grafico. Proprietà: id, messaggio
|
ready |
Il grafico è pronto per le chiamate di metodi esterne. Se vuoi interagire con il grafico e richiamare i metodi dopo averlo tracciato, devi impostare un listener per questo evento prima di chiamare il metodo Proprietà:nessuna
|
select |
Attivato quando l'utente fa clic su un'entità visiva. Per sapere quali elementi sono stati selezionati, chiama
Proprietà:nessuna
|
Norme sui dati
Tutto il codice e i dati vengono elaborati e visualizzati nel browser. Nessun dato viene inviato a nessun server.