「实战应用」如何用DHTMLX构建自定义JavaScript甘特图(三)
📅 2026/7/23 6:11:35
👁️ 次浏览
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 Redlines for SwiftUI 项目地址: https://gitcode.com/gh_mirrors/redli/Redline
在SwiftUI开发中,布局调试常常让开发者头疼。Redline作为一款强大的SwiftUI布局调…
📅 2026/7/21 16:13:07
说实话,刚入行那会儿我对Geo IP定位这东西真是一窍不通,以为就是查查IP地址看看人在哪,简单得很。直到去年接了个外包项目,甲方非要精准到街道级别,我信了某些“黑科技”服务商的鬼话,花了大几千买了一套号称99%准确率的库。结果呢?客户那边一测,好家伙,定位到了隔壁市…
📅 2026/7/22 22:16:48
sig命令重试功能:解决流式数据错失搜索的最佳实践 【免费下载链接】sig Interactive grep (for streaming) 项目地址: https://gitcode.com/gh_mirrors/si/sig
在日常的命令行操作中,我们经常会遇到流式数据搜索时错过关键信息的情况。sig作为一款…
📅 2026/7/22 22:06:21
保姆级教程:在PVE 8.0上为N5105软路由安装OpenWRT 23.05.2,含磁盘扩容与IPv6配置
对于追求高性能网络定制的玩家来说,将OpenWRT部署在Proxmox VE虚拟化环境中已成为主流选择。本教程将针对Intel N5105等低功耗x86平台,详细演示如何在PVE 8.0上完成OpenWRT 23.05.2的完整部…
📅 2026/7/23 6:11:20
1. 项目概述:一份“硬核”的C面试备战指南最近在帮团队筛选简历和面试新人,也和一些准备跳槽的朋友交流,发现一个挺普遍的现象:大家手里或多或少都攒了一些“八股文”资料,但要么是问题零散不成体系,要么是…
📅 2026/7/23 6:11:20
1. 项目概述:为什么我们需要重新审视 sscanf 和 sprintf?在C和C的世界里,字符串处理是每个开发者都绕不开的基础课题。从简单的日志格式化,到复杂的数据协议解析,字符串的构建与拆解无处不在。提到字符串处理ÿ…
📅 2026/7/23 6:11:20
这年头,还有货代不敢收的货?消息一出,跨境圈一片哗然。这不是在搞抽象,原因在于一条新规落地,不少货被无情拦在美国门外。----------------------------------------------------------------------------------------…
📅 2026/7/23 6:11:20
1. 项目概述:从Bencode到现代C的实用解码器如果你接触过BitTorrent相关的文件,比如.torrent文件,或者用过一些早期的P2P协议,那你大概率已经和Bencode打过交道了。它是一种简洁、高效的数据编码格式,专门为BitTorrent协…
📅 2026/7/23 6:11:20
换季皮肤干到起皮?化妆卡粉卡到怀疑人生?别急,这篇就是来救你的。看完你就知道怎么让底妆像焊在脸上一样服帖。说实话,以前我也觉得隔离和粉底是分开的两回事。直到我遇见了Geo Skincare隔离粉底液,我才发现,原来“二合一”才是懒人福音。特别是对于咱们这种既想遮瑕,又…
📅 2026/7/23 6:10:40
更多请点击:
https://intelliparadigm.com
第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…
📅 2026/7/23 0:00:26
最近好多同行在群里问 geo s1230 到底值不值得买。说实话,这机器在二手市场挺火。但水很深,新手很容易踩雷。我干了十年设备维护,见过太多冤大头。今天不扯虚的,直接上干货。先说价格,心里得有底。目前成色不错的二手货,大概在一万二到一万五之间。如果低于八千,别犹豫,…
📅 2026/7/23 0:01:16
更多请点击:
https://codechina.net
第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现࿱…
📅 2026/7/23 0:01:26
1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…
📅 2026/7/23 1:06:38
1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…
📅 2026/7/23 1:06:38
更多请点击:
https://intelliparadigm.com
第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…
📅 2026/7/23 1:06:38
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/22 7:05:39
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/22 17:06:14
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/23 5:06:50