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
// create data tree on our data
3
var treeData = anychart.data.tree(getData(), anychart.enums.TreeFillingMethod.AS_TABLE);
4
5
// create project gantt chart
6
var chart = anychart.ganttProject();
7
8
// set container id for the chart
9
chart.container('container');
10
11
// set data for the chart
12
chart.data(treeData);
13
14
// set start splitter position settings
15
chart.splitterPosition(370);
16
17
// get chart data grid link to set column settings
18
var dataGrid = chart.dataGrid();
19
20
// set first column settings
21
var firstColumn = dataGrid.column(0);
22
firstColumn.title('#');
23
firstColumn.width(30);
24
firstColumn.cellTextSettings().hAlign('center');
25
26
// set second column settings
27
var secondColumn = dataGrid.column(1);
28
secondColumn.cellTextSettings().hAlign('left');
29
secondColumn.width(180);
30
31
// set third column settings
32
var thirdColumn = dataGrid.column(2);
33
thirdColumn.title('Start Time');
34
thirdColumn.width(70);
35
thirdColumn.cellTextSettings().hAlign('right');
36
thirdColumn.format(function (item) {
37
var actStart = item.get(anychart.enums.GanttDataFields.ACTUAL_START);
38
var date = new Date(actStart || item.meta('autoStart'));
39
var month = date.getUTCMonth() + 1;
40
var strMonth = (month > 9) ? month : '0' + month;
41
var utcDate = date.getUTCDate();
42
var strDate = (utcDate > 9) ? utcDate : '0' + utcDate;
43
return date.getUTCFullYear() + '.' + strMonth + '.' + strDate;
44
});
45
46
// set fourth column settings
47
var fourthColumn = dataGrid.column(3);
48
fourthColumn.title('End Time');
49
fourthColumn.width(80);
50
fourthColumn.cellTextSettings().hAlign('right');
51
fourthColumn.format(function (item) {
52
var actEnd = item.get(anychart.enums.GanttDataFields.ACTUAL_END);
53
var date = new Date(actEnd || item.meta('autoEnd'));
54
var month = date.getUTCMonth() + 1;
55
var strMonth = (month > 9) ? month : '0' + month;
56
var utcDate = date.getUTCDate();
57
var strDate = (utcDate > 9) ? utcDate : '0' + utcDate;
58
return date.getUTCFullYear() + '.' + strMonth + '.' + strDate;
59
});
60
var now = (new Date()).getTime();
61
var sec = 1000;
62
var min = 60 * sec;
63
var hour = 60 * min;
64
var day = 24 * hour;
65
66
var tl = chart.getTimeline();
67
// creating a line marker
68
tl.lineMarker(0).value(anychart.enums.GanttDateTimeMarkers.CURRENT);
69
// creating a text marker
70
tl.textMarker(0).value(anychart.enums.GanttDateTimeMarkers.CURRENT).text('TODAY').fontSize(20);
71
// creating a range marker
72
tl.rangeMarker(0).from(Date.UTC(2016, 0, 1)).to(anychart.enums.GanttDateTimeMarkers.END);
73
tl.rangeMarker(1).from(now - 7 * day).to(anychart.enums.GanttDateTimeMarkers.CURRENT);
74
75
// set colors for milestones
76
tl.milestoneFill("#4A148C");
77
tl.milestoneStroke("#1A237E");
78
79
// set colors for the connectors
80
tl.connectorFill("#0D47A1");
81
tl.connectorStroke("#90CAF9");
82
83
// initiate chart drawing
84
chart.draw();
85
86
// zoom chart to specified date
87
chart.fitAll();
88
});
89
90
function getData() {
91
var now = (new Date()).getTime();
92
var sec = 1000;
93
var min = 60 * sec;
94
var hour = 60 * min;
95
var day = 24 * hour;
96
return [
97
{"id": "1", "name": "Phase 1 - Strategic Plan", "progressValue": "14%"},
98
{"id": "2", "name": "Self-Assessment", parent: "1", "progressValue": "25%"},
99
{
100
"id": "3",
101
"name": "Define business vision",
102
parent: "2",
103
"progressValue": "0%",
104
"actualStart": (now - 9 * day),
105
"actualEnd": (now - 2 * day),
106
"connectTo": "4",
107
"connectorType": "FinishStart"
108
},
109
{
110
"id": "4",
111
"name": "Identify available skills, information and support",
112
parent: "2",
113
"progressValue": "0%",
114
"actualStart": (now + 5 * day),
115
"connectTo": "5",
116
"connectorType": "FinishStart"
117
},
118
{
119
"id": "5",
120
"name": "Decide whether to proceed",
121
parent: "2",
122
"progressValue": "0%",
123
"actualStart": (now + 3*day),
124
"actualEnd": (now + 5 * day),
125
"connectTo": "7",
126
"connectorType": "FinishStart"
127
},
128
{"id": "6", "name": "Define the Opportunity", parent: "1", "progressValue": "27%"},
129
{
130
"id": "7",
131
"name": "Research the market and competition",
132
parent: "6",
133
"progressValue": "0%",
134
"actualStart": (now + 6*day),
135
"actualEnd": (now + 13 * day),
136
"connectTo": "8",
137
"connectorType": "FinishStart"
138
},
139
{
140
"id": "8",
141
"name": "Interview owners of similar businesses",
142
parent: "6",
143
"progressValue": "60%",
144
"actualStart": (now + 5 * day),
145
"actualEnd": (now + 15 * day),
146
"connectTo": "9",
147
"actual": {
148
"fill": "red"
149
},
150
"progress": {
151
"fill": {
152
"color": "black",
153
"opacity": 0.3
154
}
155
},
156
"connectorType": "FinishStart"
157
},
158
{
159
"id": "9",
160
"name": "Identify needed resources",
161
parent: "6",
162
"progressValue": "0%",
163
"actualStart": (now + 5 * day),
164
"connectTo": "10",
165
"connectorType": "FinishStart"
166
},
167
{
168
"id": "10",
169
"name": "Identify operating cost elements",
170
parent: "6",
171
"progressValue": "0%",
172
"actualStart": (now + 15 * day),
173
"actualEnd": (now + 29 * day),
174
"connectTo": "12",
175
"connectorType": "FinishStart"
176
}
177
];
178
}