Infovis를 사용하여 SpaceTree를 표시하고 있습니다. 데이터를 조작 한 후에는 Canvas를 지우고 새 데이터 세트로 트리를 다시 초기화 할 수있는 기능이 필요합니다. 어떻게해야합니까?Infovis : 캔버스를 지우는 방법?
내 현재 코드는 다음이다 (이것은 커피 스크립트의) : 사전에
# Create a new ST instance
st = new $jit.ST
# id of viz container element
injectInto: 'infovis',
# set duration for the animation
duration: 800,
orientation: "top",
# set animation transition type
transition: $jit.Trans.Quart.easeInOut,
# set distance between node and its children
levelDistance: 25,
# enable panning
Navigation: {
enable:true,
panning:true
},
# set node and edge styles
# set overridable=true for styling individual
# nodes or edges
Node: {
align: "left",
autoHeight: true,
autoWidth: true,
type: 'rectangle',
color: '#000',
overridable: true
},
Edge: {
type: 'bezier',
overridable: true
},
onBeforeCompute: (node) =>
console.log("loading " + node.name)
onAfterCompute: =>
console.log("done")
# This method is called on DOM label creation.
# Use this method to add event handlers and styles to your node.
onCreateLabel: (label, node) =>
label.id = node.id;
label.innerHTML = node.name;
label.onclick =() ->
st.onClick(node.id);
# set label styles
style = label.style;
# style.width = 60 + 'px';
# style.height = 17 + 'px';
style.cursor = 'pointer';
style.color = '#fff';
style.fontSize = '1em';
style.textAlign= 'center';
style.margin = '0px';
# This method is called right before plotting a node.
# It's useful for changing an individual node style properties before plotting it.
# The data properties prefixed with a dollar sign will override the global node style properties.
onBeforePlotNode: (node) =>
# add some color to the nodes in the path between the
# root node and the selected node.
if node.selected
node.data.$color = "#007";
else
delete node.data.$color;
# if the node belongs to the last plotted level
if !node.anySubnode("exist")
# count children number
count = 0;
node.eachSubnode (n) =>
count++;
# assign a node color based on
# how many children it has
node.data.$color = ['#aaa', '#baa', '#caa', '#daa', '#eaa', '#faa'][count];
# This method is called right before plotting an edge.
# It's useful for changing an individual edge style properties before plotting it.
# Edge data properties prefixed with a dollar sign will override the Edge global style properties.
onBeforePlotLine: (adj) =>
if adj.nodeFrom.selected && adj.nodeTo.selected
adj.data.$color = "#eed";
adj.data.$lineWidth = 3;
else
delete adj.data.$color;
delete adj.data.$lineWidth;
# load json data
st.loadJSON(json[0]);
# compute node positions and layout
st.compute();
# optional: make a translation of the tree
st.geom.translate(new $jit.Complex(-200, 0), "current");
# emulate a click on the root node.
st.onClick (st.root)
감사합니다!
이것은 내 경우에만 노드를 삭제합니다. 노드는 삭제하지 않습니다. –