Timeline 视图
信息
此视图仅包含在 Scheduler PRO 版本中。
Timeline 视图以水平方式显示事件,将不同的时间线并排从左到右排列。

初始化
要将 Timeline 视图添加到调度器,请按照以下步骤操作:
- 在页面上启用 Timeline 扩展:
- Timeline - 用于 'Bar' 和 'Cell' 模式
- Timeline, Treetimeline - 用于 'Tree' 模式
- Timeline, Daytimeline - 用于 'Days' 模式
scheduler.plugins({
timeline: true,
treetimeline: true,
daytimeline: true
});
- 在调度器的标记中添加视图的标签:
<div id="scheduler_here" class="dhx_cal_container" ...>
<div class="dhx_cal_navline">
...
<div class="dhx_cal_tab" name="timeline_tab"></div>
</div>
...
</div>
- 为标签设置显示文本:
//'timeline_tab' 指的是我们 div 的 name
scheduler.locale.labels.timeline_tab ="Timeline";
- 调用 createTimelineView 方法:
scheduler.createTimelineView({
name:"timeline",
x_unit:"minute", // X 轴的度量单位
x_date:"%H:%i", // X 轴显示的日期格式
x_step:30, // X 轴每步的单位数
x_size:24, // X 轴上显示的 'x_step' 总数
x_start:16, // X 轴的偏移量,以 'x_unit' 为单位
x_length:48, // 每次滚动的 'x_step' 数量
y_unit: // Y 轴上显示的分区
[{key:1, label:"Section A"},
{key:2, label:"Section B"},
{key:3, label:"Section C"},
{key:4, label:"Section D"}],
y_property:"section_id", // 数据映射到分区的属性
render:"bar" // 视图模式
});
注释
当使用 'Days' 模式时,时间刻度必须正好覆盖一天。如果配置的时间段更短或更长,时间线将无法正确渲染。
时间刻度配置示例
虽然 createTimelineView 方法包含许多参数,但实际配置非常简单。
以下是一个示例:时间刻度从 09:00 到 15:00,步长为 30 分钟,按天滚动。
{
x_unit:"minute",// 刻度单位为分钟
x_step:30, // 步长为 30 分钟,例如 09:00 - 09:30
x_size:12, // 09:00 到 15:00 之间有 12 个 30 分钟区间
// 15 - 9 = 6 小时 = 360 分钟 = 360/30 = 12
x_start:18, // 刻度从 09:00 开始,即距 00:00 有 9 小时
// 9 小时 = 540 分钟 = 540/30 = 18 个 'x_step'
x_length:48,// 滚动一天:1 天 = 24 小时 = 1440 分钟 = 1440/30 = 48 个 'x_step'
...
}
Timeline 视图配置
所有名称包含 (timeline)_some 的模板函数应在创建视图后定义,因为这些函数是由 timeline 构造器动态分配的,并会被 createTimelineView 调用覆盖。
设置 Timeline 视图的起始日期
例如,以下是设置 Timeline 视图起始日期的方法。
任何视图的起始日期由 scheduler.date[<viewName> +"_start"] 函数控制。要调整时间线刻度的第一天,请在调用 scheduler.createTimelineView() 之后重写 scheduler.date.timeline_start 函数:
// 配置周从星期一开始
scheduler.config.start_on_monday = true;
// 创建 timeline 视图
scheduler.createTimelineView({
name: "timeline",
render: "tree",
days: 7,
folder_dy: 20,
x_unit: "day",
x_date: "%D %j %F",
x_step: 1,
x_size: 7,
x_start: 0,
x_length: 7,
y_unit:[],
y_property: "section_id"
});
// 创建后重写起始日期函数
scheduler.date.timeline_start = scheduler.date.week_start;
// 初始化调度器
scheduler.init("timeline_tree", new Date(), "timeline");
Timeline 对象 API
有多种方法可与 Timeline 视图交互。
创建 timeline 视图
首先,在调度器中创建一个 timeline 实例:
scheduler.createTimelineView({
name:'timeline',
...
});
var timeline = scheduler.matrix.timeline;
创建后,可以使用以下方法。
获取 timeline 视图
要获取 timeline 视图对象,请使用 getView 方法。它接受视图名称作为参数。如果未传递参数,则返回当前视图。
var timeline = scheduler.getView();
timeline.x_size = 8;
scheduler.setCurrentView();
设置刻度范围
使用 setRange() 方法定义刻度范围。需要两个参数:
- startDate - (Date) 范围的开始日期
- endDate - (Date) 范围的结束日期
timeline.setRange(startDate, endDate);