Infovis超树节点的需求
infovis hypertree nodes on demand
我对使用Javascript Infovis Toolkit非常陌生,但是我想做的是创建一个超级树,其中有五个初始节点连接到中间。然后,当用户单击每个子节点时,将出现连接到子节点的新节点(其中6个)。但我不知道该怎么做。下面是我的树代码:
//now puts in tree and detailer
var infovis = document.getElementById('infovis');
var w = infovis.offsetWidth, h = infovis.offsetHeight;
var ht = new $jit.Hypertree({
//id of the visualization container
injectInto: 'infovis',
//By setting overridable=true,
//Node and Edge global properties can be
//overriden for each node/edge.
Node: {
overridable: true,
'transform': true,
type: 'circle',
},
Edge: {
overridable: true,
lineWidth: 5,
color: "lightgrey"
},
//calculate nodes offset
offset: 0.2,
//Change the animation transition type
transition: $jit.Trans.Back.easeOut,
//animation duration (in milliseconds)
duration: 1000,
//Attach event handlers on label creation.
onCreateLabel: function (domElement, node) {
domElement.innerHTML = node.name;
domElement.style.cursor = "pointer";
domElement.onclick = function () {
ht.onClick(node.id, {
hideLabels: false,
onComplete: function () {
ht.controller.onComplete();
}
});
};
},
//This method is called when moving/placing a label.
//You can add some positioning offsets to the labels here.
onPlaceLabel: function (domElement, node) {
var width = domElement.offsetWidth;
var intX = parseInt(domElement.style.left);
intX -= width / 2;
domElement.style.left = intX + 'px';
},
onBeforeCompute: function (node) {
//fades info out
$("#inner-details").fadeOut(500);
},
onComplete: function () {
//Make the relations list shown in the right column.
var node = ht.graph.getClosestNodeToOrigin("current");
var html = "<h2>" + node.name + "</h2>";
html += "<p>" + node.data.Explanation + "</p>"
$jit.id('inner-details').innerHTML = html;
//fades info out
$("#inner-details").fadeIn(500);
}
});
//load JSON graph.
ht.loadJSON(json, 2);
//compute positions and plot
ht.refresh();
Get data of first level only when user click on node then ajax call
get that node childrens data.
var lastClickedNode = '';
onCreateLabel: function(domElement, node) {
domElement.innerHTML = node.name;
$jit.util.addEvent(domElement, 'click', function() {
if (lastClickedNode == node) {
return;
}
lastClickedNode = node;
if (node.children.length == 0 && node.hasFurtherData) {
$.ajax({
url: "apiurl/" + node.id,
method: "GET",
crossDomain: true,
dataType: "json",
contentType: 'application/json',
beforeSend: function(xhr) {
xhr.setRequestHeader('Access-Control-Allow-origin', '*');
},
header: {
"Content-Type": "application/json",
"Accept": "text/javascript; charset=utf-8"
},
success: function(data) {
ht.op.sum(data, {
type: 'replot',
hideLabels: true,
transition: $jit.Trans.Back.easeInOut
});
ht.refresh();
ht.onClick(node.id);
}
});
} else {
ht.onClick(node.id);
}
});
}
相关文章:
- 在不添加树节点的情况下从网格拖放到树
- 在带有 标记的树节点上以编程方式触发单击事件
- d3树节点位置
- 用于构建树节点层次结构的javascript库
- 树递归:如何获取所选树节点的父根
- 如何将 css 类添加到 Ext4 中的树节点
- 分页动态加载的 Webix 树节点
- D3.js具有相同父级的树节点
- 当我在 Dojo 中左键单击树行(树节点)时,如何从对象存储中获取 ID
- Dojo:使用 CSS 选择器识别 dijit 树节点
- 如何获取选择 JS 树节点时的祖先
- appendChild树节点不展开
- 从IE中的ASP.net树节点调用Jquery
- 在Ext.tree.TreePanel中,当我们加载树时,没有任何事件可以检查是否所有树节点都已完全加载
- 基于当前导航url的树节点选择
- 树节点以支持浏览器兼容性
- 是否有一种方法可以自动打开D3折叠树节点逐个节点(对于有子节点的节点)
- 我如何使用javascript添加树节点到树视图
- Infovis超树节点的需求
- 点击D3树节点