甘特图组件DHTMLX Gantt用例 - 如何自定义任务、月标记和网格新外观
DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求是最完善的甘特图图表库。本文将为大家揭示DHTMLX Gantt自定义的典型用例包括自定义任务、网格的新外观等来展示其功能的强大性用例 - 新建项目外观、当前月份标记和可折叠网格DHTMLX Gantt的默认视图显示写在条形内的项目和任务名称中项目栏通常具有矩形形状就像任务栏一样并且在颜色上与任务不同。然而这并不是在DHTMLX Gantt中显示项目和任务的唯一方法我们的甘特图库在定制方面非常灵活并允许多种方式可视化数据。在这里您可以看到项目用彩色且细的线条和标签很好地描述在顶部项目日期和持续时间标记在项目名称旁边。因此最终用户可以很快地掌握每个项目将花费多少时间。任务标签也位于任务栏的右侧当前月份在时间标度上清晰地突出显示以免在时间轴上丢失。此外还有一个切换按钮用于折叠网格部分以便为甘特图腾出更多空间。这样的自定义有助于工作流的透明性对于中小型项目尤其有用。它还使您的甘特图更加用户友好更容易管理在视图与扩展的网格部分和全屏图表之间切换。自定义指南让我们深入研究一下DHTMLX制作的甘特图。当前月份标记我们从甘特图时间轴中使用的时间尺度和垂直标记开始scales的配置通过scales属性指定gantt.config.scales [ { unit: quarter, step: 1, format: function (date) { const quarter (date.getMonth() % 3) 1; const year date.getFullYear(); return bQ${quarter}/b ${year}; } }, { unit: month, step: 1, format: function (date) { const monthName gantt.date.date_to_str(%F)(date) const nextDate gantt.date.add(date, 1, month); if (date today today nextDate) { return div classcurrent_month${monthName}/div; } else { return monthName; } } }, ]在scales配置的数组中我们指定了两种内置的scale类型“quarter”和“month”。在这两种比例类型的单元格中可以显示任何值或HTML元素但它们不会改变单元格的宽度。例如较低刻度中的一个单元格包含一个自定义元素该元素带有一个特定的类用于用CSS样式为该单元格着色。该元素突出显示当前月份在today参数中指定const today new Date(2023, 05, 18) const todayMarker gantt.addMarker({ start_date: today, css: today, });addMarker()方法中还使用today参数来添加一个突出显示当前月份的垂直标记。在标记配置中我们指定用于设置标记日期的Date对象和用于添加标记颜色的CSS类。由于没有在addMarker()方法中应用text参数因此标记将显示为一条简单的线。任务行为有必要对与甘特图时间轴上的任务交互多说几句最终用户可以沿着时间轴将给定的任务移动到任何特定的点它不会捕捉到任何单元格的开始或结束。为了实现这一点我们在甘特图中将round_dnd_dates参数的值更改为false。配置对象gantt.config.round_dnd_dates false;根据这个演示项目的需求我们还添加了移动项目任务的功能并禁用了任务之间的依赖关系(链接)和任务进度的显示gantt.config.drag_project true; gantt.config.drag_progress false; gantt.config.drag_links false;网格在甘特图的网格部分有两列。第一列包含任务的名称第二列提供任务的时间框架。使用模板函数您可以在网格列的单元格中添加任何文本或HTML元素gantt.config.columns [ { name: text, label: , width: 300, tree: true }, { name: dates, label: getToggleButton(), align: center, template: function (task) { if (task.type project) { return } return taskDatesFormat(task) } }, ];现在我们要关注taskDatesFormat函数它从任务对象返回所需的字符串function taskDatesFormat(task) { let startMonth gantt.date.date_to_str(%M); let endMonth startMonth; let day gantt.date.date_to_str(%j); if (task.start_date.getMonth() task.end_date.getMonth()) { endMonth gantt.date.date_to_str(); } const start_date ${startMonth(task.start_date)} ${day(task.start_date)} - ; const end_date ${endMonth(task.end_date)} ${day(task.end_date)}; return start_date end_date; }这个函数的工作原理如下它将任务开始日期转换为字符串从而只显示月份的名称。如果一个任务在同一个月开始和结束那么这个月的名称将只在开始日期之前显示。如果开始日期和结束日期属于不同的月份则开始月份显示在开始日期之前结束月份显示在结束日期之前。日期跟在月份的名称后面。有一个特殊的切换按钮允许折叠和展开网格部分。为了添加这个按钮我们在label参数中指定了getToggleButton()函数。根据网格的当前状态此函数返回不同的值。当按钮被点击时我们改变grid_width配置中的返回值和宽度function toggleGrid() { if (gridToggleText lt) { gantt.config.grid_width 80; gridToggleText gt } else { gantt.config.grid_width initialGridWidth; gridToggleText lt } gantt.config.columns[1].label getToggleButton(); gantt.render(); }或者可以使用调整大小器更改网格大小。min_grid_column_width参数设置每个列的最小宽度因此不能使网格小于指定的大小。因为我们的甘特图有两列min_grid_column_width参数的值是30px所以最小的网格宽度是60px。gantt.config.min_grid_column_width 30;网格区域中的彩色圆圈在grid_folder模板中指定gantt.templates.grid_folder function (task) { return div stylecolor:${task.color} classproject_iconnbsp;•nbsp;/div; };返回的自定义元素包含一个特殊符号“•”圆圈的颜色和大小由CSS样式指定。对于具有子元素的任务grid_folder模板显示而对于其他任务grid_file模板返回空字符串( )gantt.templates.grid_file function (item) { return ; };task_row_class模板在带有子元素的任务下面隐藏了一个边框gantt.templates.task_row_class function (start, end, task) { if (task.type project) { return project_row; } };任务外观最后让我们介绍一下如何在甘特图中自定义项目和任务由于任务栏中不应该有文本task_text模板返回一个空字符串:gantt.templates.task_text function (start, end, task) { return ; };在rightside_text模板的帮助下文本标签显示在右侧gantt.templates.rightside_text function (start, end, task) { if (task.type ! project) { return task.text; } };在我们的演示中rightside_text模板不返回任何项目任务。相反我们使用addTaskLayer()方法它允许在甘特图时间轴中显示任何文本或HTML元素。对于项目任务我们在自定义taskDatesFormat函数的帮助下以甘特图网格中使用的相同格式返回任务名称、持续时间和日期这些值用一个特殊的点符号“•”分开自定义元素的位置是使用getTaskPosition()方法计算的gantt.addTaskLayer(function (task) { if (task.type project) { const sizes gantt.getTaskPosition(task, task.start_date, task.end_date); const el document.createElement(div); const dot span classdot•/span el.innerHTML task.text dot taskDatesFormat(task) dot task.duration days; el.style.left sizes.left 10 px; el.style.top sizes.top px; el.style.zIndex 1; el.style.marginTop 7px; el.style.position absolute; el.style.lineHeight 16px; return el; } });就是这样通过这个分步指南您可以实现相同的结果并创建一个自定义甘特图就像我们的用例一样。

相关新闻

AI模型服务上线前必做的4类兼容性扫描:内核级、编译器级、算子级、序列化级——来自金融级AI中台的硬核实践

AI模型服务上线前必做的4类兼容性扫描:内核级、编译器级、算子级、序列化级——来自金融级AI中台的硬核实践

更多请点击: https://intelliparadigm.com 第一章:AI 版本兼容检测 AI 模型与推理框架的版本匹配是生产环境中稳定运行的关键前提。不同版本的 PyTorch、TensorFlow、ONNX Runtime 或 Hugging Face Transformers 之间可能存在算子行为差异、API 变更或精…

2026/8/1 19:29:36 阅读更多 →
分享!10个使用Angular CLI的实战应用技巧

分享!10个使用Angular CLI的实战应用技巧

如果您正在使用Angular,就知道Angular CLI有多有用。它简化了创建和管理Angular项目的过程,凭借其直观的命令行界面,它可以轻松处理复杂的任务,如生成组件、服务、管道、指令等。但是您知道如何有效地使用Angular CLI吗&#xff1…

2026/8/1 19:29:36 阅读更多 →
2026年解码器品牌风评揭秘:主流玩家口碑真相,究竟谁最值得信赖?

2026年解码器品牌风评揭秘:主流玩家口碑真相,究竟谁最值得信赖?

在智慧城市、安防监控、指挥调度等领域高速发展的今天,视频解码与显控设备已成为数字世界的“视觉中枢”。走进2026年,市场早已告别了单纯的硬件堆砌。用户的核心诉求是什么?是在获得与一线品牌比肩的性能时,还能守住项目的预算红…

2026/8/1 19:29:36 阅读更多 →

最新新闻

企业微信协议怎么接入?从环境准备到第一条消息的联调步骤

企业微信协议怎么接入?从环境准备到第一条消息的联调步骤

适合准备做企微客服、SCRM、聚合会话的后端同学。按可执行清单写,接口名以你方实际文档为准。写在前面对接协议能力时,最容易犯的错是:对着接口列表东点西点,登录态、回调、业务调用顺序乱了,排障成本很高。更稳的做法…

2026/8/1 20:07:08 阅读更多 →
免费接口拉数据遇到股票停牌?教你用 Python + QuantDash 彻底解决账户金额对不上难题

免费接口拉数据遇到股票停牌?教你用 Python + QuantDash 彻底解决账户金额对不上难题

📌 摘要 / 快速解答 (Direct Answer) 免费接口(如 AkShare/Tushare 免费层)在标的停牌时通常会直接“丢弃”当日 K 线,导致组合计算每日总市值时,停牌股票的持仓金额算不进去或变成 NaN,出现“资产凭空蒸发…

2026/8/1 20:07:08 阅读更多 →
CISA六步隔离蓝图实战指南:关键基础设施网络攻击应急隔离落地教程

CISA六步隔离蓝图实战指南:关键基础设施网络攻击应急隔离落地教程

2026年7月底,美国CISA联合五眼联盟、FBI等多家权威机构正式发布《CI Fortify – Advice for isolating vital systems》防护指南。这套行业全新的六步隔离蓝图,彻底推翻了传统网络安全应急的处置逻辑。过往企业和基础设施运维团队遭遇网络攻击时&#xf…

2026/8/1 20:07:08 阅读更多 →
RHCE9.0 vs RHCE10.0 深度对比:现在考哪个更划算?

RHCE9.0 vs RHCE10.0 深度对比:现在考哪个更划算?

最近后台被问爆同一个问题:红帽 RHCE 出 10.0 新版了,旧版 9.0 还能考,预算有限、想跳槽、零基础转行,到底选哪个? 不少运维同行纠结到失眠:怕考 9.0 刚拿证就淘汰,又怕 10.0 难度飙升、备考周期…

2026/8/1 20:07:08 阅读更多 →
可灵运镜风格选择全链路解析,从脚本意图→镜头语言→参数映射→成片质检(含独家校验checklist)

可灵运镜风格选择全链路解析,从脚本意图→镜头语言→参数映射→成片质检(含独家校验checklist)

更多请点击: https://kaifayun.com 第一章:可灵运镜风格选择全链路解析导论 可灵运镜(Keling Mirror)作为新一代AI视觉生成框架,其风格选择机制并非单一参数控制,而是贯穿数据预处理、提示工程、潜空间调度…

2026/8/1 20:07:08 阅读更多 →
DDSM315工业以太网协议:高精度同步与确定性实时通信实战解析

DDSM315工业以太网协议:高精度同步与确定性实时通信实战解析

1. 项目概述:DDSM315,一个被低估的工业通信协议如果你在工业自动化、机器人或者高端数控机床领域摸爬滚打过几年,大概率会听说过“现场总线”这个词。从早期的Modbus、Profibus,到后来风头正劲的EtherCAT、PROFINET,每…

2026/8/1 20:06:07 阅读更多 →

日新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/8/1 13:02:46 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/8/1 5:19:34 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/8/1 10:33:33 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →