/* ztree的右键功能 */
div#rMenu {
position:absolute;
visibility:hidden;
top:0;
background-color: #555;
text-align: left;
padding: 2px;
}
div#rMenu a{
cursor: pointer;
list-style: none outside none;
}
<div id="rMenu">
<a href="#" class="list-group-item" id="expand">生成</a>
<!-- <a href="#" class="list-group-item" οnclick="expandSon();">编辑表结构</a> -->
</div>
//获得数的所有底层节点
function getZtreeNodes(nodes,flag){
var result=true;
while(result){
$(nodes).each(function (i, node) {
var childrens=node.children;
if(childrens==null||childrens==undefined){
result=false;
return;
}
$(childrens).each(function (j, children) {
if(flag!=null&&flag==1){
children={
"tableEnName":children.name,
'tableId':children.id,
'tableZhName':children.tableCnName,
'updateStatus':children.updateStatus,
'orgCode':children.orgCode};
}
nodes.push(children);
});
nodes.shift();
})
}
}
//生成树的层级结构,此为生深度生成,还有广度生成
function genZtree(nodess,row,clomns,cengJi1,cengJi2){
var nodes=nodess;
while(true){
if(nodes==undefined||nodes==null){
nodes=[];
}
var clomn=clomns[cengJi1];
var clomnName=row[clomn];
var children;
var nodeName;
var datastatus=0;
var node;
if(nodes!=undefined&&nodes.length>0){
for(var i=0;i<nodes.length;i++){
node=nodes[i];
nodeName=node.name;
children=node.children;
if(nodeName!=undefined&&nodeName!=null&&nodeName!=''&&nodeName==clomnName){
datastatus=1;
break;
}
}
}
if(datastatus==0){
node={};
node.name=clomnName;
children=[];
node.children=children;
nodes.push(node);
}
if(cengJi1<cengJi2){
cengJi1++;
nodes=children;
//genZtree(children,row,clomns,cengJi1+1,cengJi2);
}else{
var cashDataBase = {
'icon':'../images/rmanage/file.png',
'name':row.tableEnName,
'id':row.tableId,
'tableCnName':row.tableZhName,
'updateStatus':row.updateStatus,
'orgCode':row.orgCode};
children.push(cashDataBase);
node.children=children;
return;
}
}
};
var ztreeNodes;
function initTree1(ztreeNodes){
var setting = {
view: {
selectedMulti: false ,//是否允许多选
addDiyDom: addDiyDom
},
data: {
simpleData: {
enable: true
}
},
callback:{
onClick : zTreeOnClick,
//onRightClick: onRightClick,
},
};
$.fn.zTree.init($("#ztree2"), setting, ztreeNodes);
};
function initTree(){
$.ajax({
type: "GET",
url: jQuery.WEBROOT +'/tableManager/list?',
// async:false,
dataType:"json",
success:function (data){
var rows = data.rows;
var clomns=['orgCode','businessType'];
ztreeNodes=[];
for(var j = 0;j< rows.length;j++){
genZtree(ztreeNodes,rows[j],clomns,0,clomns.length-1);
}
initTree1(ztreeNodes);
}
});
}
function onRightClick(event, treeId, treeNode){
if (!treeNode && event.target.tagName.toLowerCase() != "button" && $(event.target).parents("a").length == 0) {
showRMenu("root", event.clientX, event.clientY);
} else if (treeNode && !treeNode.noR) {
showRMenu("node", event.clientX, event.clientY);
}
}
var rMenu=$("#rMenu");
//显示右键菜单
function showRMenu(type, x, y) {
$("#rMenu ul").show();
rMenu.css({"top":y+"px", "left":x+"px", "visibility":"visible"}); //设置右键菜单的位置、可见
$("body").bind("mousedown", onBodyMouseDown);
}
//隐藏右键菜单
function hideRMenu() {
if (rMenu) rMenu.css({"visibility": "hidden"}); //设置右键菜单不可见
$("body").unbind("mousedown", onBodyMouseDown);
}
//鼠标按下事件
function onBodyMouseDown(event){
if (!(event.target.id == "rMenu" || $(event.target).parents("#rMenu").length>0)) {
rMenu.css({"visibility" : "hidden"});
}
}
function zTreeOnClick(event, treeId, treeNode){
tableId=treeNode.id;
updateStatus=treeNode.updateStatus;
tableCnName=treeNode.treeNode;
tableEnName=treeNode.name;
$("#tableEnName").html(treeNode.name);
$("#tableCnName").html(treeNode.tableCnName);
$('#tableInfo').bsGrid('refresh',
{url:jQuery.WEBROOT+'/api/tempTableColumn/list?tempTableColumn.tableId='+tableId});
}
function AutoMatch(txtObj) {
initTree1(ztreeNodes);
if (txtObj.value.length > 0) {
var zTree = $.fn.zTree.getZTreeObj("ztree2");
var nodeList = zTree.getNodesByParamFuzzy("name", txtObj.value);
//将找到的nodelist节点更新至Ztree内
initTree1(nodeList);
//$.fn.zTree.init($("#ztree2"), setting, nodeList);
}
}
//显示树
function showMenu() {
var cityObj = $("#citySel");
var cityOffset = $("#citySel").offset();
$("#menuContent").slideDown("fast");
}
//隐藏树
function hideMenu() {
$("#menuContent").fadeOut("fast");
}
function onClick(e, treeId, treeNode) {
var zTree = $.fn.zTree.getZTreeObj("ztree2");
//获得选中的节点
var nodes = zTree.getSelectedNodes(),
v = "";
//根据id排序
nodes.sort(function compare(a, b) { return a.id - b.id; });
for (var i = 0, l = nodes.length; i < l; i++) {
if(i!==0){
v +=","+nodes[i].name ;
}
v +=nodes[i].name;
}
//将选中节点的名称显示在文本框内
var cityObj = $("#citySel");
cityObj.attr("value", v);
//隐藏zTree
// hideMenu();
return false;
}
//计算树节点超长隐藏
function addDiyDom(treeId, treeNode) {
var spaceWidth = 5;
var switchObj = $("#" + treeNode.tId + "_switch"),
icoObj = $("#" + treeNode.tId + "_ico");
switchObj.remove();
icoObj.parent().before(switchObj);
var spantxt = $("#" + treeNode.tId + "_span").html();
var ztreewidth=$("#ztree2").width();
if (spantxt.length > ztreewidth/12) {
spantxt = spantxt.substring(0,ztreewidth/12) + "...";
$("#" + treeNode.tId + "_span").html(spantxt);
}
}