• 使用OrgChart插件生成家谱组织结构图


    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.效果图:

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

    1

  • 相关阅读:
    C语言printf语法
    Android动画
    【转】Android内存(内存溢出 内存不足 内存低 .)优化详解
    Android dialog在有的手机上宽度不能充满屏幕的问题
    ios单例模式(Singleton)
    给ImageButton设置按下的效果
    Dynamics CRM Entity Relationship Many to Many (N:N)
    Python实现Mysql数据库连接池
    python获取指定时间差的时间
    Visual studio debug—Process with an Id of 5616 is not running的解决方法
  • 原文地址:https://www.cnblogs.com/dcncy/p/9199716.html
Copyright © 2020-2023  润新知