「实战应用」如何用DHTMLX Gantt构建类似JIRA式的项目路线图(三)
DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求是最完善的甘特图图表库。在web项目中使用DHTMLX Gantt时开发人员经常需要满足与UI外观相关的各种需求。因此他们必须确定JavaScript甘特图库的自定义能力因此本文仅继续介绍DHTMLX Gantt的自定义用例。在这个系列的文章中您将学习如何使用DHTMLX Gantt组件构建类似jira的项目路线图。在上文中主要介绍了如何实现工作项的自定义图标本文将继续介绍如何实现工作项的自定义对话框窗口、自定义网格列等欢迎持续关注定制指南工作项的自定义对话框窗口在工作项的自定义图标中可以动态更改显示的数值。为此有必要单击所需的图标并在打开的对话框窗口中使用三个按钮进行必要的更改。接下来我们将向您解释如何实现此功能。您需要使用modalbox()方法来显示自定义对话框窗口需要指定一个类型为“number”的输入元素以便更方便地设置值。此窗口还包括保存和取消更改的按钮以及删除图标值和图标本身的按钮。将对话框窗口保存为一个变量以便以后能够访问它并从HTML元素中获取值而无需在屏幕上看到对话框窗口。let modalbox gantt.modalbox({ title: Work Item, text: divlabelValue: input typenumber min0 classitems_value //label/div, buttons: [ { label: Save, css: items_button, value: save }, { label: Cancel, css: items_button, value: cancel }, { label: Delete, css: items_button, value: delete } ],对话框窗口出现在屏幕上之后您应该设置任务属性的值。如果给定日期的任务没有值则将其设置为0。modalbox.querySelector(.items_value).value task.items[clickDate] || 0;在callback()方法中有必要指定在自定义图标的对话框窗口中的每个按钮被点击后应该发生什么save – 从HTML元素中获取值并为自定义图标日期添加/更新该值delete – 检查任务是否有自定义图标日期的值如果有删除该值cancel – 在我们的示例中没有为这个按钮指定逻辑但是仍然将它包含在代码中以便您更容易在这里实现逻辑。callback: function (result) { switch (result) { case save: const newValue modalbox.querySelector(.items_value).value; task.items[clickDate] newValue; gantt.updateTask(task.id); break; case cancel: break; case delete: if (task.items[clickDate]) { delete task.items[clickDate]; gantt.updateTask(task.id); } break; } }自定义网格列路线图的网格部分还包括一些应该从编程角度解释的专栏本文中我们讨论的是三列——物品、故事点和状态。我们从“Items” 一栏开始每个任务的工作项总数可以在相应的网格列中找到。由于在列配置中使用了模板函数因此可以显示这些值。应该提到的是“故事点”列中的值是有依赖关系的没有描述点的任务也应该有0个工作项。name: items, label: Items, align: center, width: 40, resize: true, template: function (task) { let total 0; if (task.story_points task.items) { for (item in task.items) { total task.items[item]; } } return total; }为了简化故事点的编辑您需要向相应的网格列添加一个内联编辑器。const storyPointsEditor { type: number, map_to: story_points, min: 0 }; ... { name: story_points, label: Story Points, align: center, width: 40, resize: true, editor: storyPointsEditor, template: function (task) { return task.story_points || 0; } },路线图网格中的“Status” 列显示任务的进度条可以通过单击所需的状态选项动态更改此参数状态数据存储在一个单独的数组中gantt.serverList(status, [ { key: 0, label: Pending }, { key: 1, label: Ready to Start }, { key: 2, label: In Progress }, { key: 3, label: Done }, { key: 4, label: On Review }, { key: 5, label: Accepted }, ]);lightbox配置有一个“select”类型的标准部分(即这种类型的部分在甘特图中可用该列表取自数组gantt.serverList( status )。{ name: status, height: 22, map_to: status, type: select, options: gantt.serverList(status) },要在网格中显示自定义状态值必须在列配置中使用模板选项。然后添加主HTML元素所有其他元素都应该放在这里文本状态显示在单元格的顶部。let statusName byId(gantt.serverList(status), task.status); let html div classstatus_columndiv classstatus_name${statusName}/divdiv classstatus_progress配置任务时需要指定状态值而不是状态名。要匹配状态号及其文本请应用自定义byId函数它有助于通过状态名的编号找到所需的状态名。function byId(list, id) { for (var i 0; i list.length; i) { if (list[i].key id) { return list[i].label || ; } } return Pending; }每个任务状态都有一个序号彩色方块的数量由这个序号决定。在编程上它以以下方式实现使用状态遍历数组中的所有元素每次添加一个方形HTML元素。向状态框添加CSS样式以便在状态数小于或与任务状态数相同时为其上色。const statuses gantt.serverList(status); for (var i 1; i statuses.length; i) { const item statuses[i]; let filled ; if (item.key task.status) { filled filled } const el div classbar ${filled}>gantt.attachEvent(onTaskClick, function (id, e) {在方形元素中需要从HTML元素中获取状态号并更改任务对象的状态。之后应该更新任务以呈现更改。最后您需要返回false以便在任务状态改变时不会触发onTaskClick事件。否则甘特图将从单击的行中选择任务而不再选择前一个任务。const statusBar e.target.closest(.status_progress .bar); if (statusBar) { const task gantt.getTask(id); task.status statusBar.dataset.status; gantt.updateTask(id); return false; } return true;更多教程内容请下期再见记得点赞关注收藏哦

相关新闻

【JAVA毕设源码分享】基于springboot高校科研管理系统-纵向项目管理的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot高校科研管理系统-纵向项目管理的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/10/18 13:34:58 阅读更多 →
Windows驱动清理终极指南:Driver Store Explorer完整使用教程

Windows驱动清理终极指南:Driver Store Explorer完整使用教程

Windows驱动清理终极指南:Driver Store Explorer完整使用教程 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 你是否发现Windows系统盘空间越来越少,即使清理了临…

2026/10/19 1:11:27 阅读更多 →
动态行为识别系统:身体指纹技术的原理与应用

动态行为识别系统:身体指纹技术的原理与应用

1. 项目背景与核心价值在生物识别技术快速发展的今天,传统指纹、虹膜等静态生物特征识别方式已经难以满足某些特定场景的安全需求。我们团队经过三年研发,成功构建了一套基于人体动态行为特征的"身体指纹"识别系统——镜像视界(Mir…

2026/10/18 19:10:09 阅读更多 →

最新新闻

STM32单片机 2引脚按键

STM32单片机 2引脚按键

按键:常见的输入设备,按下导通,松手断开按键抖动:由于按键内部使用的是机械式弹簧片来进行通断的,所以在按下和松手的瞬间会伴随有一连串的抖动为防止按键按一下,单片机却反应多次的现象,因此要…

2026/10/19 1:12:12 阅读更多 →
MiniOB 完整导读:不到 10 万行代码,把 B+ 树索引、事务和 SQL 执行链路一次讲透

MiniOB 完整导读:不到 10 万行代码,把 B+ 树索引、事务和 SQL 执行链路一次讲透

MiniOB 完整导读:不到 10 万行代码,把 B 树索引、事务和 SQL 执行链路一次讲透 【免费下载链接】miniob MiniOB is a compact database that assists developers in understanding the fundamental workings of a database. 项目地址: https://gitcode…

2026/10/19 1:12:12 阅读更多 →
STM32单片机 RCC与GPIO

STM32单片机 RCC与GPIO

一,外设 (Peripherals)外设是指与主处理器(CPU)连接的硬件模块,这些模块提供了扩展功能,使得单片机可以与外部设备进行交互。常见的外设包括:GPIO(通用输入/输出):用于控…

2026/10/19 1:12:12 阅读更多 →
Stable-Audio-Tools 入门指南:条件音频生成模型的训练、推理与 Gradio 界面跑通

Stable-Audio-Tools 入门指南:条件音频生成模型的训练、推理与 Gradio 界面跑通

Stable-Audio-Tools 入门指南:条件音频生成模型的训练、推理与 Gradio 界面跑通 【免费下载链接】stable-audio-tools Generative models for conditional audio generation 项目地址: https://gitcode.com/GitHub_Trending/st/stable-audio-tools Stable-Au…

2026/10/19 1:12:12 阅读更多 →
3步上手Nemotron-3-Diarization:generate与generate_stream说话人分离调用实战教程

3步上手Nemotron-3-Diarization:generate与generate_stream说话人分离调用实战教程

【免费下载链接】Nemotron-3-Diarization 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/Nemotron-3-Diarization 点击查看 免费下载 Nemotron-3-Diarization 是一款基于 MLX 框架的说话人分离(Speaker Diarization)模型&…

2026/10/19 1:12:12 阅读更多 →
2022 年 12 月青少年软编等考 C 语言七级真题解析

2022 年 12 月青少年软编等考 C 语言七级真题解析

目录 T1. 走迷宫 思路分析 T2. 重建二叉树 思路分析 T3. 快速堆猪 思路分析 T4. 表达式 表达式树 表达式求值 思路分析 T1. 走迷宫 题目链接:SOJ D1233 一个迷宫由 R R R 行 C C C 列格子组成,有的格子里有障碍物,不能走;有的格子是空地,可以走。给定一个迷宫,求从…

2026/10/19 1:11:12 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →