dhtmlxGantt 甘特图学习记录

  最近用了highcharts的简单甘特图,发现不能做关联,于是改学了一下dhtmlxGantt,这个用起来还是很方便的,记录一下~

1、引用js

自己在网上找免费版下载,用体验版的话过期之后页面会一直提示错误,还是挺烦的=.=
文件位置:gantt/codebase/dhtmlxgantt.js

2、配置

dhtmlxGantt和其他的图表不一样的地方是要在初始化之前进行配置,
这里是我用到的部分,还有更多的大家自行探索

    gantt.clearAll(); //每次要清空一下,不然会有显示问题
    gantt.config.scale_unit = "month"; //按月显示
    gantt.config.date_scale = "%Y-%m-%d"; //设置时间刻度的格式(X轴) 多个尺度
    gantt.templates.tooltip_date_format = gantt.date.date_to_str("%Y-%m-%d %H:%M:%S")
    gantt.config.readonly = true; //只读,这样就不会显示添加那些按钮
    gantt.config.show_errors = false//不提示错误信息;我的父数据没有时间,不加这个配置页面会一直提示Invalid dates
    gantt.config.columns = [ //我需要在左边显示一列
        {
            name: 'text',
            label: '类型',
            width: 200,
        }
    ];
    gantt.plugins({
        tooltip: true, 
    });
	gantt.templates.tooltip_text = function (start, end, task) { //悬浮提示框数据格式,这里我是随便写的,格式大家根据需要自己配置就好
	    return '<b>阶段:</b> ' +
        task.taskSpecification +
        '<br/>' +
        '<b>开始时间:</b> ' +
        formatToDate(task.start_date) +
        '<br/>' +
        '<b>结束时间:</b> ' +
        formatToDate(task.end_date) +
        '<br/>' +
        '<b>持续时间:</b> ' +
        task.duration +
        '天'
    };
3、初始化及数据处理
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<div id="gantt_here" style="height: 100%"></div>
<script th:inline="javascript">
//...此处省略gantt配置,如上2
    gantt.init("gantt_here");
    var tasks = {
        data: [], //图表数据
        links: [] //图表中要连接的数据
    };
     $.ajax({
        url: url,//自己获取数据的接口url
        success: function (data) {
            var categories = []; //我的左边column数据
            //数据遍历处理
            $.each(data, function (i, v) {
                //我的数据格式大概是[{type:xxx, id: x, name:xx, startDate: ...}...] 
                //不同数据type是会重复的因为主体是图表数据即id开始的部分
                var typeId = 0;
                if (!categories.includes(v.type)) {
                    categories.push(v.type)
                    typeId = categories.indexOf(v.type) + 1;
                    tasks.data.push({
                        id: typeId, 
                        text: v.type,  
                        render: 'split' //一行要展示多个的父数据要增加此设置
                    })
                }
                var data = { //处理图表数据,通过parentId与父数据对应
                    id: v.id, //要防止和parentId相同,这里我没做处理,大家可以按自己需要的格式处理一下
                    text: '名称:'+v.name,
                    progress: v.rate/100,
                    start_date: new Date(v.startDate),
                    end_date: new Date(v.endDate),
                    parentId: typeId
                }
                // 右边需要关联的数据,我单独有个关联字段
                if (v.relationid > 0) {
                    var link = {  //关联的数据格式如下
                        id: v.relationid ,
                        source: v.relationid ,
                        target: v.id,
                        type: '0'
                    }
                    tasks.links.push(link)
                }
                tasks.data.push(data)
            })
            gantt.parse(tasks); //渲染数据
        }
    });
</script>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值