Ringkasan
Diagram Gantt adalah jenis diagram yang menggambarkan pengelompokan project menjadi tugas-tugas komponennya. Diagram Gantt Google menggambarkan awal, akhir, dan durasi tugas dalam sebuah project, serta dependensi yang mungkin dimiliki tugas tersebut. Diagram Gantt Google dirender di browser menggunakan SVG. Seperti semua diagram Google, diagram Gantt menampilkan tooltip saat pengguna mengarahkan kursor ke data.
Catatan: Diagram Gantt tidak akan berfungsi di Internet Explorer versi lama. (IE8 dan versi sebelumnya tidak mendukung SVG, yang diperlukan Diagram Gantt.)
Contoh sederhana
<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>
Tidak ada dependensi
Untuk membuat diagram Gantt yang tidak memiliki dependensi, pastikan nilai terakhir untuk setiap baris dalam
DataTable ditetapkan ke 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>
Mengelompokkan resource
Tugas yang mirip dapat dikelompokkan bersama menggunakan resource. Tambahkan kolom jenis string
ke data Anda (setelah kolom Task ID
dan Task Name
), dan pastikan tugas apa pun yang harus dikelompokkan ke dalam resource memiliki ID resource yang sama. Materi akan dikelompokkan menurut warna.
<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>
Awal/akhir/durasi komputasi
Diagram Gantt menerima tiga nilai yang berkaitan dengan durasi tugas: tanggal mulai, tanggal akhir, dan durasi (dalam milidetik). Misalnya, jika tidak ada tanggal mulai, diagram dapat menghitung waktu yang hilang berdasarkan tanggal akhir dan durasinya. Hal yang sama berlaku untuk menghitung tanggal akhir. Jika tanggal mulai dan akhir ditentukan, durasi dapat dihitung di antara keduanya.
Lihat tabel di bawah ini untuk daftar cara Gantt menangani keberadaan awal, akhir, dan durasi dalam keadaan yang berbeda.
Mulai | Akhiri | Durasi | Hasil |
---|---|---|---|
Presentasikan | Presentasikan | Presentasikan | Pastikan durasi tersebut konsisten dengan waktu mulai/berakhir. Menampilkan error jika tidak konsisten. |
Presentasikan | Presentasikan | Null | Menghitung durasi dari waktu mulai dan berakhir. |
Presentasikan | Null | Presentasikan | Menghitung waktu berakhir. |
Presentasikan | Null | Null | Menampilkan error karena tidak dapat menghitung durasi atau waktu berakhir. |
Null | Presentasikan | Presentasikan | Menghitung waktu mulai. |
Null | Null | Presentasikan |
Menghitung waktu mulai berdasarkan dependensi. Bersama dengan defaultStartDate , memungkinkan diagram digambar hanya dengan menggunakan durasi.
|
Null | Presentasikan | Null | Menampilkan error karena tidak dapat menghitung waktu mulai atau durasi. |
Null | Null | Null | Menampilkan error karena tidak dapat menghitung waktu mulai, waktu berakhir, atau durasi. |
Dengan mempertimbangkan hal di atas, Anda dapat membuat diagram yang menampilkan perjalanan biasa ke kantor dengan hanya menggunakan durasi setiap tugas.
<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>
Jalur kritis
Jalur kritis dalam diagram Gantt adalah jalur, atau jalur, yang secara langsung memengaruhi
tanggal akhir. Jalur kritis dalam diagram Gantt Google berwarna merah secara default, dan dapat disesuaikan menggunakan opsi criticalPathStyle
. Anda juga dapat menonaktifkan jalur penting dengan menetapkan criticalPathEnabled
ke false
.
var options = { height: 275, gantt: { criticalPathEnabled: true, criticalPathStyle: { stroke: '#e64a19', strokeWidth: 5 } } };
Menata gaya panah
Anda dapat menata gaya panah dependensi di antara tugas dengan opsi 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 } } };
Menata gaya trek
Gaya visual petak ditangani oleh kombinasi innerGridHorizLine
, innerGridTrack
, dan innerGridDarkTrack
. Dengan menetapkan innerGridTrack
saja, diagram akan menghitung warna yang lebih gelap untuk innerGridDarkTrack
, tetapi dengan menetapkan innerGridDarkTrack
saja, innerGridTrack
akan menggunakan warna defaultnya dan tidak akan menghitung warna yang lebih terang.
var options = { height: 275, gantt: { criticalPathEnabled: false, innerGridHorizLine: { stroke: '#ffe0b2', strokeWidth: 2 }, innerGridTrack: {fill: '#fff3e0'}, innerGridDarkTrack: {fill: '#ffcc80'} } };
Memuat
Nama paket google.charts.load
adalah "gantt"
.
google.charts.load("current", {packages: ["gantt"]});
Nama class visualisasi adalah google.visualization.Gantt
.
var chart = new google.visualization.Gantt(container);
Format data
Baris: Setiap baris dalam tabel mewakili tugas.
Kolom:
Kolom 0 | Kolom 1 | Kolom 2 | Kolom 3 | Kolom 4 | Kolom 5 | Kolom 6 | Kolom 7 | |
---|---|---|---|---|---|---|---|---|
Tujuan: | ID Tugas | Nama Tugas | ID Resource (opsional) | Mulai | Akhiri | Durasi (dalam milidetik) | Persen Selesai | Dependensi |
Jenis Data: | string | string | string | date | date | number | number | string |
Peran: | domain | data | data | data | data | data | data | data |
Opsi konfigurasi
Name | Jenis | Default | Deskripsi |
---|---|---|---|
backgroundColor.fill | string | 'putih' | Warna pengisi diagram, sebagai string warna HTML. |
gantt.arrow | objek | null |
Untuk Gantt Charts,
gantt.arrow mengontrol berbagai properti panah yang menghubungkan tugas.
|
gantt.arrow.angle | number | 45 | Sudut kepala panah. |
gantt.arrow.color | string | '#000' | Warna panah. |
gantt.arrow.length | number | 8 | Panjang kepala panah. |
gantt.arrow.radius | number | 15 | Radius untuk menentukan kurva panah di antara dua tugas. |
gantt.arrow.spaceAfter | number | 4 | Jumlah spasi kosong antara kepala panah dan tugas yang ditunjuk. |
gantt.arrow.width | number | 1,4 | Lebar panah. |
gantt.barCornerRadius | number | 2 | Radius untuk menentukan kurva sudut batang. |
gantt.barHeight | number | null | Ketinggian batang untuk tugas. |
gantt.criticalPathEnabled | boolean | true |
Jika true panah pada jalur kritis akan diberi gaya dengan cara yang berbeda.
|
gantt.criticalPathStyle | objek | null | Objek yang berisi gaya untuk setiap panah jalur kritis. |
gantt.criticalPathStyle.stroke | string | null | Warna panah jalur kritis. |
gantt.criticalPathStyle.strokeWidth | number | 1,4 | Ketebalan panah jalur kritis. |
gantt.defaultStartDate | tanggal/nomor | null |
Jika tanggal mulai tidak dapat dihitung dari nilai dalam DataTable, tanggal mulai akan
ditetapkan ke tanggal ini. Menerima nilai date (new Date(YYYY, M, D) ) atau
angka, yang merupakan jumlah milidetik untuk digunakan.
|
gantt.innerGridHorizLine | objek | null | Mendefinisikan gaya garis petak horizontal bagian dalam. |
gantt.innerGridHorizLine.stroke | string | null | Warna garis petak horizontal bagian dalam. |
gantt.innerGridHorizLine.strokeWidth | number | 1 | Lebar garis petak horizontal bagian dalam. |
gantt.innerGridTrack.fill | string | null |
Warna isian jalur kisi bagian dalam. Jika tidak ada innerGridDarkTrack.fill yang ditentukan, maka akan diterapkan ke setiap jalur petak.
|
gantt.innerGridDarkTrack.fill | string | null | Warna isian trek petak dalam yang berbeda dan gelap. |
gantt.labelMaxWidth | number | 300 | Jumlah ruang maksimum yang diizinkan untuk setiap label tugas. |
gantt.labelStyle | objek | null |
Objek yang berisi gaya untuk label tugas. labelStyle: { fontName: Roboto2, fontSize: 14, color: '#757575' }, |
gantt.percentEnabled | boolean | true | Mengisi taskbar berdasarkan persentase yang diselesaikan untuk tugas tersebut. |
gantt.percentStyle.fill | string | null | Warna bagian persentase yang selesai pada taskbar. |
gantt.shadowEnabled | boolean | true |
Jika disetel ke true , gambar bayangan di bawah setiap taskbar yang memiliki dependensi.
|
gantt.shadowColor | string | '#000' | Mendefinisikan warna bayangan di bawah bilah tugas yang memiliki dependensi. |
gantt.shadowOffset | number | 1 | Mendefinisikan offset, dalam piksel, bayangan di bawah taskbar yang memiliki dependensi. |
gantt.sortTasks | boolean | true | Menentukan bahwa tugas harus diurutkan secara topologis, jika benar; jika tidak, gunakan urutan yang sama dengan baris DataTable yang sesuai. |
gantt.trackHeight | number | null | Tinggi trek. |
lebar | number | lebar elemen yang memuatnya | Lebar diagram, dalam piksel. |
tinggi | number | tinggi elemen yang memuatnya | tinggi bagan, dalam {i>pixel<i}. |
Metode
Metode | Deskripsi |
---|---|
draw(data, options) |
Menggambar diagram. Diagram menerima panggilan metode lebih lanjut hanya setelah peristiwa Jenis Pengembalian: tidak ada
|
getSelection() |
Menampilkan array entitas diagram yang dipilih.
Entitas yang dapat dipilih adalah batang, entri legenda, dan kategori.
Untuk diagram ini, hanya satu entitas yang dapat dipilih pada waktu tertentu.
Jenis Pengembalian: Array elemen pilihan
|
setSelection() |
Memilih entitas diagram yang ditentukan. Membatalkan pilihan sebelumnya.
Entitas yang dapat dipilih adalah batang, entri legenda, dan kategori.
Untuk diagram ini, hanya satu entitas yang dapat dipilih pada satu waktu.
Jenis Pengembalian: tidak ada
|
clearChart() |
Mengosongkan diagram, dan melepaskan semua resource yang dialokasikan. Jenis Pengembalian: tidak ada
|
Acara
Acara | Deskripsi |
---|---|
click |
Diaktifkan saat pengguna mengklik di dalam diagram. Dapat digunakan untuk mengidentifikasi kapan judul, elemen data, entri legenda, sumbu, garis petak, atau label diklik. Properti: targetID
|
error |
Diaktifkan saat terjadi error saat mencoba merender diagram. Properties: id, pesan
|
ready |
Diagram siap untuk panggilan metode eksternal. Jika ingin berinteraksi dengan diagram, dan memanggil metode setelah menggambarnya, Anda harus menyiapkan pemroses untuk peristiwa ini sebelum memanggil metode Properti: tidak ada
|
select |
Diaktifkan saat pengguna mengklik entitas visual. Untuk mempelajari apa yang telah dipilih, panggil
Properti: tidak ada
|
Kebijakan data
Semua kode dan data diproses dan dirender di browser. Tidak ada data yang dikirim ke server mana pun.