HTMLcopy
1
<div id="container"></div>
CSScopy
6
1
html, body, #container {
2
width: 100%;
3
height: 100%;
4
margin: 0;
5
padding: 0;
6
}
JavaScriptcopy
x
1
anychart.onDocumentReady(function () {
2
3
// create data
4
var data = [
5
{
6
id: "1",
7
name: "Development",
8
actualStart: "2018-01-15",
9
actualEnd: "2018-03-10",
10
manager: "John Doe",
11
children: [
12
{
13
id: "1_1",
14
name: "Analysis",
15
actualStart: "2018-01-15",
16
actualEnd: "2018-01-25",
17
progressValue: "75%",
18
manager: "Richard Roe"
19
},
20
{
21
id: "1_2",
22
name: "Design",
23
actualStart: "2018-01-20",
24
actualEnd: "2018-02-04",
25
progressValue: "100%",
26
manager: "Larry Loe"
27
},
28
{
29
id: "1_3",
30
name: "Meeting",
31
actualStart: "2018-02-05",
32
actualEnd: "2018-02-05",
33
manager: "John Doe"
34
},
35
{
36
id: "1_4",
37
name: "Implementation",
38
actualStart: "2018-02-05",
39
actualEnd: "2018-02-24",
40
progressValue: "60%",
41
manager: "Marta Moe"
42
},
43
{
44
id: "1_5",
45
name: "Testing",
46
actualStart: "2018-02-25",
47
actualEnd: "2018-03-10",
48
manager: "Jane Poe"
49
}
50
]}
51
];
52
53
// create a data tree
54
var treeData = anychart.data.tree(data, "as-tree");
55
56
// create a chart
57
var chart = anychart.ganttProject();
58
59
// set the data
60
chart.data(treeData);
61
62
// configure tooltips of the timeline
63
64
chart.getTimeline().tooltip().useHtml(true);
65
66
chart.getTimeline().tooltip().format(function() {
67
68
var numChildren = this.item.numChildren();
69
var duration = (this.actualEnd - this.actualStart) / 1000 / 3600 / 24;
70
var startDate = anychart.format.dateTime(this.actualStart, "dd MMM");
71
var endDate = anychart.format.dateTime(this.actualEnd, "dd MMM");
72
var progress = this.progress * 100 + "%";
73
var manager = this.getData("manager");
74
75
var parentText = "<span style='font-weight:600;font-size:12pt'>" +
76
startDate + " - " + endDate + "</span><br><br>" +
77
"Duration: " + duration + " days<br>" +
78
"Number of Tasks: " + numChildren + "<br><br>" +
79
"Manager: " + manager;
80
81
var milestoneText = "<span style='font-weight:600;font-size:12pt'>" +
82
startDate + "</span><br><br>" +
83
"Manager: " + manager;
84
85
var taskText = "<span style='font-weight:600;font-size:12pt'>" +
86
startDate + " - " + endDate + "</span><br><br>" +
87
"Duration: " + duration + " days<br>" +
88
"Progress: " + progress + "<br><br>" +
89
"Manager: " + manager;
90
91
// identify the task type and display the corresponding text
92
if (numChildren > 0) {
93
return parentText;
94
} else {
95
if (duration == 0) {
96
return milestoneText;
97
} else {
98
return taskText;
99
}
100
}
101
102
});
103
104
// configure the scale
105
chart.getTimeline().scale().maximum("2018-03-15");
106
107
// set the container id
108
chart.container("container");
109
110
// initiate drawing the chart
111
chart.draw();
112
113
// fit elements to the width of the timeline
114
chart.fitAll();
115
});