Genel bakış
Gantt şeması, bir projenin bileşenlerinin görevlerine dökümünü gösteren bir grafik türüdür. Google Gantt şemaları, bir projedeki görevlerin başlangıcını, bitişini ve süresini ve bu görevlerin sahip olabileceği bağımlılıkları gösterir. Google Gantt grafikleri, tarayıcıda SVG kullanılarak oluşturulur. Tüm Google grafiklerinde olduğu gibi, Gantt grafikleri de kullanıcı verilerin üzerine geldiğinde ipuçları görüntüler.
Not: Gantt şemaları, Internet Explorer'ın eski sürümlerinde çalışmaz. (IE8 ve önceki sürümler, Gantt şemalarının gerektirdiği SVG'yi desteklemez.)
Basit bir örnek
<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>
Bağımlılık yok
Bağımlılık içermeyen bir Gantt şeması oluşturmak için Veri Tablonuzdaki her bir satırın son değerinin null
olarak ayarlandığından emin olun.
<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>
Kaynakları gruplandırma
Yapıları benzer olan görevler, kaynaklar kullanılarak birlikte gruplandırılabilir. Verilerinize string
türünde bir sütun ekleyin (Task ID
ve Task Name
sütunlarından sonra) ve kaynak olarak gruplandırılması gereken tüm görevlerin aynı kaynak kimliğine sahip olduğundan emin olun. Kaynaklar renge göre gruplandırılır.
<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>
Başlangıç/bitiş/süre hesaplama
Gantt şemaları görevin süresiyle ilgili üç değeri kabul eder: başlangıç tarihi, bitiş tarihi ve süre (milisaniye cinsinden). Örneğin, başlangıç tarihi yoksa grafik, eksik zamanı bitiş tarihine ve süreye göre hesaplayabilir. Aynı durum bitiş tarihinin hesaplanmasında da geçerlidir. Hem başlangıç hem de bitiş tarihi sağlanırsa süre, ikisi arasında hesaplanabilir.
Gantt'ın farklı durumlarda başlangıç, bitiş ve süre varlığını nasıl ele aldığının listesini görmek için aşağıdaki tabloya bakın.
Başlangıç | Sonlandır | Süre | Sonuç |
---|---|---|---|
Göster | Göster | Göster | Sürenin başlangıç/bitiş zamanlarıyla tutarlı olduğundan emin olun. Tutarsızsa hata döndürür. |
Göster | Göster | Boş | Başlangıç ve bitiş zamanlarından itibaren süreyi hesaplar. |
Göster | Boş | Göster | Bitiş zamanını hesaplar. |
Göster | Boş | Boş | Süre veya bitiş zamanı hesaplanamıyor olarak hata döndürür. |
Boş | Göster | Göster | Başlangıç zamanını hesaplar. |
Boş | Boş | Göster |
Bağımlılıklara göre başlangıç zamanını hesaplar. defaultStartDate ile birlikte, grafiğin yalnızca süre kullanılarak çizilebilmesini sağlar.
|
Boş | Göster | Boş | Başlangıç zamanı veya süre hesaplanamadı olarak hata döndürür. |
Boş | Boş | Boş | Başlangıç zamanı, bitiş zamanı veya süre hesaplanamadı olarak hata döndürür. |
Yukarıdakileri göz önünde bulundurarak, yalnızca her bir görevin süresini kullanarak işe gidip gelmeye ilişkin tipik bir yol sunan bir grafik oluşturabilirsiniz.
<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>
Kritik yol
Gantt şemasındaki kritik yol, bitiş tarihini doğrudan etkileyen yol veya yollardır. Google Gantt şemalarındaki kritik yol, varsayılan olarak kırmızı renktedir ve criticalPathStyle
seçenekleri kullanılarak özelleştirilebilir. Ayrıca criticalPathEnabled
değerini false
olarak ayarlayarak kritik yolu kapatabilirsiniz.
var options = { height: 275, gantt: { criticalPathEnabled: true, criticalPathStyle: { stroke: '#e64a19', strokeWidth: 5 } } };
Okların stilini belirleme
gantt.arrow
seçeneklerini kullanarak görevler arasındaki bağımlılık oklarının stilini belirleyebilirsiniz:
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 } } };
Parçaların stilini belirleme
Izgara stili; innerGridHorizLine
, innerGridTrack
ve innerGridDarkTrack
kombinasyonuyla yönetilir. Yalnızca innerGridTrack
ayarlandığında grafik, innerGridDarkTrack
için daha koyu bir renk hesaplar. Ancak yalnızca innerGridDarkTrack
ayarlandığında innerGridTrack
, kendi varsayılan rengini kullanır ve daha açık bir renk hesaplamaz.
var options = { height: 275, gantt: { criticalPathEnabled: false, innerGridHorizLine: { stroke: '#ffe0b2', strokeWidth: 2 }, innerGridTrack: {fill: '#fff3e0'}, innerGridDarkTrack: {fill: '#ffcc80'} } };
Yükleniyor
google.charts.load
paketinin adı: "gantt"
.
google.charts.load("current", {packages: ["gantt"]});
Görselleştirmenin sınıf adı: google.visualization.Gantt
.
var chart = new google.visualization.Gantt(container);
Veri biçimi
Satırlar: Tablodaki her satır bir görevi temsil eder.
Sütunlar:
Sütun 0 | 1. Sütun | 2. Sütun | 3. Sütun | 4. Sütun | 5. sütun | 6. Sütun | 7. Sütun | |
---|---|---|---|---|---|---|---|---|
Amaç: | Görev Kimliği | Görev Adı | Kaynak kimliği (isteğe bağlı) | Başlangıç | Sonlandır | Süre (milisaniye cinsinden) | Tamamlanan Yüzde | Bağımlılıklar |
Veri Türü: | dize | dize | dize | tarih | tarih | sayı | sayı | dize |
Rol: | alan | veri | veri | veri | veri | veri | veri | veri |
Yapılandırma seçenekleri
Ad | Tür | Varsayılan | Açıklama |
---|---|---|---|
backgroundColor.fill | dize | "white" (beyaz) | HTML renk dizesi olarak grafik dolgu rengi. |
gantt.arrow | nesne | null |
Gantt şemaları için gantt.arrow , görevleri bağlayan okların çeşitli özelliklerini kontrol eder.
|
gantt.arrow.angle | sayı | 45 | Okun başının açısı. |
gantt.arrow.color | dize | "#000" | Okların rengi. |
gantt.arrow.length | sayı | 8 | Okun başının uzunluğu. |
gantt.arrow.radius | sayı | 15 | İki görev arasındaki okun eğrisini tanımlamak için kullanılacak yarıçap. |
gantt.arrow.spaceAfter | sayı | 4 | Bir okun başı ile işaret ettiği görev arasındaki boşluk miktarı. |
gantt.arrow.width | sayı | 1.4 | Okların genişliği. |
gantt.barCornerRadius | sayı | 2 | Bir çubuğun köşelerinin eğrisini tanımlamak için kullanılacak yarıçap. |
gantt.barHeight | sayı | null | Görevlere ilişkin çubukların yüksekliği. |
gantt.criticalPathEnabled | boolean | true |
true ise kritik yoldaki tüm okların stili farklı şekilde belirlenir.
|
gantt.criticalPathStyle | nesne | null | Kritik yol oklarının stilini içeren nesne. |
gantt.criticalPathStyle.stroke | dize | null | Kritik yol oklarının rengi. |
gantt.criticalPathStyle.strokeWidth | sayı | 1.4 | Kritik yol oklarının kalınlığı. |
gantt.defaultStartDate | tarih/numara | null |
Veri Tablosu'ndaki değerlerden başlangıç tarihi hesaplanamıyorsa başlangıç tarihi buna ayarlanır. date değerini (new Date(YYYY, M, D) ) veya kullanılacak milisaniye sayısı olan sayıyı kabul eder.
|
gantt.innerGridHorizLine | nesne | null | İç yatay ızgara çizgilerinin stilini tanımlar. |
gantt.innerGridHorizLine.stroke | dize | null | İç yatay kılavuz çizgilerinin rengi. |
gantt.innerGridHorizLine.strokeWidth | sayı | 1 | İç yatay kılavuz çizgilerinin genişliği. |
gantt.innerGridTrack.fill | dize | null |
İç ızgara yolunun dolgu rengi. innerGridDarkTrack.fill belirtilmezse bu işlem her ızgara kanalına uygulanır.
|
gantt.innerGridDarkTrack.fill | dize | null | Alternatif, koyu iç ızgara yolunun dolgu rengi. |
gantt.labelMaxWidth | sayı | 300 | Her görev etiketi için izin verilen maksimum alan miktarı. |
gantt.labelStyle | nesne | null |
Görev etiketlerinin stillerini içeren bir nesne. labelStyle: { fontName: Roboto2, fontSize: 14, color: '#757575' }, |
gantt.percentEnabled | boolean | true | Görev için tamamlanan yüzdeye göre görev çubuğunu doldurur. |
gantt.percentStyle.fill | dize | null | Görev çubuğunun tamamlanan yüzde bölümünün rengi. |
gantt.shadowEnabled | boolean | true |
true değerine ayarlanırsa her görev çubuğunun altına bağımlılıkları olan bir gölge çizer.
|
gantt.shadowColor | dize | "#000" | Bağımlılıkları olan görev çubuklarının altındaki gölgelerin rengini tanımlar. |
gantt.shadowOffset | sayı | 1 | Bağımlılıkları olan herhangi bir görev çubuğunun altındaki gölgelerin ofsetini piksel cinsinden tanımlar. |
gantt.sortTasks | boolean | true | Görevlerin, doğruysa topolojik olarak sıralanması gerektiğini, aksi takdirde DataTable'ın karşılık gelen satırlarıyla aynı sıralamayı kullanmasını belirtir. |
gantt.trackHeight | sayı | null | Kanalların yüksekliği. |
genişlik | sayı | kapsayıcı öğenin genişliği | Grafiğin piksel cinsinden genişliği. |
yükseklik | sayı | kapsayıcı öğenin yüksekliği | grafiğin piksel cinsinden yüksekliği. |
Yöntemler
Yöntem | Açıklama |
---|---|
draw(data, options) |
Grafiği çizer. Grafik, yalnızca Return Type (Dönüş Türü): yok
|
getSelection() |
Seçilen grafik varlıklarından oluşan bir dizi döndürür.
Seçilebilir varlıklar çubuklar, gösterge girişleri ve kategorilerdir.
Bu grafik için aynı anda yalnızca bir öğe seçilebilir.
Dönüş Türü: Seçim öğeleri dizisi
|
setSelection() |
Belirtilen grafik varlıklarını seçer. Önceki seçimleri iptal eder.
Seçilebilir varlıklar çubuklar, gösterge girişleri ve kategorilerdir.
Bu grafik için aynı anda yalnızca bir öğe seçilebilir.
Return Type (Dönüş Türü): yok
|
clearChart() |
Grafiği temizler ve ayrılan tüm kaynaklarını serbest bırakır. Return Type (Dönüş Türü): yok
|
Etkinlikler
Etkinlik | Açıklama |
---|---|
click |
Kullanıcı grafiğin içini tıkladığında tetiklenir. Başlığın, veri öğelerinin, gösterge girişlerinin, eksenlerin, kılavuz çizgilerinin veya etiketlerin ne zaman tıklandığını tanımlamak için kullanılabilir. Özellikler: targetID
|
error |
Grafik oluşturulmaya çalışılırken bir hata oluştuğunda tetiklenir. Özellikler: kimlik, mesaj
|
ready |
Grafik, harici yöntem çağrıları için hazır. Grafikle etkileşim kurmak ve
çizdikten sonra yöntemleri çağırmak isterseniz Özellikler: yok
|
select |
Kullanıcı bir görsel öğeyi tıkladığında tetiklenir. Neyin seçildiğini öğrenmek için Özellikler: yok
|
Veri politikası
Tüm kod ve veriler tarayıcıda işlenip oluşturulur. Herhangi bir sunucuya veri gönderilmez.