免费JS甘特图组件dhtmlxgantt

参考:https://docs.dhtmlx.com/gantt/desktop__install_with_bower.html

可使用NuGet、Bower、npm包管理器安装(应用在asp.net、nodejs等项目上)。

Nuget nuget install DHTMLX.Gantt npm npm install dhtmlx-gantt

或使用CDN、下载JS库引入(简单HTML应用)。

CDN <link href="http://cdn.dhtmlx.com/gantt/edge/dhtmlxgantt.css" type="text/css"> <script src="http://cdn.dhtmlx.com/gantt/edge/dhtmlxgantt.js"></script> js <script type="text/javascript" src="http://www.likecs.com/codebase/dhtmlxgantt.js"></script> <link href="http://www.likecs.com/codebase/dhtmlxgantt.css"> 初始化

https://docs.dhtmlx.com/gantt/desktop__initializing_gantt_chart.html

<!DOCTYPE html> <html> <head> <script src="http://www.likecs.com/codebase/dhtmlxgantt.js"></script> <link href="http://www.likecs.com/codebase/dhtmlxgantt.css"> </head> <body> <div></div> <script type="text/javascript"> gantt.init("gantt_here"); </script> </body> </html> 初始化步骤

引入js

引入css

定义容器div

js调用gantt.init初始化

属性、模板、配置

参考:https://docs.dhtmlx.com/gantt/desktop__common_configuration.html
自定义甘特图,可实现自定义展示(通过config和templates),自定义交互(通过method和event)以及自定义组件布局(layout)。
两个配置文件

gantt.config - 配置dates数据, scale刻度(年度、月度等), controls控件 等的选项

gantt.templates - 甘特图中使用的dates数据 and labels标签的格式化模板.

配置 API:https://docs.dhtmlx.com/gantt/api__refs__gantt_props.html 示例

在API中查找到该属性的各元素定义,参照使用。

gantt.scales = [ { unit: "year", step: 1, format: "%Y" } ]; gantt.init("gantt_here"); 注意事项

配置选项(gantt.xxx)要在初始化(gantt.init)前。

模板 API:https://docs.dhtmlx.com/gantt/api__refs__gantt_templates.html 示例

例如使用模板格式化任务名称,首先查找到其原型定义。

gantt.templates.task_text=function(start, end, task){ return task.text; };

然后参考原型方法,修改。

gantt.templates.task_text=function(start,end,task){ return "<b>名称:</b> "+task.text+",<b> 负责人:</b> "+task.users; }; gantt.init("gantt_here"); 注意事项:

模板的定义(gantt.templates.xxx)要在初始化(gantt.init)前。

自定义布局

https://docs.dhtmlx.com/gantt/desktop__layout_config.html

5.0及以上支持该配置。
默认布局为左侧是任务信息列表,右侧是甘特图时间线,自定义布局可在右侧、下方显示更多信息。
自定义布局可显示资源列表和资源的甘特图时间线,但仅Pro版本可用。

默认布局为:

gantt.config.layout = { css: "gantt_container", rows:[ { cols: [ { // 默认任务列表 view: "grid", scrollX:"scrollHor", scrollY:"scrollVer" }, { resizer: true, width: 1 }, { // 默认甘特图(时间线) view: "timeline", scrollX:"scrollHor", scrollY:"scrollVer" }, { view: "scrollbar", id:"scrollVer" } ]}, { view: "scrollbar", id:"scrollHor" } ] }

自定义布局,修改gantt.config.layout即可。

grid - 定义甘特图的表格,显示任务的表格ID为grid;

timeline - 定义时间线,显示任务时间线ID为"timeline";

scrollbar - 滚动条(表格和时间线).

事件处理

https://docs.dhtmlx.com/gantt/desktop__handling_events.html

用户拖拽时间线、添加任务等事件的处理。
如果仅用作甘特图的展示,则可忽略该部分,并且通过template、config配置屏蔽掉添加任务等功能。
但可以通过配置event,实现可视化排程,在甘特图时间线和任务grid中添加任务、添加任务链接、修改任务属性,可拖拽来更新任务时间等。
在甘特图上所做操作,需要通过event的相应方法,结合ajax提交到后台更改数据,否则页面刷新后数据丢失。

附加事件 gantt.attachEvent("onTaskClick", function(id, e) { alert("You've just clicked an item with移除">移除

附加事件后返回事件ID,使用该ID可移除

//附加事件,返回事件ID var eventId = gantt.attachEvent("onTaskClick", function(id, e) { alert("You've just clicked an item with添加并移除所有">添加并移除所有

定义事件ID数组,添加时记录ID,移除时循环处理。

// save handler ids when attaching events var events = []; events.push(gantt.attachEvent("onTaskClick", function(id, e) { alert("You've just clicked an item withonTaskDblClick", function(id, e) { alert("You've just double clicked an item with检查是否有事件响应">检查是否有事件响应 gantt.attachEvent("onTaskClick", function(id, e) { alert("You've just clicked a task withonTaskClick"); //returns 'true' 事件处理函数中取消事件响应

返回false,则中断事件响应链。

gantt.attachEvent("onBeforeTaskChanged", function(id, mode, old_task){ var task = gantt.getTask(id); if(mode == gantt.config.drag_mode.progress){ if(task.progress < old_task.progress){ dhtmlx.message(task.text + " progress can't be undone!"); return false; } } return true; }); 事件响应函数中访问甘特图对象 gantt.attachEvent("onTaskClick", function(id, e){ parentId = this.getTask(id).parent; });

this.getTask(id) 等方法参考方法API。
https://docs.dhtmlx.com/gantt/api__refs__gantt_methods.html

方法

https://docs.dhtmlx.com/gantt/api__refs__gantt_methods.html

其他

Ajax等。

ajax i18N多语言 gantt.i18n.setLocale({ labels: { gantt_save_btn: "New Label", gantt_cancel_btn: "New Label" } }); 属性配置常用API

Ajax等。

autofit 表格列自适应

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zysdfy.html