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
var stage = anychart.graphics.create("container");
4
5
// Data Tree
6
var tree = anychart.data.tree([
7
{"name": "Node 1", "rowHeight": 20},
8
{"name": "Parent Node", "rowHeight": 20, children:[
9
{"name": "Child Node 1", "rowHeight": 20},
10
{"name": "Child Node 2", "rowHeight": 20},
11
]},
12
{"name": "Node 2", "rowHeight": 20}
13
]);
14
15
// create Data Grid
16
dataGrid = anychart.standalones.dataGrid();
17
18
// set Data Tree
19
dataGrid.data(tree).headerHeight(20);
20
21
// create button for Parent node
22
dataGrid.listen("signal", dataGrid.draw, false, dataGrid);
23
24
// set style for second column
25
dataGrid.column(1).cellTextSettingsOverrider(labelTextSettingsOverrider);
26
27
// draw chart
28
dataGrid.container(stage).draw();
29
30
dataGrid.container().height(fullChildrenHeight()+dataGrid.top()+dataGrid.headerHeight()+1);
31
32
// get height of all children of the tree
33
function fullChildrenHeight() {
34
var height = 0;
35
var traverser = tree.getTraverser();
36
traverser.reset();
37
while(traverser.advance()){
38
39
// get an item
40
var currentItem = traverser.current();
41
42
// get height of the item
43
var currentHeight = currentItem.get(anychart.enums.GanttDataFields.ROW_HEIGHT);
44
45
// if item height is undefined
46
if (currentHeight !== void 0){
47
height += (currentHeight + 1);
48
} else {
49
// if height of current item is undefined, default height is 20px + 1px row space
50
height +=21;
51
}
52
}
53
return height;
54
}
55
});
56
57
// style setter
58
function labelTextSettingsOverrider(label, dataItem) {
59
if (!dataItem.getParent()) {
60
label.fontColor("#0055aa").fontWeight("bold").fontSize(12).fontStyle("italic");
61
} else {
62
if (dataItem.numChildren()) {
63
label.fontColor("#559955").fontWeight("bold").fontStyle("italic");
64
}
65
}
66
}