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 tree = anychart.data.tree([
4
{"name": "Node 1", "id": "1", "value": "18000"},
5
{"name": "Node 2", "id": "2", "value": "15000"},
6
{"name": "Node 3", "id": "3", "value": "10000"},
7
{"name": "Node 4", "id": "4", "value": "12000"},
8
{"name": "Node 5", "id": "5", "value": "9000"}
9
], anychart.enums.TreeFillingMethod.AS_TABLE);
10
11
var stage = anychart.graphics.create("container");
12
13
// create Data Grid
14
treeDataGrid = anychart.standalones.dataGrid();
15
16
// set Data Tree
17
treeDataGrid.data(tree).headerHeight(20);
18
19
// create button for Parent node
20
treeDataGrid.listen("signal", treeDataGrid.draw, false, treeDataGrid);
21
22
// set style for second column
23
treeDataGrid.column(1).cellTextSettingsOverrider(labelTextSettingsOverrider);
24
25
var valueColumn = treeDataGrid.column(2);
26
valueColumn.title().text("Value");
27
valueColumn.width(100);
28
valueColumn.format(function(item) {
29
return item.get("value");
30
});
31
// create new button
32
var triggerButton = document.createElement("div");
33
34
// set button style
35
triggerButton.style.top = "5px";
36
triggerButton.style.right = "5px";
37
triggerButton.style.width = "auto";
38
triggerButton.style.height = "auto";
39
triggerButton.style.backgroundColor = "#444444";
40
triggerButton.style.color = "white";
41
triggerButton.style.position = "absolute";
42
triggerButton.style.zIndex = 2;
43
triggerButton.style.transition = "0.5s";
44
triggerButton.style.textAlign = "center";
45
triggerButton.style.border = "3px solid #444444";
46
triggerButton.style.borderRadius = "7px 7px 7px 7px";
47
triggerButton.style.fontSize = "18px";
48
triggerButton.style.cursor = "pointer";
49
triggerButton.style.MozUserSelect= "none";
50
triggerButton.style.KhtmlUserSelect= "none";
51
triggerButton.style.WebkitUserSelect= "none";
52
triggerButton.style.userSelect= "none";
53
triggerButton.innerHTML = "Update";
54
triggerButton.onclick = function() {
55
addValue();
56
};
57
58
// append button to container
59
container.appendChild(triggerButton);
60
61
// draw chart
62
treeDataGrid.container(stage).top(triggerButton.offsetHeight + 7).width("100%").draw();
63
64
// set container height
65
treeDataGrid.container().height(fullChildrenHeight()+treeDataGrid.top()+treeDataGrid.headerHeight()+1);
66
67
var title = anychart.standalones.title();
68
title.parentBounds(0, 0, "100%", 30)
69
.text("Click on Button to Add 1000 to Third Node")
70
.container(stage)
71
.draw();
72
73
function addValue(){
74
tree.getChildAt(2).set("value", (parseInt(tree.getChildAt(2).get("value")) + 1000 )*1+"");
75
}
76
77
// get height of all items in the tree
78
function fullChildrenHeight () {
79
var height = 0;
80
var traverser = tree.getTraverser();
81
traverser.reset();
82
while(traverser.advance()){
83
84
// get an item
85
var currentItem = traverser.current();
86
87
// get height of the item
88
var currentHeight = currentItem.get(anychart.enums.GanttDataFields.ROW_HEIGHT);
89
90
// if item height is undefined
91
if (currentHeight !== void 0){
92
height += (currentHeight + 1);
93
} else {
94
// if height of current item is undefined, default height is 20px + 1px row space
95
height +=21;
96
}
97
}
98
return height;
99
}
100
});
101
102
// style setter
103
function labelTextSettingsOverrider(label, dataItem) {
104
if (!dataItem.getParent()) {
105
label.fontColor("#0055aa").fontWeight("bold").fontSize(12).fontStyle("italic");
106
} else {
107
if (dataItem.numChildren()) {
108
label.fontColor("#559955").fontWeight("bold").fontStyle("italic");
109
}
110
}
111
}