סקירה כללית
תרשים גאנט הוא סוג של תרשים שממחיש את פירוט הפרויקט למשימות הרכיבים שלו. בתרשימי Google Gantt אפשר לראות את ההתחלה, הסיום ומשך הזמן של משימות בפרויקט, וגם את יחסי התלות שיש למשימה. תרשימי Google Gantt מעובדים בדפדפן באמצעות SVG. כמו כל התרשימים של Google, בתרשימי גאנט מוצגים הסברים קצרים כשהמשתמש מעביר את העכבר מעל הנתונים.
הערה: תרשימי גאנט לא יפעלו בגרסאות ישנות של Internet Explorer. (IE8 וגרסאות קודמות לא תומכות ב-SVG, מה שמחייב תרשימי גאנט).
דוגמה פשוטה
<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>
אין יחסי תלות
כדי ליצור תרשים גאנט ללא יחסי תלות, צריך לוודא שהערך האחרון בכל שורה ב-DataTable מוגדר ל-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>
קיבוץ משאבים
אפשר לקבץ יחד משימות דומות באמצעות משאבים. מוסיפים לנתונים עמודה מסוג string
(אחרי העמודות Task ID
ו-Task Name
), ומוודאים שלכל המשימות שאתם רוצים לקבץ במשאב יש אותו מזהה משאב. המשאבים יקובצו לפי צבע.
<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>
חישוב התחלה/סיום/משך זמן
תרשימי גאנט מקבלים שלושה ערכים הקשורים למשך המשימה: תאריך התחלה, תאריך סיום ומשך זמן (באלפיות שנייה). לדוגמה, אם אין תאריך התחלה, התרשים יכול לחשב את הזמן החסר על סמך תאריך הסיום ומשך הזמן. אותו עיקרון חל על חישוב תאריך הסיום. אם ציינתם גם את תאריך ההתחלה וגם את תאריך הסיום, אפשר לחשב את משך הזמן בין השניים.
בטבלה שבהמשך מפורטת רשימה של האופן שבו Gantt מטפל בנוכחות של התחלה, סיום ומשך זמן בנסיבות שונות.
התחלה | סיום | משך הקורס | תוצאה |
---|---|---|---|
הצגה | הצגה | הצגה | צריך לבדוק שמשך הזמן תואם לזמני ההתחלה והסיום. אם יש חוסר עקביות, הפעולה גורמת לשגיאה. |
הצגה | הצגה | Null | הפונקציה מחשבת את משך הזמן משעת ההתחלה והסיום. |
הצגה | Null | הצגה | מחשב את שעת הסיום. |
הצגה | Null | Null | גורם לשגיאה מסוג 'לא ניתן לחשב את משך הזמן או את שעת הסיום'. |
Null | הצגה | הצגה | שעת ההתחלה של המחשוב. |
Null | Null | הצגה |
מחשבת את שעת ההתחלה על סמך יחסי תלות. בשילוב עם
defaultStartDate , אפשר לצייר תרשים באמצעות משכי זמן בלבד.
|
Null | הצגה | Null | גורם לשגיאה מסוג "לא ניתן לחשב את שעת ההתחלה או את משך הזמן". |
Null | Null | Null | גורם לשגיאה מסוג "לא ניתן לחשב את שעת ההתחלה, שעת הסיום או משך הזמן". |
לאור מה שקרה למעלה, אפשר ליצור תרשים שמפרט את משך הנסיעה היומית לעבודה בדרך כלל, תוך שקלול משך הזמן של כל משימה.
<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>
נתיב קריטי
הנתיב הקריטי בתרשים גאנט הוא הנתיב, או הנתיבים, שמשפיעים ישירות על תאריך הסיום. הנתיב הקריטי בתרשימים של Google Gantt צבוע באדום כברירת מחדל, ואפשר להתאים אותו אישית באמצעות האפשרויות של criticalPathStyle
. אפשר גם להשבית את הנתיב הקריטי על ידי הגדרה של criticalPathEnabled
ל-false
.
var options = { height: 275, gantt: { criticalPathEnabled: true, criticalPathStyle: { stroke: '#e64a19', strokeWidth: 5 } } };
חיצים לעיצוב
אפשר לעצב את חיצי התלות בין משימות באמצעות האפשרויות של 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 } } };
עיצוב טראקים
עיצוב הרשת מטופל על ידי שילוב של innerGridHorizLine
, innerGridTrack
ו-innerGridDarkTrack
. אם מגדירים רק את הערך innerGridTrack
, התרשים תחשב צבע כהה יותר ל-innerGridDarkTrack
. אבל אם מגדירים רק את הערך innerGridDarkTrack
, הצבע של innerGridTrack
ישתמש בצבע ברירת המחדל ולא ייחשב עבור צבע בהיר יותר.
var options = { height: 275, gantt: { criticalPathEnabled: false, innerGridHorizLine: { stroke: '#ffe0b2', strokeWidth: 2 }, innerGridTrack: {fill: '#fff3e0'}, innerGridDarkTrack: {fill: '#ffcc80'} } };
בטעינה
שם החבילה של google.charts.load
הוא "gantt"
.
google.charts.load("current", {packages: ["gantt"]});
שם הכיתה של התצוגה החזותית הוא google.visualization.Gantt
.
var chart = new google.visualization.Gantt(container);
פורמט נתונים
שורות: כל שורה בטבלה מייצגת משימה.
עמודות:
עמודה 0 | עמודה 1 | עמודה 2 | עמודה 3 | עמודה 4 | עמודה 5 | עמודה 6 | עמודה 7 | |
---|---|---|---|---|---|---|---|---|
מטרה: | מזהה המשימה | שם המשימה | מזהה משאב (אופציונלי) | התחלה | סיום | משך זמן (באלפיות שנייה) | אחוזים הושלמו | יחסי תלות |
סוג הנתונים: | string | string | string | date | date | number | number | string |
תפקיד: | דומיין | נתונים | נתונים | נתונים | נתונים | נתונים | נתונים | נתונים |
אפשרויות הגדרה
שם | סוג | ברירת המחדל | תיאור |
---|---|---|---|
backgroundColor.fill | string | 'לבן' | צבע המילוי של התרשים, כמחרוזת של צבע HTML. |
gantt.arrow | אובייקט | null |
בתרשימי גאנט, הפונקציה gantt.arrow קובעת את המאפיינים השונים של החיצים שמחברים בין משימות.
|
gantt.arrow.angle | number | 45 | הזווית של ראש החץ. |
gantt.arrow.color | string | '#000' | צבע החיצים. |
gantt.arrow.length | number | 8 | אורך הראש של החץ. |
gantt.arrow.radius | number | 15 | הרדיוס להגדרת עקומת החץ בין שתי משימות. |
gantt.arrow.spaceAfter | number | 4 | כמות הרווח הלבן בין ראש החץ לבין המשימה שאליה הוא מפנה. |
gantt.arrow.width | number | 1.4 | רוחב החיצים. |
gantt.barCornerRadius | number | 2 | הרדיוס להגדרת העקומה של פינות עמודה. |
gantt.barHeight | number | null | גובה העמודות של המשימות. |
gantt.criticalPathEnabled | boolean | true |
אם true חיצים בנתיב הקריטי יעוצבו באופן שונה.
|
gantt.criticalPathStyle | אובייקט | null | אובייקט שמכיל את הסגנון של כל חיצים של נתיב קריטי. |
gantt.criticalPathStyle.stroke | string | null | הצבע של כל חיצים בנתיב קריטי. |
gantt.criticalPathStyle.strokeWidth | number | 1.4 | העובי של חיצים של נתיב קריטי. |
gantt.defaultStartDate | תאריך/מספר | null |
אם לא ניתן לחשב את תאריך ההתחלה מהערכים ב-DataTable, תאריך ההתחלה יוגדר
כך. מקבל ערך של date (new Date(YYYY, M, D) ) או מספר, שהוא מספר אלפיות השנייה שצריך להשתמש בהן.
|
gantt.innerGridHorizLine | אובייקט | null | מגדיר את הסגנון של קווי הרשת האופקיים הפנימיים. |
gantt.innerGridHorizLine.stroke | string | null | הצבע של קווי הרשת האופקיים הפנימיים. |
gantt.innerGridHorizLine.strokeWidth | number | 1 | הרוחב של קווי הרשת האופקיים הפנימיים. |
gantt.innerGridTrack.fill | string | null |
צבע המילוי של מסלול הרשת הפנימי. אם לא תציינו ערך innerGridDarkTrack.fill , המאפיין יחול על כל מסלולי הרשת.
|
gantt.innerGridDarkTrack.fill | string | null | צבע המילוי של מסלול הרשת החלופי הכהה הפנימי. |
gantt.labelMaxWidth | number | 300 | זהו המקום המקסימלי שמותר לכל תווית משימה. |
gantt.labelStyle | אובייקט | null |
אובייקט שמכיל את הסגנונות של תוויות המשימות. labelStyle: { fontName: Roboto2, fontSize: 14, color: '#757575' }, |
gantt.percentEnabled | boolean | true | מילוי שורת המשימות על סמך האחוז שהושלם עבור המשימה. |
gantt.percentStyle.fill | string | null | הצבע של החלק באחוזים שהושלם בסרגל האפליקציות. |
gantt.shadowEnabled | boolean | true |
אם המדיניות מוגדרת לערך true , מציירים צל מתחת לכל שורת משימות שיש בה יחסי תלות.
|
gantt.shadowColor | string | '#000' | מגדירה את צבע הצלליות מתחת לכל שורת משימות שיש בה תלות. |
gantt.shadowOffset | number | 1 | מגדירה את ההיסט, בפיקסלים, של הצלליות מתחת לכל סרגל משימות שיש בו תלות. |
gantt.sortTasks | boolean | true | מציינת שהמשימות צריכות להיות ממוינות לפי טופולוגיה, אם הערך שלהן הוא True. אחרת, המערכת תשתמש באותו סדר כמו השורות התואמות ב-DataTable. |
gantt.trackHeight | number | null | הגובה של המסלולים. |
רוחב | number | רוחב הרכיב שמכיל | רוחב התרשים, בפיקסלים. |
גובה | number | גובה הרכיב שמכיל | גובה התרשים בפיקסלים. |
שיטות
שיטה | תיאור |
---|---|
draw(data, options) |
מצייר את התרשים. בתרשים יתקבלו קריאות נוספות ל-method, רק אחרי שהאירוע סוג החזרה: ללא
|
getSelection() |
מחזירה מערך של ישויות התרשים שנבחרו.
ישויות שניתן לבחור הן עמודות, רשומות מקרא וקטגוריות.
עבור התרשים הזה, ניתן לבחור רק ישות אחת בכל רגע נתון.
סוג החזרה: מערך של רכיבי בחירה
|
setSelection() |
בחירת ישויות התרשים שצוינו. ביטול הבחירה הקודמת.
ישויות שניתן לבחור הן עמודות, רשומות מקרא וקטגוריות.
בתרשים הזה ניתן לבחור רק ישות אחת בכל פעם.
סוג החזרה: ללא
|
clearChart() |
ניקוי התרשים וכל המשאבים שהוקצו לו. סוג החזרה: ללא
|
אירועים
אירוע | תיאור |
---|---|
click |
מופעל כשהמשתמש לוחץ על התרשים. יכול לשמש כדי לזהות מתי לוחצים על הכותרת, רכיבי הנתונים, רשומות המקרא, הצירים, קווי הרשת או התוויות. נכסים: targetID
|
error |
מופעל כשמתרחשת שגיאה בניסיון לעבד את התרשים. מאפיינים: מזהה, הודעה
|
ready |
התרשים מוכן לקריאות method חיצוניות. כדי לבצע אינטראקציה עם התרשים, ושל שיטות קריאה אחרי שרטוט, צריך להגדיר האזנה לאירוע הזה לפני
שמפעילים את ה-method מאפיינים:ללא
|
select |
מופעל כשהמשתמש לוחץ על ישות חזותית. כדי לבדוק אילו קבוצות נבחרו, אפשר להתקשר למספר
מאפיינים:ללא
|
המדיניות בנושא נתונים
כל הקוד והנתונים מעובדים ומעובדים בדפדפן. לא נשלחים נתונים לאף שרת.