有关 Zoom 扩展的更多详细信息,请参阅 缩放功能 文章。本文档主要介绍 zoom 对象的 API 参考:
Zoom 扩展通过一组缩放级别设置进行操作,支持在这些级别间快速切换。
ZoomLevel 是一个表示缩放设置的对象,包含以下属性:
以下是两个配置 zoom 扩展的示例:
var zoomConfig = {
levels: [
{
name:"day",
scale_height: 27,
min_column_width:80,
scales:[
{unit: "day", step: 1, format: "%d %M"}
]
},
{
name:"week",
scale_height: 50,
min_column_width:50,
scales:[
{unit: "week", step: 1, format: function (date) {
var dateToStr = gantt.date.date_to_str("%d %M");
var endDate = gantt.date.add(date, 6, "day");
var weekNum = gantt.date.date_to_str("%W")(date);
return "#" + weekNum + ", " + dateToStr(date) + " - " + dateToStr(endDate);
}},
{unit: "day", step: 1, format: "%j %D"}
]
},
{
name:"month",
scale_height: 50,
min_column_width:120,
scales:[
{unit: "month", format: "%F, %Y"},
{unit: "week", format: "Week #%W"}
]
},
{
name:"quarter",
height: 50,
min_column_width:90,
scales:[
{unit: "month", step: 1, format: "%M"},
{
unit: "quarter", step: 1, format: function (date) {
var dateToStr = gantt.date.date_to_str("%M");
var endDate = gantt.date.add(gantt.date.add(date, 3, "month"), -1, "day");
return dateToStr(date) + " - " + dateToStr(endDate);
}
}
]},
{
name:"year",
scale_height: 50,
min_column_width: 30,
scales:[
{unit: "year", step: 1, format: "%Y"}
]}
]
};
gantt.ext.zoom.init(zoomConfig);
// 或者,也可以仅将 levels 定义为刻度数组
var hourToStr = gantt.date.date_to_str("%H:%i");
var hourRangeFormat = function(step){
return function(date){
var intervalEnd = new Date(gantt.date.add(date, step, "hour") - 1)
return hourToStr(date) + " - " + hourToStr(intervalEnd);
};
};
var zoomConfig = {
levels: [
[
{ unit: "month", format: "%M %Y", step: 1},
],
[
{ unit: "month", format: "%M %Y", step: 1},
{ unit: "day", format: "%d %M", step: 1}
],
[
{ unit: "day", format: "%d %M", step: 1},
{ unit: "hour", format: hourRangeFormat(12), step: 12}
],
[
{unit: "day", format: "%d %M",step: 1},
{unit: "hour",format: hourRangeFormat(6),step: 6}
],
[
{ unit: "day", format: "%d %M", step: 1 },
{ unit: "hour", format: "%H:%i", step: 1}
]
]
}
gantt.ext.zoom.init(zoomConfig);
gantt.ext.zoom.getCurrentLevel();
gantt.ext.zoom.setLevel("year");
// 或者
gantt.ext.zoom.setLevel(5);
gantt.ext.zoom.getLevels();
该方法返回传递给 init() 方法的缩放级别数组(ZoomLevels[])。
gantt.ext.zoom.zoomIn();
或者,也可以这样实现:
gantt.ext.zoom.setLevel(zoom.getCurrentLevel() - 1)
gantt.ext.zoom.zoomOut();
或者,也可以这样实现:
gantt.ext.zoom.setLevel(zoom.getCurrentLevel() + 1)
attachEvent (name, handler): string - 添加事件处理函数
detachEvent (id): void - 移除之前添加的事件处理函数
callEvent (name, params): boolean - 触发内部事件
checkEvent (name): boolean - 检查是否有为指定事件注册的处理函数
如果有至少一个事件处理函数,返回 true。
gantt.ext.zoom.attachEvent("onAfterZoom", function(level, config){
document.querySelector(".gantt_radio[value='" +config.name+ "']").checked = true;
});
Back to top