您可以自定义任务之间连接线(链接)的外观,从而实现所需的甘特图效果。为依赖关系链接设置不同的颜色,有助于用户更容易地区分它们。
设置链接自定义样式有两种方式:
首先,让我们了解一下链接 DOM 结构,以便明白各部分的定位、尺寸、功能及默认样式。
链接的 DOM 元素结构如下:
DOM 结构示例如下:
<div class="gantt_task_link" link_id="3">
<div class="gantt_line_wrapper">
<div class="gantt_link_line_left"></div>
</div>
<div class="gantt_line_wrapper">
<div class="gantt_link_line_left"></div>
</div>
<div class="gantt_link_corner gantt_link_corner_left_down"></div>
<div class="gantt_line_wrapper">
<div class="gantt_link_line_down"></div>
</div>
<div class="gantt_link_corner gantt_link_corner_down_right"></div>
<div class="gantt_line_wrapper">
<div class="gantt_link_line_right"></div>
</div>
<div class="gantt_link_arrow gantt_link_arrow_right"></div>
</div>
各部分说明如下:
.gantt_task_link{
--dhx-gantt-link-background:red;
}
您也可以通过 link_class 模板为该元素应用类。
关键路径链接通过在 gantt_task_link 元素上添加 gantt_critical_link 类来设置样式。
该元素的宽度由 link_wrapper_width 属性控制:
gantt.config.link_wrapper_width = 30;
目前仅使用 gantt_link_arrow_right 和 gantt_link_arrow_down。
箭头的尺寸由 link_arrow_size 属性定义:
gantt.config.link_arrow_size = 8;
您可以通过 link_line_width 属性调整该线条宽度:
gantt.config.link_line_width = 3;
gantt.config.link_radius = 2;
将 gantt.config.link_radius = 1 可移除圆角。
自定义依赖关系链接时,需使用 link_class 模板。例如,按任务优先级为链接着色,可以这样实现:
根据依赖类型为链接着色
gantt.templates.link_class = function(link){
var types = gantt.config.links;
switch (link.type){
case types.finish_to_start:
return "finish_to_start";
break;
case types.start_to_start:
return "start_to_start";
break;
case types.finish_to_finish:
return "finish_to_finish";
break;
case types.start_to_finish:
return "start_to_finish";
break;
}
};
如需为依赖关系链接的其他部分设置样式,请参考 依赖关系链接的模板 文章中的模板。
同样的方法也适用于任务。详细内容请参见此处。
您也可以通过在数据对象中添加属性,为依赖关系链接指定自定义颜色:
这是一个特殊属性。Gantt 会检测链接是否有该属性,并应用其值作为链接颜色。若未设置,则使用默认颜色。
在数据对象中设置链接颜色
var tasks = {
data:[
{id:1, text:"Project #1", start_date:"01-04-2013", duration:18},
{id:2, text:"Task #1", start_date:"02-04-2013", duration:8, parent:1},
{id:3, text:"Task #2", start_date:"11-04-2013", duration:8, parent:1}
],
links:[
{id:1, source:1, target:2, type:"1", color:"red"}, {id:2, source:2, target:3, type:"0", color:"blue"}, {id:3, source:3, target:4, type:"0", color:"blue"}, {id:4, source:2, target:5, type:"2", color:"green"} ]
};
gantt.init("gantt_here");
gantt.parse(tasks);
gantt.getLink(4).color = "green";
Related sample: Link colors from the "color" property
通过 color 属性自定义颜色时,会添加内联样式,从而覆盖其他样式。这意味着关键路径不会高亮显示,任何自定义的链接颜色样式也不会生效。
如需让链接显示为关键路径,可以使用如下 CSS:
.gantt_critical_link {
--dhx-gantt-link-background: #e63030 !important;
}
如果链接对象设置了任何属性,则该链接会额外获得 "gantt_link_inline_color" 类。可利用该类覆盖其他样式:
.gantt_link_inline_color {
opacity:0.4
}
color 属性支持任何有效的 CSS 颜色格式,例如:
link.color = "#FF0000";
link.color = "red";
link.color = "rgb(255,0,0)";
同样的方法也适用于任务。更多内容请参见此处。
Back to top