dhtmlxGantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求,是最完善的甘特图图表库。它允许你创建动态甘特图,并以一个方便的图形化方式可视化项目进度。有了dhtmlxGantt,你可以显示活动之间的依赖关系,显示具有完成百分比阴影的当前任务状态以及组织活动到树结构。
扩展/折叠任务分支
要打开任务分支,请使用open方法:
var data = {
tasks:[
{id:"p_1", text:"Project #1", start_date:"01-04-2020", duration:18},
{id:"t_1", text:"Task #1", start_date:"02-04-2020", duration:8,
parent:"p_1"}
]};
gantt.open("p_1");
要关闭任务分支,请使用close方法:
var data = {
tasks:[
{id:"p_1", text:"Project #1", start_date:"01-04-2020", duration:18},
{id:"t_1", text:"Task #1", start_date:"02-04-2020", duration:8,
parent:"p_1"}
]};
gantt.close("p_1");
扩展/折叠多个分支
如果需要打开/关闭多个任务分支,最快的方法是以编程方式将所需的布尔值(true-打开,false-关闭)设置为所需任务的。$ open属性,然后重新绘制甘特图。
扩展所有任务:
gantt.eachTask(function(task){
task.$open = true;
});
gantt.render();
折叠所有任务:
gantt.eachTask(function(task){
task.$open = false;
});
gantt.render();
获取任务的子代
要获取分支任务的子代,请使用getChildren方法:
var data = {
tasks:[
{id:"p_1", text:"Project #1", start_date:"01-04-2020", duration:18},
{id:"t_1", text:"Task #1", start_date:"02-04-2020", duration:8,
parent:"p_1"}
]};
gantt.getChildren("p_1");//->["t_1"]
要查看更多与树相关的方法,请阅读“任务父/子”文章。
更改树的图标
父项
要为父项设置图标,请使用grid_folder模板:
gantt.templates.grid_folder = function(item) {
return "<div class='gantt_tree_icon gantt_folder_" +
(item.$open ? "open" : "closed") + "'></div>";
};
子项
要设置子项的图标,请使用grid_file模板:
gantt.templates.grid_file = function(item) {
return "<div class='gantt_tree_icon gantt_file'></div>";
};
开/关标志
要设置打开/关闭标志的图标,请使用grid_open模板:
gantt.templates.grid_open = function(item) {
return "<div class='gantt_tree_icon gantt_" +
(item.$open ? "close" : "open") + "'></div>";
};
设置分支中孩子的缩进
要在分支中设置子任务的缩进,请使用grid_indent模板(更改width CSS属性):
gantt.templates.grid_indent=function(task){
return "<div style='width:20px; float:left; height:100%'></div>"
};
将复选框添加到树节点
要将复选框(或任何其他HTML内容)添加到树节点,请使用grid_blank模板:
gantt.templates.grid_blank=function(task){
return "<input id='ch1' type='checkbox' onClick='someFunc()'></input>"
};
设置树节点模板
要为树节点设置模板,请使用columns属性中的template属性。模板函数的返回值将作为内部HTML添加。因此,您可以在属性中使用任何HTML结构。
请注意,如果你不使用dhtmlxConnector来与服务器端的整合,你必须消毒,以防止可能的XSS攻击你加载到甘特图中的数据(dhtmlxConnector自动完成它)
gantt.config.columns=[
{name:"text", label:"Task name", tree:true, width:230, template:myFunc },
{name:"start_date", label:"Start time", align: "center" },
{name:"duration", label:"Duration", align: "center" }
];
gantt.init("gantt_here");
function myFunc(task){
if(task.priority ==1)
return "<div class='important'>"+task.text+" ("+task.users+") </div>";
return task.text+" ("+task.users+")";
};