1.orgchart插件:

github地址:https://github.com/dabeng/OrgChart

2.前端代码:

//1.加载树形数据:ajax请求获取json格式的数据(flag参数可以无视,我自己的业务逻辑需要)
function setTreeInfo(flag){
$('#chart-container').empty();
$.ajax({
url: "clan/getAllClanInfo.action",
type: "POST",
dataType: "json",
success:function (res) {
     //开始加载家谱图
setTreeView(res.jiclan[0], flag);
console.log("数据加载成功!");
},
error: function(){
console.log("加载数据异常!");
}
});
} //2.加载树形结构
function setTreeView(dataJson, flag){
//orgchart的初始化参数可以去github官方看文档,比较简单
jiclan = $('#chart-container').orgchart({
'data' : dataJson,
'pan': false,
'zoom': false,
'zoominLimit': 3,
'zoomoutLimit': 0.5,
'toggleSiblingsResp': true,
'draggable': false,
'direction' : 'l2r',
'exportButton': true,
'exportFilename': 'XX家谱',
'exportFileextension': 'png',
'nodeTemplate': setNodeTemplate
}); //当家谱加载完成后执行,这个函数与家谱图加载已经无关了,执行此函数之前已经完成了家谱图的生成;
// orgchartCompleted(flag);
} //3.设定树形模板。这个是重点,对于每个节点的生成样式与内容都在这里进行控制
function setNodeTemplate(data){
var str = "";
//如果为男性
if(data.sex == "0"){
//是否已经结婚
if(data.wifeName != null && data.wifeName != ""){
str += '<div class="title clan-man">'+data.name+'</div>' ;
str += '<div class="content clan-wife">'+data.wifeName+'</div>';
//下面这一行是为了加载每个节点上面的三个按钮,可以进行查询,修改,增加等操作
str += "<div class='opBtns display-none'>" +
"<i class='clan-btn clan-dtalBtn'></i>" +
"<i class='clan-btn clan-editBtn'></i>" +
"<i class='clan-btn clan-addChildBtn'></i>" +
"</div>";
}else{
str += '<div class="title clan-man">'+data.name+'</div>' ;
str += '<div class="content clan-single"></div>';
str += "<div class='opBtns display-none'>" +
"<i class='clan-btn clan-dtalBtn'></i>" +
"<i class='clan-btn clan-editBtn'></i>" +
"</div>";
}
}else{
str += '<div class="title clan-woman">'+data.name+'</div>' ;
str += '<div class="content clan-single"></div>';
str += "<div class='opBtns display-none'>" +
"<i class='clan-btn clan-dtalBtn'></i>" +
"<i class='clan-btn clan-editBtn'></i>" +
"</div>";
}
return str;
}

3.效果图:

下图只是家谱图中的一部分,我这个家谱一次加载进一百三十多个节点,没有性能问题。

使用OrgChart插件生成家谱组织结构图的更多相关文章

  1. 由cobertura插件生成测试覆盖率报告

    由于cobertura已经集成到maven中,所以可以很方便的直接调用此插件生成报告: 直接运行命令:mvn cobertura:cobertura 就可以直接生成测试报告了. 下面是截图:

  2. chart.js插件生成折线图时数据普遍较大时Y轴数据不从0开始的解决办法[bubuko.com]

    chart.js插件生成折线图时数据普遍较大时Y轴数据不从0开始的解决办法,原文:http://bubuko.com/infodetail-328671.html 默认情况下如下图 Y轴并不是从0开始 ...

  3. rpc框架: thrift/avro/protobuf 之maven插件生成java类

    thrift.avro.probobuf 这几个rpc框架的基本思想都差不多,先定义IDL文件,然后由各自的编译器(或maven插件)生成目标语言的源代码,但是,根据idl生成源代码这件事,如果每次都 ...

  4. Jboot使用appassembler-maven-plugin插件生成启动脚本

    appassembler-maven-plugin介绍: 使用appassembler-maven-plugin插件可自动生成跨平台的启动脚本,可省去手工写脚本的麻烦,而且还可以生成jsw的后台运行程 ...

  5. hadoop eclipse插件生成

    hadoop eclipse插件生成 做了一年的hadoop开发.还没有自动生成过eclipse插件,一直都是在网上下载别人的用,今天有时间,就把这段遗憾补回来,自己生成一下,废话不说,開始了. 本文 ...

  6. Windows环境下教你用Eclipse ADT 插件生成.h/.so文件,Java下调用JNI,轻松学习JNI

    准备工作:Eclipse ADT IDE 开发工具,NDK .Java 环境,博主的配置是:Windows x86 , ADT Build: v22.3.0-887826 , JAVA 1.7, ND ...

  7. Mybatis框架(9)---Mybatis自定义插件生成雪花ID做为表主键项目

    Mybatis自定义插件生成雪花ID做为主键项目 先附上项目项目GitHub地址 spring-boot-mybatis-interceptor 有关Mybatis雪花ID主键插件前面写了两篇博客作为 ...

  8. jQuery.qrcode二维码插件生成网页二维码

    如果是一个固定的二维码,我们只需要在网上找个地方生成图片,然后放上图片就可以了.但如果是地址不固定需要根据页面来生成的话.就有两种做法,一个是后端根据页面做一个动态的二维码.一种是前端使用插件生成. ...

  9. SpringBoot--Easycode、mybatisX插件生成entity,controller,service,dao,mapper IDEA版 项目提效神器

    一.介绍 Easycode是idea的一个插件,可以直接对数据的表生成entity,controller,service,dao,mapper,无需任何编码,简单而强大. MybatisX 是一款基于 ...

随机推荐

  1. Python入门-内置函数二

    看到标题你也能猜到今天要说大概内容是什么了,没错,昨天没有说完的部分再给大家说说(有一些重合的部分),内置函数的内容比较多,并且工作中经常用到的却不太多,很多都是不太常用的,所以我就着重说一些比较常用 ...

  2. 微信小程序中使用wxParse展示HTML内容

    wxParse的GitHub地址:https://github.com/icindy/wxParse 一.数据内容: 请求地址:https://m.quanchepin.com/index.php?a ...

  3. localstorage本地存储的简单使用

    我们在做页面时会用到本地存储的时候,今天说说localStorage本地存储. 1.localStorage.name="老王";      //第一种设置存储本地数据的方法loc ...

  4. EMSAscript

    1.javaScript 中const.var.let区别 const 定义的变量不可修改 而且必须初始化 =>解决闭包变量污染问题 var 定义的变量可以修改 如果不初始化则默认值为undef ...

  5. 讲解JavaScript两个圆括号、自调用和闭包函数

    一.JavaSript圆括号的使用 先来看一组通过函数声明来定义的函数: 先附代码: 运行结果如下: 这里我们可以看出: Ø  若没有加圆括号,则返回的是这个函数的内容 Ø  若加上圆括号,则返回的是 ...

  6. WPF 蒙罩层 LoadingPage

    WPF 蒙罩层 LoadingPage 前言 无论是在PC客户端,移动端,网站,在遇到长时间处理的时候都会需要用到蒙罩层,让用户有更好的体现.今天上网逛了一下各位前辈网友的蒙罩层的实现方式,觉得有很多 ...

  7. EditText的setInputType方法里面应该填什么?

    转自CSDN:http://blog.csdn.net/u014158743/article/details/52488010 | 以密码类型(password)为例 android:inputTyp ...

  8. SSH框架里的iHiberBaseDAO类与iHiberDAOImpl写法

    一.iHiberBaseDAO类 package basic; import java.util.*; /** * 基于hibernate技术实现的BaseDAO基类 * @author ZHANGY ...

  9. 移动端fixed的元素抖动的问题

    工作中发现,给一个元素添加fixed属性,让它固定在窗口某个位置,直接加fposition:fixed属性就能实现这个效果: 在安卓手机上的效果都比较好,但是ios系统的个别浏览器兼容性就不好,如QQ ...

  10. ASP.NET 页面基本优化.

    一.禁用Browser Link(目前主要用来是刷新vs ide 浏览界面),直接干掉. <!-- Visual Studio Browser Link --> <script ty ...