Skip to content

Commit 172ef73

Browse files
add example combining networkD3 and vue element tree
1 parent 0f992e4 commit 172ef73

File tree

1 file changed

+51
-2
lines changed

1 file changed

+51
-2
lines changed

inst/examples/vue_component_examples.R

+51-2
Original file line numberDiff line numberDiff line change
@@ -201,8 +201,7 @@ tl_tree <- tagList(
201201
data = list(
202202
data = d3r::d3_nest(
203203
rhd,
204-
value_cols="x",
205-
204+
value_cols="x"
206205
),
207206
defaultProps = list(
208207
'children' = 'children',
@@ -218,6 +217,7 @@ function(data, checked, indeterminate){
218217
//data.checked = checked && !indeterminate;
219218
console.log(data, checked, indeterminate);
220219
this.checkedNodes = this.$refs.mytree.getCheckedNodes();
220+
this.$emit('tree-checked');
221221
}
222222
"
223223
)
@@ -235,3 +235,52 @@ browsable(
235235
)
236236
)
237237
)
238+
239+
240+
# add a d3 tree and make it respond to Vue tree
241+
d3t <- networkD3::diagonalNetwork(
242+
jsonlite::fromJSON(
243+
d3r::d3_nest(
244+
rhd,
245+
value_cols="x"
246+
),
247+
simplifyVector=FALSE,
248+
simplifyDataFrame=FALSE
249+
)
250+
)
251+
# use onRender to add event handling
252+
d3t <- htmlwidgets::onRender(
253+
d3t,
254+
"
255+
function(el, x) {
256+
var vue_tree = HTMLWidgets.find('.vue').instance;
257+
vue_tree.$on(
258+
'tree-checked',
259+
function() {
260+
var myvue = this;
261+
var checkedNodes = myvue.checkedNodes.map(function(d){return d.name});
262+
var nodes = d3.select(el).selectAll('g.node');
263+
debugger;
264+
nodes.each(function(d) {
265+
if(checkedNodes.indexOf(d.name) >= 0){
266+
d3.select(this).select('circle').style('fill', 'gray');
267+
} else {
268+
d3.select(this).select('circle').style('fill', 'rgb(255,255,255)');
269+
};
270+
})
271+
}
272+
)
273+
}
274+
"
275+
)
276+
browsable(
277+
attachDependencies(
278+
tagList(
279+
tags$div(tl_tree,style="width:20%; float:left; display:block;"),
280+
tags$div(d3t,style="width:70%; float:left; display:block;")
281+
),
282+
list(
283+
element
284+
)
285+
)
286+
)

0 commit comments

Comments
 (0)