时间线区域中的自定义元素
信息
此功能仅在 PRO 版中 可用
dhtmlxGantt 提供了 内置功能,默认情况下允许呈现基线、截止日期和任务约束等额外元素。若需要扩展或修改默认特性,可以按下文所述手动将自定义元素添加到时间线中。
通常通过创建一个可显示的图层并将自定义元素放置在该处来显示附加元素 (使用绝对定位将自定义元素放到与相关任务相邻的位置)。
要向时间线区域再添加一层,请使用 addTaskLayer() 方法。作为参数,该方法接收一个函数,该函数:
- 以一个任务对象作为参数;
- 返回一个将要显示的 DOM 元素,或返回 false(该任务的元素应隐藏)。
gantt.addTaskLayer((task) => {
const layerElement = document.createElement('div');
// 你的代码
return layerElement;
});
相关示例: Displaying deadlines
注:
- 调用该方法后,dhtmlxGantt 会向时间线区域添加一个容器。
- 当 dhtmlxGantt 渲染数据时,会为每个任务调用
addTaskLayer(),并将返回的 DOM 元素追加到该容器中。 - 放置元素时,可以使用常规的绝对定位。
- 当 Gantt 的任务被更新时,所有图层(包括自定义图层)也会更新(会对更新的任务再次调用该函数,并用相关的 DOM 元素替换)。
- dhtmlxGantt 提供了用于计算任务位置和大小的方法 -
getTaskPosition()。你也可以用它来计算自定义元素的位置和大小。
如需了解如何提高呈现自定义元素的性能,请阅读 addTaskLayer() 文章。
注释
如果你需要在时间线的所有单元格中显示自定义内容,请直接在单元格中放置 HTML,使用 timeline_cell_content 模板。此方法实现起来更简单、性能也更高。