dhtmlxGantt提供了一个内置模块,用于方便地管理时间尺度缩放。如果您想自定义默认缩放行为,有一个灵活的 API 允许您实现动态更改时间刻度设置的能力。
1、内置缩放模块
嵌入式缩放模块在gantt.ext.zoom扩展中声明。要启用该模块,您需要调用gantt.ext.zoom.init(zoomConfig)并传递一个带有配置设置的zoomConfig对象,其中包含一组缩放级别。例如:
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);
2、自定义缩放设置
如果您不想使用缩放模块并且更喜欢手动控制缩放设置,您可以通过相应的配置选项来实现。
事实上,实现缩放功能意味着定义时间尺度配置(缩放级别)的多个预设,并为用户提供在它们之间切换的能力。
您需要以下设置来配置时间刻度:
- gantt.config.scales – 允许设置任意数量的时间刻度行。
- gantt.config.min_column_width , gantt.config.scale_height – 刻度列宽和时间刻度的总高度。
让我们考虑以下预设:
/* global gantt */function setScaleConfig(level) { switch (level) { case "day": gantt.config.scales = [ {unit: "day", step: 1, format: "%d %M"} ]; gantt.config.scale_height = 27; break; case "week": var weekScaleTemplate = function (date) { var dateToStr = gantt.date.date_to_str("%d %M"); var endDate = gantt.date.add(gantt.date.add(date, 1, "week"), -1, "day"); return dateToStr(date) + " - " + dateToStr(endDate); }; gantt.config.scales = [ {unit: "week", step: 1, format: weekScaleTemplate}, {unit: "day", step: 1, format: "%D"} ]; gantt.config.scale_height = 50; break; case "month": gantt.config.scales = [ {unit: "month", step: 1, format: "%F, %Y"}, {unit: "day", step: 1, format: "%j, %D"} ]; gantt.config.scale_height = 50; break; case "year": gantt.config.scales = [ {unit: "year", step: 1, format: "%Y"}, {unit: "month", step: 1, format: "%M"} ]; gantt.config.scale_height = 90; break; }}
所描述的功能可以通过从“日”到“年”时间尺度的四个预定义配置之一来配置甘特图对象。甘特图将需要完全重绘以显示配置更改:
setScaleConfig("year");gantt.init("gantt_here");
然后你可以为用户实现一个 UI 来切换缩放级别:
<label><input type="radio" name="scale" value="day" checked/>Day scale</label><label><input type="radio" name="scale" value="week"/>Week scale</label><label><input type="radio" name="scale" value="month"/>Month scale</label><label><input type="radio" name="scale" value="year"/>Year scale</label>var els = document.querySelectorAll("input[name='scale']");for (var i = 0; i < els.length; i++) { els[i].onclick = function(e){ var el = e.target; var value = el.value; setScaleConfig(value); gantt.render(); };}
dhtmlxGantt享有超十年声誉,支持跨浏览器和跨平台,性价比高,可满足项目管理控件应用的所有需求,是最完善的甘特图图表库。了解更多内容,欢迎在线咨询或者私信我获取正版试用版及 价。
甘特图控件交流群:764148812 欢迎进群交流讨论
年终狂欢季,全场产品,限时特惠,立即了解详情!
标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!