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 tree on our data
4
var treeData = anychart.data.tree(getData(), anychart.enums.TreeFillingMethod.AS_TABLE);
5
6
// create project gantt chart
7
var chart = anychart.ganttProject();
8
9
// set data for the chart
10
chart.data(treeData);
11
12
// set start splitter position settings
13
chart.splitterPosition(200);
14
15
// get chart data grid link to set column settings
16
var dataGrid = chart.dataGrid();
17
18
// set first column settings
19
var firstColumn = dataGrid.column(0);
20
firstColumn.title("#");
21
firstColumn.width(30);
22
firstColumn.cellTextSettings().hAlign("center");
23
24
// set second column settings
25
var secondColumn = dataGrid.column(1);
26
secondColumn.cellTextSettings().hAlign("left");
27
secondColumn.width(250);
28
29
// enable Gantt toolbar
30
var toolbar = anychart.ui.ganttToolbar();
31
toolbar.container("container");
32
toolbar.target(chart); // sets target
33
toolbar.draw();
34
35
// disable Gantt editing
36
chart.editing(false);
37
38
// set container id for the chart
39
chart.container("container");
40
41
// initiate chart drawing
42
chart.draw();
43
44
// zoom chart to specified date
45
chart.fitAll();
46
47
// Manage Chart Toolbar
48
49
// get current toolbar
50
var domToolbar = document.getElementsByClassName("anychart-toolbar")[0];
51
52
// dispose all buttons in toolbar
53
domToolbar.innerHTML = "";
54
// change buttons alignment
55
domToolbar.style.textAlign = "center";
56
57
// create button for live editing
58
var editButton = document.createElement("div");
59
var outerBox = document.createElement("div");
60
outerBox.className = "anychart-inline-block anychart-toolbar-button-outer-box";
61
var innerBox = document.createElement("div");
62
innerBox.innerHTML = "Enable Live Edit";
63
innerBox.className = "anychart-inline-block anychart-toolbar-button-inner-box";
64
outerBox.appendChild(innerBox);
65
editButton.appendChild(outerBox);
66
domToolbar.appendChild(editButton);
67
// create class lists for different states of edit button
68
var buttonClasses = ["anychart-inline-block", "anychart-toolbar-button"];
69
var hoverClasses = ["anychart-inline-block", "anychart-toolbar-button", "anychart-toolbar-button-hover"];
70
var clickClasses = ["anychart-inline-block", "anychart-toolbar-button", "anychart-toolbar-button-hover", "anychart-toolbar-button-active"];
71
// set default class names for tooltip button
72
editButton.className = buttonClasses.join(" ");
73
editButton.setAttribute("role", "button");
74
75
// manage button visual appearance
76
editButton.addEventListener("mouseover", function (){
77
editButton.className = hoverClasses.join(" ");
78
});
79
editButton.addEventListener("mouseout", function() {
80
editButton.className = buttonClasses.join(" ");
81
});
82
editButton.addEventListener("mousedown", function() {
83
editButton.className = clickClasses.join(" ");
84
});
85
editButton.addEventListener("mouseup", function() {
86
editButton.className = hoverClasses.join(" ");
87
});
88
89
// add action on button click
90
editButton.addEventListener("click", function(){
91
if (chart.editing()) innerBox.innerHTML = "Enable Live Edit";
92
else innerBox.innerHTML = "Disable Live Edit";
93
chart.editing(! chart.editing());
94
});
95
});
96
function getData() {
97
return [
98
{"id": "1", "name": "Phase 1 - Strategic Plan", "progressValue": "14%", "actualStart": 951350400000, "actualEnd": 954201600000},
99
{"id": "2", "name": "Self-Assessment", parent:"1", "progressValue": "25%", "actualStart": 951350400000, "actualEnd": 951955200000},
100
{"id": "3", "name": "Define business vision", parent:"2", "progressValue": "0%", "actualStart": 951408000000, "actualEnd": 951440400000, "connectTo": "4", "connectorType": "FinishStart"},
101
{"id": "4", "name": "Identify available skills, information and support", parent:"2", "progressValue": "0%", "actualStart": 951494400000, "actualEnd": 951526800000, "connectTo": "5", "connectorType": "FinishStart"},
102
{"id": "5", "name": "Decide whether to proceed", parent:"2", "progressValue": "0%", "actualStart": 951753600000, "actualEnd": 951786000000, "connectTo": "7", "connectorType": "FinishStart"},
103
{"id": "6", "name": "Define the Opportunity", parent:"1", "progressValue": "27%", "actualStart": 951782400000, "actualEnd": 952992000000},
104
{"id": "7", "name": "Research the market and competition", parent:"6", "progressValue": "0%", "actualStart": 951840000000, "actualEnd": 951872400000, "connectTo": "8", "connectorType": "FinishStart"},
105
{"id": "8", "name": "Interview owners of similar businesses", parent:"6", "progressValue": "60%", "actualStart": 951868800000, "actualEnd": 952473600000, "connectTo": "9", "connectorType": "FinishStart"},
106
{"id": "9", "name": "Identify needed resources", parent:"6", "progressValue": "0%", "actualStart": 952531200000, "actualEnd": 952650000000, "connectTo": "10", "connectorType": "FinishStart"},
107
{"id": "10", "name": "Identify operating cost elements", parent:"6", "progressValue": "0%", "actualStart": 952704000000, "actualEnd": 952995600000, "connectTo": "12", "connectorType": "FinishStart"}
108
];
109
}