「实战应用」如何用DHTMLX构建自定义JavaScript甘特图(三)
DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求是最完善的甘特图图表库。当您声称您的产品具有高级定制功能时客户一定会对产品进行严格测试这个规则当然适用于DHTMLX Gantt官方技术团队收到了很多关于如何在JavaScript甘特图组件中实现某些外观定制的请求结合实际的案例我们将在本文中为您展示如何在实践中实现这些定制。在上文中我们介绍了如何为任务分配资源以及任务栏中的任务名称和资源等本文将继续介绍如何高亮显示项目任务和周末等。高亮显示项目的任务和周末当通过DHTMLX构建的JavaScript甘特图管理项目时能够突出显示属于不同项目和周末的任务组是很有用的。让我们从突出显示项目的任务开始。要启用此特性需要应用根据任务坐标绘制的附加层但在此之前请检查任务类型是否为project。gantt.addTaskLayer(function (task) { if (task.type project) {使用getTaskPosition()方法获取项目坐标最上面的坐标是已知的——尺寸对象最上面的参数。const sizes gantt.getTaskPosition(task, task.start_date, task.end_date);将最左边的任务坐标添加到左边数组将最右边的坐标添加到右边数组然后遍历项目的每个子任务并添加这些坐标。另外根据子任务的坐标增加sizes对象中的height参数。const left [sizes.left]; const right [sizes.left sizes.width]; gantt.eachTask(function (child) { const childSizes gantt.getTaskPosition(child, child.start_date, child.end_date); left.push(childSizes.left) right.push(childSizes.left childSizes.width) if (sizes.height childSizes.top childSizes.height) sizes.height childSizes.top childSizes.height - sizes.top }, task.id);在遍历所有任务之后必须对左侧数组进行排序以获得最小值然后将其添加到sizes对象的左侧参数中。sizes.left left.sort((a, b) a - b)[0]接下来对正确的数组进行排序但不要将最右边的值添加到sizes对象的右边参数中。相反从结果值中减去最左边的坐标以获得矩形的宽度。const mostRight right.sort((a, b) a - b).reverse()[0] sizes.width mostRight - sizes.left然后您需要创建一个HTML元素并从sizes对象中获取其坐标。在样式中从项目的颜色参数中指定颜色如果不指定颜色则默认设置为灰色。在突出显示周末时应该应用timeline_cell_class模板。在这里您应该检查数组中是否有包含周末的日期如果有则返回一个自定义类名。const weekends [ new Date(2025, 11, 24), new Date(2025, 11, 25), new Date(2025, 11, 31), new Date(2026, 0, 1), ] gantt.templates.timeline_cell_class function (task, date) { if (weekends.indexOf(date) -1) { return weekend; } };任务顶部的自定义图标最后我们想与大家分享如何在任务顶部显示自定义图标。一个简单的方法是使用addTaskLayer()方法使用此方法您可以检查任务是否具有icon参数该参数将指示任务是否具有自定义图标它是我们添加到演示项目中的自定义任务属性。gantt.addTaskLayer(function (task) { if (task.type project) {之后让我们使用getTaskPosition()方法获取任务的坐标。然后创建一个HTML元素根据icon参数从带有图标的数组中指定图像并设置样式。const sizes gantt.getTaskPosition(task, task.end_date, task.end_date); const img document.createElement(img); img.src icons[task.icon - 1] img.style left: ${sizes.left - 10}px; width: 30px; top: ${sizes.top}px; height: 30px; margin-top: 2px; position: absolute; border-radius: 2px; color: white; opacity: 0.9; z-index:1; pointer-events: none; return img;就是这样按照上面的说明您可以实现我们示例中的关键自定义甘特图特性并将它们添加到您的项目中。

相关新闻

Redline源码解读:从CGPoint扩展到AlignmentGuide可视化

Redline源码解读:从CGPoint扩展到AlignmentGuide可视化

Redline源码解读:从CGPoint扩展到AlignmentGuide可视化 【免费下载链接】Redline Redlines for SwiftUI 项目地址: https://gitcode.com/gh_mirrors/redli/Redline 在SwiftUI开发中,布局调试常常让开发者头疼。Redline作为一款强大的SwiftUI布局调…

2026/11/1 21:32:51 阅读更多 →
如何快速搭建Calculator项目:基于Java 11的完整安装教程 [特殊字符]

如何快速搭建Calculator项目:基于Java 11的完整安装教程 [特殊字符]

如何快速搭建Calculator项目:基于Java 11的完整安装教程 🚀 【免费下载链接】Calculator Calculator app created with Java Swing, It is simple with an easy code to help novices learn how to operate a calculator. 项目地址: https://gitcode.c…

2026/11/3 16:40:36 阅读更多 →
108、RAW域黑电平校正与坏点校正:动态阈值算法、产线标定与自适应修复策略

108、RAW域黑电平校正与坏点校正:动态阈值算法、产线标定与自适应修复策略

108、RAW域黑电平校正与坏点校正:动态阈值算法、产线标定与自适应修复策略 去年在调试某款旗舰手机主摄时,遇到一个诡异的暗光偏色问题——夜景模式下,画面左下角总是泛着一层淡淡的紫红色,像被谁偷偷泼了墨水。ISP团队查了三天,AWB、CCM、LSC都翻了个底朝天,最后发现是…

2026/11/1 22:04:48 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/4 1:35:24 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/3 10:57:27 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/3 11:35:49 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/4 6:23:50 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/3 10:47:27 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/3 10:57:33 阅读更多 →

日新闻

周新闻

月新闻